From fc0b67fc4b9855cfba33b44b6a01a6c4fad3dc71 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Wed, 3 Apr 2024 13:29:51 +0300 Subject: [PATCH 001/114] Migrate to prestashop-flashlight image --- .sandbox/entrypoint.sh | 31 ---------------------- CONTRIBUTING.md | 21 +++++++-------- Dockerfile | 7 ----- docker-compose.yaml | 58 ++++++++++++++++++++++++++---------------- 4 files changed, 45 insertions(+), 72 deletions(-) delete mode 100755 .sandbox/entrypoint.sh delete mode 100644 Dockerfile diff --git a/.sandbox/entrypoint.sh b/.sandbox/entrypoint.sh deleted file mode 100755 index 74d9b6b..0000000 --- a/.sandbox/entrypoint.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/sh - -# Wait for MySQL to start. -mysql_ready() { - mysqladmin ping --host=$DB_SERVER --user=$DB_USER --password=$DB_PASSWD > /dev/null 2>&1 -} -while !(mysql_ready); do - sleep 1 - echo "Waiting for MySQL to finish start up..." -done - -# Install PrestaShop if not already. -if [ -d ./install ]; then - echo "Installing PrestaShop. This can take a while..." - - su www-data -s /bin/bash -c "cd install; php index_cli.php \ - --timezone='Europe/Tallinn' \ - --domain='$PS_DOMAIN' \ - --db_server=$DB_SERVER \ - --db_user=$DB_USER \ - --db_password=$DB_PASSWD \ - --email='admin@smaily.sandbox' \ - --password='smailydev1'\ - --newsletter=0" - - # Run post installation steps required by PrestaShop. - rm -fR /var/www/html/install - mv /var/www/html/admin /var/www/html/admin1 -fi - -docker-php-entrypoint "$@" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 46b8df8..269cc8d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,7 +4,7 @@ First off, thanks for taking the time to contribute! # Table of contents - [Getting started](#getting-started) -- [Internals](#internals)) +- [Internals](#internals) - [Structure of the repository](#structure-of-the-repository) - [Deveopment](#development) - [Starting the environement](#starting-the-environment) @@ -26,13 +26,11 @@ Next, change your working directory to the local repository: And run the environment: - $ docker-compose up + $ docker compose up -When running the enviroment for the first time, PrestaShop installation will automatically run, and it can take a while. +You can access PrestaShop store from `http://localhost:8080` and administration interface from `http://localhost:8080/admin-dev` URL. -Once installation has finished and web server is ready to accept requests, you can access PrestaShop store from `http://localhost:8080` and administration interface from `http://localhost:8080/admin1` URL. - -> Administrator user is `admin@smaily.sandbox` and password `smailydev1`. +> Administrator user is `admin@prestashop.com` and password `prestashop`. # Internals @@ -42,22 +40,21 @@ Once installation has finished and web server is ready to accept requests, you c The repository is split into multiple parts: - `.github` - GitHub issue and pull request templates, and release workflow; -- `.sandbox` - files needed for running the development environment; - `assets` - images for the user guide; - `src` - module files; -Source files must follow standard PrestaShop module structure. Learn more about it from the [Modules Folder structure](https://devdocs.prestashop.com/1.7/modules/creation/module-file-structure/) chapter in the official documentation. +Source files must follow standard PrestaShop module structure. Learn more about it from the [Modules Folder structure](https://devdocs.prestashop-project.org/8/modules/creation/module-file-structure/) chapter in the official documentation. # Development -All written code must follow PrestaShop's [coding standards](https://devdocs.prestashop.com/1.7/development/coding-standards/) and [naming conventions](https://devdocs.prestashop.com/1.7/development/naming-conventions/). +All written code must follow PrestaShop's [coding standards](https://devdocs.prestashop-project.org/8/development/coding-standards/) and [naming conventions](https://devdocs.prestashop-project.org/8/development/naming-conventions/). ## Starting the environment You can run the environment by executing: - $ docker-compose up + $ docker compose up -d > **Note!** Make sure you do not have any other process(es) listening on ports 8080 and 8888. @@ -65,10 +62,10 @@ You can run the environment by executing: Environment can be stopped by executing: - $ docker-compose down + $ docker compose down ## Resetting the environment If you need to reset the installation, just simply delete environment's Docker volumes. Easiest way to achieve this is by running: - $ docker-compose down -v + $ docker compose down -v diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index fd8f661..0000000 --- a/Dockerfile +++ /dev/null @@ -1,7 +0,0 @@ -FROM prestashop/prestashop:1.7-7.2-apache - -WORKDIR /var/www/html - -ADD .sandbox/entrypoint.sh /entrypoint.sh -ENTRYPOINT ["/entrypoint.sh"] -CMD ["apache2-foreground"] diff --git a/docker-compose.yaml b/docker-compose.yaml index db69032..ea66963 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -3,49 +3,63 @@ version: '3.7' services: prestashop: container_name: prestashop - image: sendsmaily/prestashop - build: - context: ./ - ports: - - 8080:80 + image: prestashop/prestashop-flashlight:latest + depends_on: + mysql: + condition: service_healthy environment: - - PS_DEV_MODE=1 - PS_DOMAIN=localhost:8080 - - DB_SERVER=db - - DB_USER=root - - DB_PASSWD=root - - DB_NAME=prestashop + - DEBUG_MODE=true + ports: + - 8080:80 volumes: - prestashop-data:/var/www/html - ./src:/var/www/html/modules/smailyforprestashop - depends_on: - - db - db: + mysql: container_name: prestashop_db image: mysql:5.7 + healthcheck: + test: + [ + "CMD", + "mysqladmin", + "ping", + "--host=localhost", + "--user=root", + "--password=prestashop", + ] + interval: 10s + timeout: 10s + retries: 5 environment: - - MYSQL_ROOT_PASSWORD=root + - MYSQL_HOST=mysql + - MYSQL_USER=prestashop + - MYSQL_PASSWORD=prestashop + - MYSQL_ROOT_PASSWORD=prestashop + - MYSQL_PORT=3306 - MYSQL_DATABASE=prestashop - volumes: - - prestashop-db-data:/var/lib/mysql ulimits: nproc: 65535 nofile: soft: 26677 hard: 46677 + volumes: + - prestashop-db-data:/var/lib/mysql phpmyadmin: container_name: phpmyadmin image: phpmyadmin/phpmyadmin + depends_on: + - mysql + environment: + - PMA_HOST=mysql + - PMA_PORT=3306 + - PMA_USER=prestashop + - PMA_PASSWORD=prestashop + - MYSQL_ROOT_PASSWORD=prestashop ports: - 8888:80 - environment: - - PMA_HOST=db - - PMA_USER=root - - PMA_PASSWORD=root - depends_on: - - db volumes: prestashop-data: From 0fbe90e6f984893eae0ba5b46598f6b5b148a2be Mon Sep 17 00:00:00 2001 From: Kaarel Date: Wed, 3 Apr 2024 18:12:04 +0300 Subject: [PATCH 002/114] Add better support for remote container workflow --- .vscode/extension.json | 6 + .vscode/settings.json | 6 + docker-compose.yaml | 1 + src/.gitignore | 2 + src/.php-cs-fixer.dist.php | 9 + src/composer.json | 10 + src/composer.lock | 2105 ++++++++++++++++++++++++++++++++++++ src/phpstan.neon | 10 + 8 files changed, 2149 insertions(+) create mode 100644 .vscode/extension.json create mode 100644 .vscode/settings.json create mode 100644 src/.gitignore create mode 100644 src/.php-cs-fixer.dist.php create mode 100644 src/composer.json create mode 100644 src/composer.lock create mode 100644 src/phpstan.neon diff --git a/.vscode/extension.json b/.vscode/extension.json new file mode 100644 index 0000000..4065e8d --- /dev/null +++ b/.vscode/extension.json @@ -0,0 +1,6 @@ +{ + "recommendations": [ + "junstyle.php-cs-fixer", + "devsense.phptools-vscode" + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..92a750d --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,6 @@ +{ + "[php]": { + "editor.defaultFormatter": "junstyle.php-cs-fixer" + }, + "editor.formatOnSave": true +} diff --git a/docker-compose.yaml b/docker-compose.yaml index ea66963..37262ef 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -14,6 +14,7 @@ services: - 8080:80 volumes: - prestashop-data:/var/www/html + - .vscode:/var/www/html/.vscode - ./src:/var/www/html/modules/smailyforprestashop mysql: diff --git a/src/.gitignore b/src/.gitignore new file mode 100644 index 0000000..cb0f60e --- /dev/null +++ b/src/.gitignore @@ -0,0 +1,2 @@ +vendor +*.cache diff --git a/src/.php-cs-fixer.dist.php b/src/.php-cs-fixer.dist.php new file mode 100644 index 0000000..5b524f8 --- /dev/null +++ b/src/.php-cs-fixer.dist.php @@ -0,0 +1,9 @@ +setUsingCache(true)->getFinder(); +$finder->in(__DIR__)->exclude('vendor'); + +return $config; diff --git a/src/composer.json b/src/composer.json new file mode 100644 index 0000000..f68a5fd --- /dev/null +++ b/src/composer.json @@ -0,0 +1,10 @@ +{ + "require-dev": { + "prestashop/php-dev-tools": "^4.3" + }, + "scripts": { + "lint": "php-cs-fixer fix --dry-run", + "fix": "php-cs-fixer fix", + "phpstan": "_PS_ROOT_DIR_=/var/www/html phpstan analyse ." + } +} diff --git a/src/composer.lock b/src/composer.lock new file mode 100644 index 0000000..698b1a6 --- /dev/null +++ b/src/composer.lock @@ -0,0 +1,2105 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "adbc9bc4f87434ed23326db6fc9c80ae", + "packages": [], + "packages-dev": [ + { + "name": "composer/pcre", + "version": "3.1.3", + "source": { + "type": "git", + "url": "https://github.com/composer/pcre.git", + "reference": "5b16e25a5355f1f3afdfc2f954a0a80aec4826a8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/pcre/zipball/5b16e25a5355f1f3afdfc2f954a0a80aec4826a8", + "reference": "5b16e25a5355f1f3afdfc2f954a0a80aec4826a8", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.3", + "phpstan/phpstan-strict-rules": "^1.1", + "symfony/phpunit-bridge": "^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Pcre\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "PCRE wrapping library that offers type-safe preg_* replacements.", + "keywords": [ + "PCRE", + "preg", + "regex", + "regular expression" + ], + "support": { + "issues": "https://github.com/composer/pcre/issues", + "source": "https://github.com/composer/pcre/tree/3.1.3" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2024-03-19T10:26:25+00:00" + }, + { + "name": "composer/semver", + "version": "3.4.0", + "source": { + "type": "git", + "url": "https://github.com/composer/semver.git", + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32", + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.4", + "symfony/phpunit-bridge": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Semver\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "Semver library that offers utilities, version constraint parsing and validation.", + "keywords": [ + "semantic", + "semver", + "validation", + "versioning" + ], + "support": { + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/3.4.0" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2023-08-31T09:50:34+00:00" + }, + { + "name": "composer/xdebug-handler", + "version": "3.0.4", + "source": { + "type": "git", + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "4f988f8fdf580d53bdb2d1278fe93d1ed5462255" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/4f988f8fdf580d53bdb2d1278fe93d1ed5462255", + "reference": "4f988f8fdf580d53bdb2d1278fe93d1ed5462255", + "shasum": "" + }, + "require": { + "composer/pcre": "^1 || ^2 || ^3", + "php": "^7.2.5 || ^8.0", + "psr/log": "^1 || ^2 || ^3" + }, + "require-dev": { + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-strict-rules": "^1.1", + "phpunit/phpunit": "^8.5 || ^9.6 || ^10.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Composer\\XdebugHandler\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" + } + ], + "description": "Restarts a process without Xdebug.", + "keywords": [ + "Xdebug", + "performance" + ], + "support": { + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/xdebug-handler/issues", + "source": "https://github.com/composer/xdebug-handler/tree/3.0.4" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2024-03-26T18:29:49+00:00" + }, + { + "name": "friendsofphp/php-cs-fixer", + "version": "v3.52.1", + "source": { + "type": "git", + "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", + "reference": "6e77207f0d851862ceeb6da63e6e22c01b1587bc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/6e77207f0d851862ceeb6da63e6e22c01b1587bc", + "reference": "6e77207f0d851862ceeb6da63e6e22c01b1587bc", + "shasum": "" + }, + "require": { + "composer/semver": "^3.4", + "composer/xdebug-handler": "^3.0.3", + "ext-filter": "*", + "ext-json": "*", + "ext-tokenizer": "*", + "php": "^7.4 || ^8.0", + "sebastian/diff": "^4.0 || ^5.0 || ^6.0", + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/event-dispatcher": "^5.4 || ^6.0 || ^7.0", + "symfony/filesystem": "^5.4 || ^6.0 || ^7.0", + "symfony/finder": "^5.4 || ^6.0 || ^7.0", + "symfony/options-resolver": "^5.4 || ^6.0 || ^7.0", + "symfony/polyfill-mbstring": "^1.28", + "symfony/polyfill-php80": "^1.28", + "symfony/polyfill-php81": "^1.28", + "symfony/process": "^5.4 || ^6.0 || ^7.0", + "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0" + }, + "require-dev": { + "facile-it/paraunit": "^1.3 || ^2.0", + "justinrainbow/json-schema": "^5.2", + "keradus/cli-executor": "^2.1", + "mikey179/vfsstream": "^1.6.11", + "php-coveralls/php-coveralls": "^2.7", + "php-cs-fixer/accessible-object": "^1.1", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.4", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.4", + "phpunit/phpunit": "^9.6 || ^10.5.5 || ^11.0.2", + "symfony/var-dumper": "^5.4 || ^6.0 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" + }, + "suggest": { + "ext-dom": "For handling output formats in XML", + "ext-mbstring": "For handling non-UTF8 characters." + }, + "bin": [ + "php-cs-fixer" + ], + "type": "application", + "autoload": { + "psr-4": { + "PhpCsFixer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Dariusz Rumiński", + "email": "dariusz.ruminski@gmail.com" + } + ], + "description": "A tool to automatically fix PHP code style", + "keywords": [ + "Static code analysis", + "fixer", + "standards", + "static analysis" + ], + "support": { + "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.52.1" + }, + "funding": [ + { + "url": "https://github.com/keradus", + "type": "github" + } + ], + "time": "2024-03-19T21:02:43+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v4.19.1", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4e1b88d21c69391150ace211e9eaf05810858d0b", + "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=7.1" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.1" + }, + "time": "2024-03-17T08:10:35+00:00" + }, + { + "name": "prestashop/autoindex", + "version": "v2.1.0", + "source": { + "type": "git", + "url": "https://github.com/PrestaShopCorp/autoindex.git", + "reference": "235f3ec115432ffc32d582198ea498467b3946d0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PrestaShopCorp/autoindex/zipball/235f3ec115432ffc32d582198ea498467b3946d0", + "reference": "235f3ec115432ffc32d582198ea498467b3946d0", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.10", + "php": "^8.0 || ^7.2", + "symfony/console": "^3.4 || ~4.0 || ~5.0 || ~6.0", + "symfony/finder": "^3.4 || ~4.0 || ~5.0 || ~6.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.83", + "prestashop/php-dev-tools": "1.*" + }, + "bin": [ + "bin/autoindex" + ], + "type": "library", + "autoload": { + "psr-4": { + "PrestaShop\\AutoIndex\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "AFL-3.0" + ], + "authors": [ + { + "name": "PrestaShop SA", + "email": "contact@prestashop.com" + } + ], + "description": "Automatically add an 'index.php' in all the current or specified directories and all sub-directories.", + "homepage": "https://github.com/PrestaShopCorp/autoindex", + "support": { + "source": "https://github.com/PrestaShopCorp/autoindex/tree/v2.1.0" + }, + "time": "2022-10-10T08:35:00+00:00" + }, + { + "name": "prestashop/header-stamp", + "version": "v2.3", + "source": { + "type": "git", + "url": "https://github.com/PrestaShopCorp/header-stamp.git", + "reference": "3104b69ad73b6039c7082dbba4af9dbeb0b936b3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PrestaShopCorp/header-stamp/zipball/3104b69ad73b6039c7082dbba4af9dbeb0b936b3", + "reference": "3104b69ad73b6039c7082dbba4af9dbeb0b936b3", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.10", + "php": "^8.0 || ^7.2", + "symfony/console": "^3.4 || ~4.0 || ~5.0 || ~6.0", + "symfony/finder": "^3.4 || ~4.0 || ~5.0 || ~6.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.83", + "prestashop/php-dev-tools": "1.*" + }, + "bin": [ + "bin/header-stamp" + ], + "type": "library", + "autoload": { + "psr-4": { + "PrestaShop\\HeaderStamp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "AFL-3.0" + ], + "authors": [ + { + "name": "PrestaShop SA", + "email": "contact@prestashop.com" + } + ], + "description": "Rewrite your file headers to add the license or to make them up-to-date", + "homepage": "https://github.com/PrestaShopCorp/header-stamp", + "support": { + "issues": "https://github.com/PrestaShopCorp/header-stamp/issues", + "source": "https://github.com/PrestaShopCorp/header-stamp/tree/v2.3" + }, + "time": "2023-03-23T14:44:10+00:00" + }, + { + "name": "prestashop/php-dev-tools", + "version": "v4.3.0", + "source": { + "type": "git", + "url": "https://github.com/PrestaShop/php-dev-tools.git", + "reference": "843275b19729ba810d8ba2b9c97b568e5bbabe03" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PrestaShop/php-dev-tools/zipball/843275b19729ba810d8ba2b9c97b568e5bbabe03", + "reference": "843275b19729ba810d8ba2b9c97b568e5bbabe03", + "shasum": "" + }, + "require": { + "friendsofphp/php-cs-fixer": "^3.2", + "php": ">=7.2.5", + "prestashop/autoindex": "^2.0", + "prestashop/header-stamp": "^2.0", + "squizlabs/php_codesniffer": "^3.4", + "symfony/console": "~3.2 || ~4.0 || ~5.0 || ~6.0", + "symfony/filesystem": "~3.2 || ~4.0 || ~5.0 || ~6.0" + }, + "bin": [ + "bin/prestashop-coding-standards" + ], + "type": "library", + "autoload": { + "psr-4": { + "PrestaShop\\CodingStandards\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PrestaShop coding standards", + "support": { + "issues": "https://github.com/PrestaShop/php-dev-tools/issues", + "source": "https://github.com/PrestaShop/php-dev-tools/tree/v4.3.0" + }, + "time": "2022-10-18T14:19:51+00:00" + }, + { + "name": "psr/container", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "shasum": "" + }, + "require": { + "php": ">=7.4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/2.0.2" + }, + "time": "2021-11-05T16:47:00+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "psr/log", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/3.0.0" + }, + "time": "2021-07-14T16:46:02+00:00" + }, + { + "name": "sebastian/diff", + "version": "5.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/c41e007b4b62af48218231d6c2275e4c9b975b2e", + "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0", + "symfony/process": "^6.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "security": "https://github.com/sebastianbergmann/diff/security/policy", + "source": "https://github.com/sebastianbergmann/diff/tree/5.1.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T07:15:17+00:00" + }, + { + "name": "squizlabs/php_codesniffer", + "version": "3.9.1", + "source": { + "type": "git", + "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", + "reference": "267a4405fff1d9c847134db3a3c92f1ab7f77909" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/267a4405fff1d9c847134db3a3c92f1ab7f77909", + "reference": "267a4405fff1d9c847134db3a3c92f1ab7f77909", + "shasum": "" + }, + "require": { + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4" + }, + "bin": [ + "bin/phpcbf", + "bin/phpcs" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Greg Sherwood", + "role": "Former lead" + }, + { + "name": "Juliette Reinders Folmer", + "role": "Current lead" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors" + } + ], + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer", + "keywords": [ + "phpcs", + "standards", + "static analysis" + ], + "support": { + "issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues", + "security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy", + "source": "https://github.com/PHPCSStandards/PHP_CodeSniffer", + "wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki" + }, + "funding": [ + { + "url": "https://github.com/PHPCSStandards", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + } + ], + "time": "2024-03-31T21:03:09+00:00" + }, + { + "name": "symfony/console", + "version": "v6.4.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "a2708a5da5c87d1d0d52937bdeac625df659e11f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/a2708a5da5c87d1d0d52937bdeac625df659e11f", + "reference": "a2708a5da5c87d1d0d52937bdeac625df659e11f", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^5.4|^6.0|^7.0" + }, + "conflict": { + "symfony/dependency-injection": "<5.4", + "symfony/dotenv": "<5.4", + "symfony/event-dispatcher": "<5.4", + "symfony/lock": "<5.4", + "symfony/process": "<5.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/lock": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command-line", + "console", + "terminal" + ], + "support": { + "source": "https://github.com/symfony/console/tree/v6.4.6" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-03-29T19:07:53+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v3.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-05-23T14:45:45+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v6.4.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "ae9d3a6f3003a6caf56acd7466d8d52378d44fef" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/ae9d3a6f3003a6caf56acd7466d8d52378d44fef", + "reference": "ae9d3a6f3003a6caf56acd7466d8d52378d44fef", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/event-dispatcher-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/dependency-injection": "<5.4", + "symfony/service-contracts": "<2.5" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-01-23T14:51:35+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v3.4.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "4e64b49bf370ade88e567de29465762e316e4224" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/4e64b49bf370ade88e567de29465762e316e4224", + "reference": "4e64b49bf370ade88e567de29465762e316e4224", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/event-dispatcher": "^1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-01-23T14:51:35+00:00" + }, + { + "name": "symfony/filesystem", + "version": "v6.4.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "9919b5509ada52cc7f66f9a35c86a4a29955c9d3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/9919b5509ada52cc7f66f9a35c86a4a29955c9d3", + "reference": "9919b5509ada52cc7f66f9a35c86a4a29955c9d3", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides basic utilities for the filesystem", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/filesystem/tree/v6.4.6" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-03-21T19:36:20+00:00" + }, + { + "name": "symfony/finder", + "version": "v6.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "11d736e97f116ac375a81f96e662911a34cd50ce" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/11d736e97f116ac375a81f96e662911a34cd50ce", + "reference": "11d736e97f116ac375a81f96e662911a34cd50ce", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "symfony/filesystem": "^6.0|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Finds files and directories via an intuitive fluent interface", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/finder/tree/v6.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-10-31T17:30:12+00:00" + }, + { + "name": "symfony/options-resolver", + "version": "v6.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/options-resolver.git", + "reference": "22301f0e7fdeaacc14318928612dee79be99860e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/22301f0e7fdeaacc14318928612dee79be99860e", + "reference": "22301f0e7fdeaacc14318928612dee79be99860e", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\OptionsResolver\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an improved replacement for the array_replace PHP function", + "homepage": "https://symfony.com", + "keywords": [ + "config", + "configuration", + "options" + ], + "support": { + "source": "https://github.com/symfony/options-resolver/tree/v6.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-08-08T10:16:24+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.29.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4", + "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-01-29T20:11:03+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.29.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/32a9da87d7b3245e09ac426c83d334ae9f06f80f", + "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.29.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-01-29T20:11:03+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.29.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "bc45c394692b948b4d383a08d7753968bed9a83d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d", + "reference": "bc45c394692b948b4d383a08d7753968bed9a83d", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-01-29T20:11:03+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.29.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec", + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-01-29T20:11:03+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.29.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", + "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-01-29T20:11:03+00:00" + }, + { + "name": "symfony/polyfill-php81", + "version": "v1.29.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/c565ad1e63f30e7477fc40738343c62b40bc672d", + "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php81\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php81/tree/v1.29.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-01-29T20:11:03+00:00" + }, + { + "name": "symfony/process", + "version": "v6.4.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "710e27879e9be3395de2b98da3f52a946039f297" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/710e27879e9be3395de2b98da3f52a946039f297", + "reference": "710e27879e9be3395de2b98da3f52a946039f297", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v6.4.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-02-20T12:31:00+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v3.4.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "11bbf19a0fb7b36345861e85c5768844c552906e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/11bbf19a0fb7b36345861e85c5768844c552906e", + "reference": "11bbf19a0fb7b36345861e85c5768844c552906e", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/container": "^1.1|^2.0" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/service-contracts/tree/v3.4.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-12-19T21:51:00+00:00" + }, + { + "name": "symfony/stopwatch", + "version": "v6.4.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/stopwatch.git", + "reference": "416596166641f1f728b0a64f5b9dd07cceb410c1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/416596166641f1f728b0a64f5b9dd07cceb410c1", + "reference": "416596166641f1f728b0a64f5b9dd07cceb410c1", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/service-contracts": "^2.5|^3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Stopwatch\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a way to profile code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/stopwatch/tree/v6.4.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-01-23T14:35:58+00:00" + }, + { + "name": "symfony/string", + "version": "v6.4.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "4e465a95bdc32f49cf4c7f07f751b843bbd6dcd9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/4e465a95bdc32f49cf4c7f07f751b843bbd6dcd9", + "reference": "4e465a95bdc32f49cf4c7f07f751b843bbd6dcd9", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/translation-contracts": "<2.5" + }, + "require-dev": { + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/intl": "^6.2|^7.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v6.4.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-02-01T13:16:41+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [], + "plugin-api-version": "2.2.0" +} diff --git a/src/phpstan.neon b/src/phpstan.neon new file mode 100644 index 0000000..4a5b729 --- /dev/null +++ b/src/phpstan.neon @@ -0,0 +1,10 @@ +includes: + - %currentWorkingDirectory%/vendor/prestashop/php-dev-tools/phpstan/ps-module-extension.neon + +parameters: + paths: + - ./ + excludePaths: + - vendor/ + reportUnmatchedIgnoredErrors: false + level: max From a88dd337954001b701550def57fa3a75e78f1074 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Wed, 3 Apr 2024 18:12:34 +0300 Subject: [PATCH 003/114] Run fix script --- ...AdminSmailyforprestashopAjaxController.php | 87 +++--- src/controllers/admin/index.php | 13 +- src/controllers/front/SmailyCartCron.php | 53 ++-- src/controllers/front/SmailyCustomerCron.php | 62 ++-- src/controllers/front/SmailyRssFeed.php | 27 +- src/controllers/front/index.php | 13 +- src/controllers/index.php | 13 +- src/index.php | 13 +- src/smailyforprestashop.php | 283 +++++++++--------- src/translations/et.php | 2 +- src/translations/index.php | 13 +- src/upgrade/Upgrade-1.1.0.php | 6 +- src/upgrade/Upgrade-1.3.0.php | 5 +- src/upgrade/Upgrade-1.5.0.php | 10 +- src/upgrade/Upgrade-1.6.0.php | 3 +- src/upgrade/index.php | 13 +- src/views/index.php | 13 +- src/views/js/index.php | 13 +- src/views/templates/admin/index.php | 13 +- src/views/templates/hook/index.php | 13 +- src/views/templates/index.php | 13 +- 21 files changed, 342 insertions(+), 339 deletions(-) diff --git a/src/controllers/admin/AdminSmailyforprestashopAjaxController.php b/src/controllers/admin/AdminSmailyforprestashopAjaxController.php index d62ae9f..01e86f5 100644 --- a/src/controllers/admin/AdminSmailyforprestashopAjaxController.php +++ b/src/controllers/admin/AdminSmailyforprestashopAjaxController.php @@ -21,7 +21,6 @@ * @copyright 2018 Smaily * @license GPL3 */ - class AdminSmailyforprestashopAjaxController extends ModuleAdminController { public function initContent() @@ -40,26 +39,26 @@ public function ajaxProcessSmailyValidate() { $response = null; // Validate token and if request is ajax call. - if (Tools::getValue('ajax') && - Tools::getValue('token') === Tools::getAdminTokenLite('AdminSmailyforprestashopAjax') - ) { + if (Tools::getValue('ajax') + && Tools::getValue('token') === Tools::getAdminTokenLite('AdminSmailyforprestashopAjax') + ) { // If no subdomain entered display error message. - if (!Tools::getValue('subdomain') || - empty(trim(Tools::getValue('subdomain')))) { - $response = array('error' => $this->l('Please enter subdomain!')); - die(Tools::jsonEncode($response)); + if (!Tools::getValue('subdomain') + || empty(trim(Tools::getValue('subdomain')))) { + $response = ['error' => $this->l('Please enter subdomain!')]; + exit(Tools::jsonEncode($response)); } // If no username entered display error message. - if (!Tools::getValue('username') || - empty(trim(Tools::getValue('subdomain')))) { - $response = array('error' => $this->l('Please enter username!')); - die(Tools::jsonEncode($response)); + if (!Tools::getValue('username') + || empty(trim(Tools::getValue('subdomain')))) { + $response = ['error' => $this->l('Please enter username!')]; + exit(Tools::jsonEncode($response)); } // If no pasword entered display error message. - if (!Tools::getValue('password') || - empty(trim(Tools::getValue('password')))) { - $response = array('error' => $this->l('Please enter password!')); - die(Tools::jsonEncode($response)); + if (!Tools::getValue('password') + || empty(trim(Tools::getValue('password')))) { + $response = ['error' => $this->l('Please enter password!')]; + exit(Tools::jsonEncode($response)); } $subdomain = Tools::getValue('subdomain'); @@ -75,7 +74,7 @@ public function ajaxProcessSmailyValidate() $subdomain = $parts[0]; } $subdomain = preg_replace('/[^a-zA-Z0-9]+/', '', $subdomain); - + // Clean user entered subdomain. $subdomain = pSQL($subdomain); // Clean user entered username @@ -90,14 +89,14 @@ public function ajaxProcessSmailyValidate() $subdomain, $username, $password, - array( - 'trigger_type' => 'form_submitted' - ) + [ + 'trigger_type' => 'form_submitted', + ] ); // Failsafe for empty response. if (!$response) { - $response = array('error' => $this->l('Invalid login details!')); - die(Tools::jsonEncode($response)); + $response = ['error' => $this->l('Invalid login details!')]; + exit(Tools::jsonEncode($response)); } // Add credentials to DB if successfully validated. if (array_key_exists('success', $response)) { @@ -105,17 +104,17 @@ public function ajaxProcessSmailyValidate() Configuration::updateValue('SMAILY_USERNAME', $username); Configuration::updateValue('SMAILY_PASSWORD', $password); } - die(Tools::jsonEncode($response)); + exit(Tools::jsonEncode($response)); } } public function ajaxProcessGetAutoresponders() { - $response = array(); + $response = []; // Validate token and if request is ajax call. - if (Tools::getValue('ajax') && - Tools::getValue('token') === Tools::getAdminTokenLite('AdminSmailyforprestashopAjax') - ) { + if (Tools::getValue('ajax') + && Tools::getValue('token') === Tools::getAdminTokenLite('AdminSmailyforprestashopAjax') + ) { // Get credentials from db. $subdomain = pSQL(Configuration::get('SMAILY_SUBDOMAIN')); $username = pSQL(Configuration::get('SMAILY_USERNAME')); @@ -126,29 +125,29 @@ public function ajaxProcessGetAutoresponders() $subdomain, $username, $password, - array( - 'trigger_type' => 'form_submitted' - ) + [ + 'trigger_type' => 'form_submitted', + ] ); - die(Tools::jsonEncode($response)); + exit(Tools::jsonEncode($response)); } } /** * Makes API call to Smaily api * - * @param string $endpoint Smaily API endpoint without .php + * @param string $endpoint Smaily API endpoint without .php * @param string $subdomain Smaily account subdomain - * @param string $username Smaily username - * @param string $password Smaily password - * @param array $data Data to be sent to Smaily - * @param string $method GET or POST method + * @param string $username Smaily username + * @param string $password Smaily password + * @param array $data Data to be sent to Smaily + * @param string $method GET or POST method + * * @return array $result Response from Smaily */ - public function callApi($endpoint, $subdomain, $username, $password, $data = array(), $method = 'GET') + public function callApi($endpoint, $subdomain, $username, $password, $data = [], $method = 'GET') { - - $apiUrl = "https://" . $subdomain . ".sendsmaily.net/api/" . trim($endpoint, '/') . ".php"; + $apiUrl = 'https://' . $subdomain . '.sendsmaily.net/api/' . trim($endpoint, '/') . '.php'; $data = http_build_query($data); if ($method == 'GET') { $apiUrl = $apiUrl . '?' . $data; @@ -171,16 +170,16 @@ public function callApi($endpoint, $subdomain, $username, $password, $data = arr if (!curl_errno($ch)) { switch ((int) $http_status) { case 200: - return array('success' => true, 'autoresponders' => $result); + return ['success' => true, 'autoresponders' => $result]; case 401: - return $result = array('error' => $this->l('Check credentials, unauthorized!')); + return $result = ['error' => $this->l('Check credentials, unauthorized!')]; case 404: - return $result = array('error' => $this->l('Check subdomain, unauthorized!')); + return $result = ['error' => $this->l('Check subdomain, unauthorized!')]; default: - return $result = array('error' => $this->l('Something went wrong with request to Smaily!')); + return $result = ['error' => $this->l('Something went wrong with request to Smaily!')]; } } else { - return $result = array("error" => $this->l(curl_error($ch))); + return $result = ['error' => $this->l(curl_error($ch))]; } curl_close($ch); } diff --git a/src/controllers/admin/index.php b/src/controllers/admin/index.php index a714670..691f051 100644 --- a/src/controllers/admin/index.php +++ b/src/controllers/admin/index.php @@ -21,11 +21,10 @@ * @copyright 2018 Smaily * @license GPL3 */ - -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: ../"); +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; diff --git a/src/controllers/front/SmailyCartCron.php b/src/controllers/front/SmailyCartCron.php index 092c15e..d664b38 100644 --- a/src/controllers/front/SmailyCartCron.php +++ b/src/controllers/front/SmailyCartCron.php @@ -21,20 +21,18 @@ * @copyright 2018 Smaily * @license GPL3 */ - class SmailyforprestashopSmailyCartCronModuleFrontController extends ModuleFrontController { - public function init() { parent::init(); header('Content-Type: text/plain'); if (Tools::getValue('token') == Configuration::get('SMAILY_CART_CRON_TOKEN')) { $this->abandonedCart(); - die(); + exit; } else { - echo('Access denied!'); - die(1); + echo 'Access denied!'; + exit(1); } } @@ -45,9 +43,9 @@ public function init() */ private function abandonedCart() { - if (Configuration::get('SMAILY_ENABLE_ABANDONED_CART') !== "1") { - echo('Abandoned cart disabled!'); - die(1); + if (Configuration::get('SMAILY_ENABLE_ABANDONED_CART') !== '1') { + echo 'Abandoned cart disabled!'; + exit(1); } // Settings. @@ -78,9 +76,9 @@ private function abandonedCart() } // Initialize Smaily query. - $adresses = array( + $adresses = [ 'email' => $abandoned_cart['email'], - ); + ]; if (in_array('first_name', $sync_fields)) { $adresses['first_name'] = $abandoned_cart['firstname']; @@ -91,16 +89,16 @@ private function abandonedCart() } // Populate abandoned cart with empty values for legacy api. - $fields_available = array( + $fields_available = [ 'name', 'description', 'sku', 'price', 'quantity', 'base_price', - ); + ]; foreach ($fields_available as $field) { - for ($i=1; $i<=10; $i++) { + for ($i = 1; $i <= 10; ++$i) { $adresses['product_' . $field . '_' . $i] = ''; } } @@ -136,29 +134,29 @@ private function abandonedCart() ); break; default: - $adresses['product_' . $sync_field .'_' . $count] = $product[$sync_field]; + $adresses['product_' . $sync_field . '_' . $count] = $product[$sync_field]; break; } } - $count++; + ++$count; } // Smaily api query. - $query = array( + $query = [ 'autoresponder' => $autoresponder_id, - 'addresses' => array($adresses) - ); + 'addresses' => [$adresses], + ]; // Send cart data to smaily api. $response = $this->module->callApi('autoresponder', $query, 'POST'); // If email sent successfully update sent status in database. - if (array_key_exists('success', $response) && - isset($response['result']['code']) && - $response['result']['code'] === 101) { - $this->updateSentStatus($id_customer, $id_cart); + if (array_key_exists('success', $response) + && isset($response['result']['code']) + && $response['result']['code'] === 101) { + $this->updateSentStatus($id_customer, $id_cart); } else { $this->module->logErrorWithFormatting( - "Failed sending out abandoned cart email for email: %s, cart_id: %s. " . - "Smaily response code: %s, message: %s.", + 'Failed sending out abandoned cart email for email: %s, cart_id: %s. ' . + 'Smaily response code: %s, message: %s.', $abandoned_cart['email'], $abandoned_cart['id_cart'], $response['result']['code'], @@ -166,7 +164,7 @@ private function abandonedCart() ); } } - echo('Abandoned carts emails sent!'); + echo 'Abandoned carts emails sent!'; } /** @@ -204,8 +202,9 @@ private function getAbandonedCarts() /** * Updates Sent email status in smaily cart table. * - * @param integer $id_customer Customer ID - * @param integer $id_cart Cart ID + * @param int $id_customer Customer ID + * @param int $id_cart Cart ID + * * @return void */ private function updateSentStatus($id_customer, $id_cart) diff --git a/src/controllers/front/SmailyCustomerCron.php b/src/controllers/front/SmailyCustomerCron.php index 77303b2..41fde01 100644 --- a/src/controllers/front/SmailyCustomerCron.php +++ b/src/controllers/front/SmailyCustomerCron.php @@ -21,7 +21,6 @@ * @copyright 2018 Smaily * @license GPL3 */ - class SmailyforprestashopSmailyCustomerCronModuleFrontController extends ModuleFrontController { /** @@ -40,39 +39,42 @@ public function init() header('Content-Type: text/plain'); if (Tools::getValue('token') != Configuration::get('SMAILY_CUSTOMER_CRON_TOKEN')) { - echo('Access denied!'); - die(1); + echo 'Access denied!'; + exit(1); } if ((int) Configuration::get('SMAILY_ENABLE_CRON') !== 1) { - echo('User synchronization disabled!'); - die(1); + echo 'User synchronization disabled!'; + exit(1); } if ($this->syncContacts()) { - die('User synchronization done!'); + exit('User synchronization done!'); } else { - echo('User synchronization failed!'); - die(1); + echo 'User synchronization failed!'; + exit(1); } } /** * Synchronize prestashop contacts with Smaily database. - * @return bool Success status. + * + * @return bool success status */ private function syncContacts() { $unsubscribers_synchronized = $this->removeUnsubscribers(self::UNSUBSCRIBERS_BATCH_LIMIT); if (!$unsubscribers_synchronized) { - $this->module->logMessageWithSeverity("Customer sync failed - unsubscribers are not removed", 1); + $this->module->logMessageWithSeverity('Customer sync failed - unsubscribers are not removed', 1); + return false; } // Don't sync customers if failed to remove unsubscribers. $subscribers_synchronized = $this->sendSubscribersToSmaily(self::SUBSCRIBERS_BATCH_LIMIT); if (!$subscribers_synchronized) { - $this->module->logMessageWithSeverity("Customer sync failed - failed to send subscribers to Smaily", 1); + $this->module->logMessageWithSeverity('Customer sync failed - failed to send subscribers to Smaily', 1); + return false; } @@ -82,14 +84,14 @@ private function syncContacts() /** * Get user data for customer based on settings for Syncronize Additional. * - * @param array $customer Customer array from Presta DB. - * @param array $fields Additional synchronisation fields from settings. + * @param array $customer customer array from Presta DB + * @param array $fields additional synchronisation fields from settings * - * @return array $userdata Customer field values based of settings in Syncronize Additional. + * @return array $userdata customer field values based of settings in Syncronize Additional */ private function getUserData($customer, $fields) { - $userdata = array(); + $userdata = []; if (!empty($fields)) { foreach ($fields as $sync_data) { @@ -100,15 +102,16 @@ private function getUserData($customer, $fields) } $userdata['email'] = $customer['email']; + return $userdata; } /** * Get unsubscribers from Smaily and change subscription status to unsubscribed in store. * - * @param int $limit Limit request size. + * @param int $limit limit request size * - * @return bool Success status. + * @return bool success status */ private function removeUnsubscribers($limit = 1000) { @@ -117,16 +120,17 @@ private function removeUnsubscribers($limit = 1000) while (true) { $unsubscribers = $this->module->callApi( 'contact', - array( + [ 'list' => 2, 'limit' => $limit, 'offset' => $offset, - ) + ] ); // Stop if error. if (!isset($unsubscribers['success'])) { - $this->module->logErrorWithFormatting("Failed fetching unsubscribers."); + $this->module->logErrorWithFormatting('Failed fetching unsubscribers.'); + return false; } // Stop if no more subscribers. @@ -148,12 +152,13 @@ function ($item) { $query_result = Db::getInstance()->execute($query); // Stop if query fails. if ($query_result === false) { - $this->module->logErrorWithFormatting("Failed removing subscribed status for unsubscribers."); + $this->module->logErrorWithFormatting('Failed removing subscribed status for unsubscribers.'); + return false; } // Smaily API call offset is considered as page number, not SQL offset! - $offset++; + ++$offset; } return true; @@ -162,8 +167,9 @@ function ($item) { /** * Send store subscribers data to Smaily. * - * @param int $limit subscriber request batch limit. - * @return bool Success status. + * @param int $limit subscriber request batch limit + * + * @return bool success status */ public function sendSubscribersToSmaily($limit) { @@ -180,7 +186,8 @@ public function sendSubscribersToSmaily($limit) $customers = Db::getInstance()->executeS($sql); // Stop if query fails. if ($customers === false) { - $this->module->logErrorWithFormatting("Failed retrieving newsletter subscribers from DB."); + $this->module->logErrorWithFormatting('Failed retrieving newsletter subscribers from DB.'); + return false; } // Stop if no more qustomers. @@ -188,7 +195,7 @@ public function sendSubscribersToSmaily($limit) break; } - $update_data = array(); + $update_data = []; foreach ($customers as $customer) { $userdata = $this->getUserData($customer, $additional_fields); array_push($update_data, $userdata); @@ -199,10 +206,11 @@ public function sendSubscribersToSmaily($limit) // Stop if not successful update. if (isset($response['result']['code']) && $response['result']['code'] !== 101) { $this->module->logErrorWithFormatting( - "Failed sending subscribers to Smaily. Smaily response code: %s, message: %s", + 'Failed sending subscribers to Smaily. Smaily response code: %s, message: %s', $response['result']['code'], $response['result']['message'] ); + return false; } diff --git a/src/controllers/front/SmailyRssFeed.php b/src/controllers/front/SmailyRssFeed.php index 6fa5c31..75423f2 100644 --- a/src/controllers/front/SmailyRssFeed.php +++ b/src/controllers/front/SmailyRssFeed.php @@ -21,7 +21,6 @@ * @copyright 2018 Smaily * @license GPL3 */ - class SmailyforprestashopSmailyRssFeedModuleFrontController extends ModuleFrontController { public function initContent() @@ -39,7 +38,7 @@ public function generateRssFeed() $sort_by = in_array($sort_by, SmailyForPrestashop::$allowed_sort_by_values, true) ? $sort_by : 'date_upd'; $sort_order = Tools::getValue('sort_order'); - $sort_order = in_array($sort_order, array('asc', 'desc'), true) ? $sort_order : 'desc'; + $sort_order = in_array($sort_order, ['asc', 'desc'], true) ? $sort_order : 'desc'; $category_id = (int) Tools::getValue('category_id'); $category_id = $category_id <= 0 ? false : $category_id; @@ -53,12 +52,12 @@ public function generateRssFeed() $category_id, // hardcoded false in < 1.4.0 true // only active products ); - $baseUrl = Tools::getHttpHost(true).__PS_BASE_URI__; - $rss ='' . + $baseUrl = Tools::getHttpHost(true) . __PS_BASE_URI__; + $rss = '' . '' . 'Store' . - htmlspecialchars($baseUrl).'Product Feed' . - date("D, d M Y H:i:s") . ''; + htmlspecialchars($baseUrl) . 'Product Feed' . + date('D, d M Y H:i:s') . ''; foreach ($products as $product) { // Product data by id. $prod = new Product($product['id_product']); @@ -82,31 +81,31 @@ public function generateRssFeed() // Determine if there is discount. $discount = 0; if ($full_price > $price && $price > 0) { - $discount = ceil(($full_price - $price)/$full_price*100); + $discount = ceil(($full_price - $price) / $full_price * 100); } // Addcurrency symbol. $currencysymbol = Currency::getDefaultCurrency()->sign; $price = number_format($price, 2, '.', ',') . $currencysymbol; $full_price = number_format($full_price, 2, '.', ',') . $currencysymbol; - $price_fields =''; + $price_fields = ''; if ($discount > 0) { $price_fields = '' . $full_price . '-' . $discount . '%'; } $rss .= ' - <![CDATA['. $name .']]> + <![CDATA[' . $name . ']]> - - '. $baseUrl . ' - ' . date("D, d M Y H:i:s", strtotime($date_add)) . ' + + ' . $baseUrl . ' + ' . date('D, d M Y H:i:s', strtotime($date_add)) . ' ' . $price . '' . $price_fields . ' '; } - $rss .=''; + $rss .= ''; header('Content-Type: application/xml'); echo $rss; - die; + exit; } } diff --git a/src/controllers/front/index.php b/src/controllers/front/index.php index a714670..691f051 100644 --- a/src/controllers/front/index.php +++ b/src/controllers/front/index.php @@ -21,11 +21,10 @@ * @copyright 2018 Smaily * @license GPL3 */ - -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: ../"); +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; diff --git a/src/controllers/index.php b/src/controllers/index.php index a714670..691f051 100644 --- a/src/controllers/index.php +++ b/src/controllers/index.php @@ -21,11 +21,10 @@ * @copyright 2018 Smaily * @license GPL3 */ - -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: ../"); +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; diff --git a/src/index.php b/src/index.php index a714670..691f051 100644 --- a/src/index.php +++ b/src/index.php @@ -21,11 +21,10 @@ * @copyright 2018 Smaily * @license GPL3 */ - -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: ../"); +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; diff --git a/src/smailyforprestashop.php b/src/smailyforprestashop.php index c44c869..754b9d9 100644 --- a/src/smailyforprestashop.php +++ b/src/smailyforprestashop.php @@ -21,14 +21,13 @@ * @copyright 2018 Smaily * @license GPL3 */ - if (!defined('_PS_VERSION_')) { exit; } class SmailyForPrestashop extends Module { - public static $allowed_sort_by_values = array('date_add', 'date_upd', 'name', 'price', 'id_product'); + public static $allowed_sort_by_values = ['date_add', 'date_upd', 'name', 'price', 'id_product']; public function __construct() { @@ -38,10 +37,10 @@ public function __construct() $this->version = '1.6.1'; $this->author = 'Smaily'; $this->need_instance = 0; - $this->ps_versions_compliancy = array( + $this->ps_versions_compliancy = [ 'min' => '1.7.0', - 'max' => _PS_VERSION_ - ); + 'max' => _PS_VERSION_, + ]; $this->bootstrap = true; parent::__construct(); @@ -61,47 +60,48 @@ public function install() Shop::setContext(Shop::CONTEXT_ALL); } - if (!parent::install() || + if (!parent::install() // Check that the module can be attached to the header hook. - !$this->registerHook('backOfficeHeader') || + || !$this->registerHook('backOfficeHeader') // Check that you can add Smaily settings field values. - !Configuration::updateValue('SMAILY_ENABLE_CRON', 0) || - !Configuration::updateValue('SMAILY_ENABLE_ABANDONED_CART', 0) || - !Configuration::updateValue('SMAILY_CUSTOMER_CRON_TOKEN', '') || - !Configuration::updateValue('SMAILY_CART_CRON_TOKEN', '') || - !Configuration::updateValue('SMAILY_SUBDOMAIN', '') || - !Configuration::updateValue('SMAILY_USERNAME', '') || - !Configuration::updateValue('SMAILY_PASSWORD', '') || - !Configuration::updateValue('SMAILY_CART_AUTORESPONDER', '') || - !Configuration::updateValue('SMAILY_ABANDONED_CART_TIME', '') || - !Configuration::updateValue('SMAILY_SYNCRONIZE_ADDITIONAL', serialize(array())) || - !Configuration::updateValue('SMAILY_CART_SYNCRONIZE_ADDITIONAL', serialize(array())) || - !Configuration::updateValue('SMAILY_RSS_CATEGORY_ID', '') || - !Configuration::updateValue('SMAILY_RSS_LIMIT', '50') || - !Configuration::updateValue('SMAILY_RSS_SORT_BY', 'date_upd') || - !Configuration::updateValue('SMAILY_RSS_SORT_ORDER', 'desc') || - !Configuration::updateValue('SMAILY_OPTIN_ENABLED', 0) || - !Configuration::updateValue('SMAILY_OPTIN_AUTORESPONDER', '') || + || !Configuration::updateValue('SMAILY_ENABLE_CRON', 0) + || !Configuration::updateValue('SMAILY_ENABLE_ABANDONED_CART', 0) + || !Configuration::updateValue('SMAILY_CUSTOMER_CRON_TOKEN', '') + || !Configuration::updateValue('SMAILY_CART_CRON_TOKEN', '') + || !Configuration::updateValue('SMAILY_SUBDOMAIN', '') + || !Configuration::updateValue('SMAILY_USERNAME', '') + || !Configuration::updateValue('SMAILY_PASSWORD', '') + || !Configuration::updateValue('SMAILY_CART_AUTORESPONDER', '') + || !Configuration::updateValue('SMAILY_ABANDONED_CART_TIME', '') + || !Configuration::updateValue('SMAILY_SYNCRONIZE_ADDITIONAL', serialize([])) + || !Configuration::updateValue('SMAILY_CART_SYNCRONIZE_ADDITIONAL', serialize([])) + || !Configuration::updateValue('SMAILY_RSS_CATEGORY_ID', '') + || !Configuration::updateValue('SMAILY_RSS_LIMIT', '50') + || !Configuration::updateValue('SMAILY_RSS_SORT_BY', 'date_upd') + || !Configuration::updateValue('SMAILY_RSS_SORT_ORDER', 'desc') + || !Configuration::updateValue('SMAILY_OPTIN_ENABLED', 0) + || !Configuration::updateValue('SMAILY_OPTIN_AUTORESPONDER', '') // Add tab to sidebar - !$this->installTab('AdminAdmin', 'AdminSmailyforprestashopAjax', 'Smaily for PrestaShop') || + || !$this->installTab('AdminAdmin', 'AdminSmailyforprestashopAjax', 'Smaily for PrestaShop') // Add Newsletter subscription form. - !$this->registerHook('footerBefore') || - !$this->registerHook('leftColumn') || - !$this->registerHook('rightColumn') || + || !$this->registerHook('footerBefore') + || !$this->registerHook('leftColumn') + || !$this->registerHook('rightColumn') // User has option to trigger opt-in when customer joins store & newsletter through sign-up. - !$this->registerHook('actionCustomerAccountAdd') + || !$this->registerHook('actionCustomerAccountAdd') ) { return false; } - $sql = 'CREATE TABLE IF NOT EXISTS '._DB_PREFIX_.'smaily_cart ( + $sql = 'CREATE TABLE IF NOT EXISTS ' . _DB_PREFIX_ . 'smaily_cart ( `id_smaily_cart` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , `id_customer` INT UNSIGNED NULL , `id_cart` INT UNSIGNED NULL , - `date_sent` DATETIME NOT NULL) ENGINE='._MYSQL_ENGINE_; + `date_sent` DATETIME NOT NULL) ENGINE=' . _MYSQL_ENGINE_; if (!Db::getInstance()->execute($sql)) { return false; } + return true; } @@ -109,52 +109,55 @@ public function installTab($parent_class, $class_name, $name) { $tab = new Tab(); $tab->id_parent = (int) Tab::getIdFromClassName($parent_class); - $tab->name = array(); + $tab->name = []; foreach (Language::getLanguages(true) as $lang) { $tab->name[$lang['id_lang']] = $name; } $tab->class_name = $class_name; $tab->module = $this->name; $tab->active = 0; + return $tab->add(); } public function uninstall() { - if (!parent::uninstall() || + if (!parent::uninstall() // Delete settings created by module. - !Configuration::deleteByName('SMAILY_ENABLE_CRON') || - !Configuration::deleteByName('SMAILY_ENABLE_ABANDONED_CART') || - !Configuration::deleteByName('SMAILY_CUSTOMER_CRON_TOKEN') || - !Configuration::deleteByName('SMAILY_CART_CRON_TOKEN') || - !Configuration::deleteByName('SMAILY_SUBDOMAIN') || - !Configuration::deleteByName('SMAILY_USERNAME') || - !Configuration::deleteByName('SMAILY_PASSWORD') || - !Configuration::deleteByName('SMAILY_CART_AUTORESPONDER') || - !Configuration::deleteByName('SMAILY_ABANDONED_CART_TIME') || - !Configuration::deleteByName('SMAILY_SYNCRONIZE_ADDITIONAL') || - !Configuration::deleteByName('SMAILY_CART_SYNCRONIZE_ADDITIONAL') || - !Configuration::deleteByName('SMAILY_RSS_CATEGORY_ID') || - !Configuration::deleteByName('SMAILY_RSS_LIMIT') || - !Configuration::deleteByName('SMAILY_RSS_SORT_BY') || - !Configuration::deleteByName('SMAILY_RSS_SORT_ORDER') || - !Configuration::deleteByName('SMAILY_OPTIN_ENABLED') || - !Configuration::deleteByName('SMAILY_OPTIN_AUTORESPONDER') || + || !Configuration::deleteByName('SMAILY_ENABLE_CRON') + || !Configuration::deleteByName('SMAILY_ENABLE_ABANDONED_CART') + || !Configuration::deleteByName('SMAILY_CUSTOMER_CRON_TOKEN') + || !Configuration::deleteByName('SMAILY_CART_CRON_TOKEN') + || !Configuration::deleteByName('SMAILY_SUBDOMAIN') + || !Configuration::deleteByName('SMAILY_USERNAME') + || !Configuration::deleteByName('SMAILY_PASSWORD') + || !Configuration::deleteByName('SMAILY_CART_AUTORESPONDER') + || !Configuration::deleteByName('SMAILY_ABANDONED_CART_TIME') + || !Configuration::deleteByName('SMAILY_SYNCRONIZE_ADDITIONAL') + || !Configuration::deleteByName('SMAILY_CART_SYNCRONIZE_ADDITIONAL') + || !Configuration::deleteByName('SMAILY_RSS_CATEGORY_ID') + || !Configuration::deleteByName('SMAILY_RSS_LIMIT') + || !Configuration::deleteByName('SMAILY_RSS_SORT_BY') + || !Configuration::deleteByName('SMAILY_RSS_SORT_ORDER') + || !Configuration::deleteByName('SMAILY_OPTIN_ENABLED') + || !Configuration::deleteByName('SMAILY_OPTIN_AUTORESPONDER') // Remove sideTab of smaily module. - !$this->uninstallTab('AdminSmailyforprestashopAjax') + || !$this->uninstallTab('AdminSmailyforprestashopAjax') ) { return false; } - Db::getInstance()->execute('DROP TABLE IF EXISTS '._DB_PREFIX_.'smaily_cart'); + Db::getInstance()->execute('DROP TABLE IF EXISTS ' . _DB_PREFIX_ . 'smaily_cart'); + return true; } public function uninstallTab($class_name) { // Retrieve Tab ID - $id_tab = (int)Tab::getIdFromClassName($class_name); + $id_tab = (int) Tab::getIdFromClassName($class_name); // Load tab - $tab = new Tab((int)$id_tab); + $tab = new Tab((int) $id_tab); + // Delete it return $tab->delete(); } @@ -166,9 +169,9 @@ public function getContent() // Remove credentials button. if (Tools::isSubmit('smaily_remove_credentials')) { - if (Configuration::updateValue('SMAILY_SUBDOMAIN', '') && - Configuration::updateValue('SMAILY_USERNAME', '') && - Configuration::updateValue('SMAILY_PASSWORD', '') + if (Configuration::updateValue('SMAILY_SUBDOMAIN', '') + && Configuration::updateValue('SMAILY_USERNAME', '') + && Configuration::updateValue('SMAILY_PASSWORD', '') ) { // Disable customer sync. Configuration::updateValue('SMAILY_ENABLE_CRON', 0); @@ -197,7 +200,7 @@ public function getContent() // Syncronize additional. $syncronize_additional = Tools::getValue('SMAILY_SYNCRONIZE_ADDITIONAL'); - $escaped_sync_additional = array(); + $escaped_sync_additional = []; if (!empty($syncronize_additional)) { foreach ($syncronize_additional as $value) { $escaped_sync_additional[] = pSQL($value); @@ -238,7 +241,7 @@ public function getContent() $cart_autoresponder = pSQL(Tools::getValue('SMAILY_CART_AUTORESPONDER')); // Syncronize additional for abandoned cart template. $cart_syncronize_additional = Tools::getValue('SMAILY_CART_SYNCRONIZE_ADDITIONAL'); - $cart_escaped_sync_additional = array(); + $cart_escaped_sync_additional = []; if (!empty($cart_syncronize_additional)) { foreach ($cart_syncronize_additional as $value) { $cart_escaped_sync_additional[] = pSQL($value); @@ -248,7 +251,7 @@ public function getContent() if ($abandoned_cart_time < 15) { // Display error message. $output .= $this->displayError($this->l('Abandoned cart delay has to be atleast 15 minutes.')); - } elseif ((int)$enable_abandoned_cart === 1 && empty($cart_autoresponder)) { + } elseif ((int) $enable_abandoned_cart === 1 && empty($cart_autoresponder)) { // Display error message. $output .= $this->displayError($this->l('Select autoresponder for abandoned cart.')); } else { @@ -280,7 +283,7 @@ public function getContent() Configuration::updateValue('SMAILY_RSS_SORT_BY', $sort_by); $sort_order = Tools::getValue('SMAILY_RSS_SORT_ORDER'); - $sort_order = in_array($sort_order, array('asc', 'desc'), true) ? $sort_order : 'desc'; + $sort_order = in_array($sort_order, ['asc', 'desc'], true) ? $sort_order : 'desc'; Configuration::updateValue('SMAILY_RSS_SORT_ORDER', $sort_order); // Display success message. @@ -291,19 +294,19 @@ public function getContent() if (false !== unserialize(Configuration::get('SMAILY_SYNCRONIZE_ADDITIONAL'))) { $sync_array = unserialize(Configuration::get('SMAILY_SYNCRONIZE_ADDITIONAL')); } else { - $sync_array = array(); + $sync_array = []; } // Get abandoned cart syncronize additional values for template. if (false !== unserialize(Configuration::get('SMAILY_CART_SYNCRONIZE_ADDITIONAL'))) { $cart_sync_array = unserialize(Configuration::get('SMAILY_CART_SYNCRONIZE_ADDITIONAL')); } else { - $cart_sync_array = array(); + $cart_sync_array = []; } // Get customer cron token or generate random string when not set. if (false != Configuration::get('SMAILY_CUSTOMER_CRON_TOKEN')) { $customer_cron_token = pSQL(Configuration::get('SMAILY_CUSTOMER_CRON_TOKEN')); } else { - $customer_cron_token = uniqid(); + $customer_cron_token = uniqid(); } // Get cart cron token or generate random string when not set. if (false != Configuration::get('SMAILY_CART_CRON_TOKEN')) { @@ -320,39 +323,40 @@ public function getContent() // Assign variables to template if available. $this->context->smarty->assign( - array( - 'smaily_enable_cron' => pSQL(Configuration::get('SMAILY_ENABLE_CRON')), - 'smaily_enable_abandoned_cart' => pSQL(Configuration::get('SMAILY_ENABLE_ABANDONED_CART')), - 'smaily_subdomain' => pSQL(Configuration::get('SMAILY_SUBDOMAIN')), - 'smaily_username' => pSQL(Configuration::get('SMAILY_USERNAME')), - 'smaily_password' => pSQL(Configuration::get('SMAILY_PASSWORD')), - 'smaily_cart_autoresponder' => $cart_autoresponder, - 'smaily_abandoned_cart_time' => pSQL(Configuration::get('SMAILY_ABANDONED_CART_TIME')), - 'smaily_syncronize_additional' => $sync_array, - 'smaily_cart_syncronize_additional' => $cart_sync_array, - 'token' => Tools::getAdminTokenLite('AdminSmailyforprestashopAjax'), - 'smaily_rssfeed_url' => $this->buildRssUrlFromSettings(), - 'smaily_customer_cron_url' => Context::getContext()->link->getModuleLink( - 'smailyforprestashop', - 'SmailyCustomerCron', - array('token' => $customer_cron_token) - ), - 'smaily_customer_cron_token' => $customer_cron_token, - 'smaily_cart_cron_token' => $cart_cron_token, - 'smaily_cart_cron_url' => Context::getContext()->link->getModuleLink( - 'smailyforprestashop', - 'SmailyCartCron', - array('token' => $cart_cron_token) - ), - 'smaily_rss_available_category_ids' => $this->recursivelyNormalizeCategoriesForTemplate($categories), - 'smaily_rss_selected_category_id' => pSQL(Configuration::get('SMAILY_RSS_CATEGORY_ID')), - 'smaily_rss_limit' => pSQL(Configuration::get('SMAILY_RSS_LIMIT')), - 'smaily_rss_sort_by' => pSQL(Configuration::get('SMAILY_RSS_SORT_BY')), - 'smaily_rss_sort_order' => pSQL(Configuration::get('SMAILY_RSS_SORT_ORDER')), - 'smaily_optin_autoresponder' => $optin_autoresponder, - 'smaily_optin_enabled' => pSQL(Configuration::get('SMAILY_OPTIN_ENABLED')), - ) + [ + 'smaily_enable_cron' => pSQL(Configuration::get('SMAILY_ENABLE_CRON')), + 'smaily_enable_abandoned_cart' => pSQL(Configuration::get('SMAILY_ENABLE_ABANDONED_CART')), + 'smaily_subdomain' => pSQL(Configuration::get('SMAILY_SUBDOMAIN')), + 'smaily_username' => pSQL(Configuration::get('SMAILY_USERNAME')), + 'smaily_password' => pSQL(Configuration::get('SMAILY_PASSWORD')), + 'smaily_cart_autoresponder' => $cart_autoresponder, + 'smaily_abandoned_cart_time' => pSQL(Configuration::get('SMAILY_ABANDONED_CART_TIME')), + 'smaily_syncronize_additional' => $sync_array, + 'smaily_cart_syncronize_additional' => $cart_sync_array, + 'token' => Tools::getAdminTokenLite('AdminSmailyforprestashopAjax'), + 'smaily_rssfeed_url' => $this->buildRssUrlFromSettings(), + 'smaily_customer_cron_url' => Context::getContext()->link->getModuleLink( + 'smailyforprestashop', + 'SmailyCustomerCron', + ['token' => $customer_cron_token] + ), + 'smaily_customer_cron_token' => $customer_cron_token, + 'smaily_cart_cron_token' => $cart_cron_token, + 'smaily_cart_cron_url' => Context::getContext()->link->getModuleLink( + 'smailyforprestashop', + 'SmailyCartCron', + ['token' => $cart_cron_token] + ), + 'smaily_rss_available_category_ids' => $this->recursivelyNormalizeCategoriesForTemplate($categories), + 'smaily_rss_selected_category_id' => pSQL(Configuration::get('SMAILY_RSS_CATEGORY_ID')), + 'smaily_rss_limit' => pSQL(Configuration::get('SMAILY_RSS_LIMIT')), + 'smaily_rss_sort_by' => pSQL(Configuration::get('SMAILY_RSS_SORT_BY')), + 'smaily_rss_sort_order' => pSQL(Configuration::get('SMAILY_RSS_SORT_ORDER')), + 'smaily_optin_autoresponder' => $optin_autoresponder, + 'smaily_optin_enabled' => pSQL(Configuration::get('SMAILY_OPTIN_ENABLED')), + ] ); + // Display settings form. return $output .= $this->display(__FILE__, 'views/templates/admin/smaily_configure.tpl'); } @@ -360,19 +364,20 @@ public function getContent() /** * Recursively go through categories in array and normalize for template. * - * @param array $categories Enabled categories in Prestashop catalog. + * @param array $categories enabled categories in Prestashop catalog * - * @return array Categories in format: array(category id => category name). + * @return array categories in format: array(category id => category name) */ private function recursivelyNormalizeCategoriesForTemplate($categories) { - $normalized = array(); + $normalized = []; foreach ($categories as $category) { $normalized[$category['id_category']] = $category['name']; if (isset($category['children']) && is_array($category['children'])) { $normalized += $this->recursivelyNormalizeCategoriesForTemplate($category['children']); } } + return $normalized; } @@ -383,11 +388,11 @@ private function recursivelyNormalizeCategoriesForTemplate($categories) */ private function buildRssUrlFromSettings() { - $query_arguments = array( + $query_arguments = [ 'limit' => Configuration::get('SMAILY_RSS_LIMIT'), 'sort_by' => Configuration::get('SMAILY_RSS_SORT_BY'), 'sort_order' => Configuration::get('SMAILY_RSS_SORT_ORDER'), - ); + ]; if (Configuration::get('SMAILY_RSS_CATEGORY_ID') !== '') { $query_arguments['category_id'] = Configuration::get('SMAILY_RSS_CATEGORY_ID'); } @@ -403,9 +408,10 @@ private function buildRssUrlFromSettings() public function hookDisplayFooterBefore($params) { // Add subdomain to template. - $this->context->smarty->assign(array( + $this->context->smarty->assign([ 'smaily_subdomain' => pSQL(Configuration::get('SMAILY_SUBDOMAIN')), - )); + ]); + return $this->display(__FILE__, 'smaily_blocknewsletter.tpl'); } @@ -413,9 +419,10 @@ public function hookDisplayFooterBefore($params) public function hookDisplayLeftColumn($params) { // Add subdomain to template. - $this->context->smarty->assign(array( + $this->context->smarty->assign([ 'smaily_subdomain' => pSQL(Configuration::get('SMAILY_SUBDOMAIN')), - )); + ]); + return $this->display(__FILE__, 'smaily_blocknewsletter_column.tpl'); } @@ -432,19 +439,19 @@ public function hookDisplayBackOfficeHeader() if (Tools::getValue('configure') === $this->name) { // Add JQuerry before module javascript. $this->context->controller->addJquery(); - $this->context->controller->addJS(array($this->_path.'views/js/smaily_module.js')); + $this->context->controller->addJS([$this->_path . 'views/js/smaily_module.js']); // Add variables for js. $rss_url = Context::getContext()->link->getModuleLink('smailyforprestashop', 'SmailyRssFeed'); Media::addJsDef( - array( + [ 'controller_url' => $this->context->link->getAdminLink($this->controllerAdmin), 'smaily_rss_url' => $rss_url, - 'smailymessages' => array( + 'smailymessages' => [ 'no_autoresponders' => $this->l('No autoresponders created in Smaily!'), 'no_connection' => $this->l('There seems to be some problem with connecting to Smaily!'), - 'credentials_validated' => $this->l('Smaily credentials validated!') - ) - ) + 'credentials_validated' => $this->l('Smaily credentials validated!'), + ], + ] ); } } @@ -452,8 +459,9 @@ public function hookDisplayBackOfficeHeader() /** * Trigger Smaily Opt-in if customer joins with newsletter subscription. * - * @param array $params Array of parameters being passed to the hook function. - * @return bool Success of the operation. + * @param array $params array of parameters being passed to the hook function + * + * @return bool success of the operation */ public function hookActionCustomerAccountAdd($params) { @@ -464,33 +472,34 @@ public function hookActionCustomerAccountAdd($params) if (!Validate::isEmail($email)) { return false; } - $is_newsletter_checked = $params['newCustomer']->newsletter === "1"; - $is_subscription_optin_enabled = Configuration::get('SMAILY_OPTIN_ENABLED') === "1"; + $is_newsletter_checked = $params['newCustomer']->newsletter === '1'; + $is_subscription_optin_enabled = Configuration::get('SMAILY_OPTIN_ENABLED') === '1'; if (!$is_newsletter_checked || !$is_subscription_optin_enabled) { return false; } $autoresponder = Configuration::get('SMAILY_OPTIN_AUTORESPONDER'); $autoresponder_id = empty($autoresponder) ? '' : (int) $autoresponder; - $query = array( + $query = [ 'autoresponder' => $autoresponder_id, - 'addresses' => [['email' => $email]] - ); + 'addresses' => [['email' => $email]], + ]; $response = $this->callApi('autoresponder', $query, 'POST'); - if (array_key_exists('success', $response) && - isset($response['result']['code']) && - $response['result']['code'] === 101) { - return true; // All good. + if (array_key_exists('success', $response) + && isset($response['result']['code']) + && $response['result']['code'] === 101) { + return true; // All good. } else { // Supply query values and save log of unsuccesful operation. $this->logErrorWithFormatting( - "Failed to opt-in new customer with email: %s using autoresponder ID: %s. " . - "Smaily response code: %s, message: %s.", + 'Failed to opt-in new customer with email: %s using autoresponder ID: %s. ' . + 'Smaily response code: %s, message: %s.', $query['addresses'][0]['email'], $query['autoresponder'], $response['result']['code'], $response['result']['message'] ); + return false; } } @@ -499,13 +508,14 @@ public function hookActionCustomerAccountAdd($params) * Add error (severity 3) to Prestashop log with formatted arguments. * * @param string $message + * * @return void */ public function logErrorWithFormatting() { $args = func_get_args(); $message = call_user_func_array('sprintf', $args); - PrestaShopLogger::addLog("[SMAILY] " . $message, 3); + PrestaShopLogger::addLog('[SMAILY] ' . $message, 3); } /** @@ -513,20 +523,22 @@ public function logErrorWithFormatting() * * @param string $message * @param int $severity (1 is informative, 3 error) + * * @return void */ public function logMessageWithSeverity($message, $severity) { - PrestaShopLogger::addLog("[SMAILY] " . $message, $severity); + PrestaShopLogger::addLog('[SMAILY] ' . $message, $severity); } /** * Makes API call to Smaily. * - * @param string $endpoint Endpoint of smaily API without .php - * @param array $data Data to be sent to API. - * @param string $method 'GET' or 'POST' method. - * @return array $response Response from smaily api. + * @param string $endpoint Endpoint of smaily API without .php + * @param array $data data to be sent to API + * @param string $method 'GET' or 'POST' method + * + * @return array $response response from smaily api */ public function callApi($endpoint, array $data, $method = 'GET') { @@ -536,10 +548,10 @@ public function callApi($endpoint, array $data, $method = 'GET') $password = pSQL(Configuration::get('SMAILY_PASSWORD')); // API call. - $apiUrl = "https://" . $subdomain . ".sendsmaily.net/api/" . trim($endpoint, '/') . ".php"; + $apiUrl = 'https://' . $subdomain . '.sendsmaily.net/api/' . trim($endpoint, '/') . '.php'; $data = http_build_query($data); if ($method == 'GET') { - $apiUrl = $apiUrl.'?'.$data; + $apiUrl = $apiUrl . '?' . $data; } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $apiUrl); @@ -554,13 +566,14 @@ public function callApi($endpoint, array $data, $method = 'GET') // Error handling $http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE); if ((int) $http_status === 401) { - return $result = array('error' => $this->l('Check credentials, unauthorized!')); + return $result = ['error' => $this->l('Check credentials, unauthorized!')]; } if (curl_errno($ch)) { - return $result = array("error" => curl_error($ch)); + return $result = ['error' => curl_error($ch)]; } // Close connection and send response. curl_close($ch); - return array('success' => true, 'result' => $result); + + return ['success' => true, 'result' => $result]; } } diff --git a/src/translations/et.php b/src/translations/et.php index 310e7b6..695132a 100644 --- a/src/translations/et.php +++ b/src/translations/et.php @@ -1,7 +1,7 @@ smailyforprestashop_d51392bec6ce4585c3b03031b2197109'] = 'Smaily Moodul Prestashopile'; $_MODULE['<{smailyforprestashop}prestashop>smailyforprestashop_3e614e6ed6a76b403e9cc5ce027ac0a9'] = 'Smaily E-turunduse ja kontaktide automaatse sünkrooniseerimise moodul Prestashopile'; $_MODULE['<{smailyforprestashop}prestashop>smailyforprestashop_876f23178c29dc2552c0b48bf23cd9bd'] = 'Kas oled kindel, et tahad moodulit eemaldada?'; diff --git a/src/translations/index.php b/src/translations/index.php index a714670..691f051 100644 --- a/src/translations/index.php +++ b/src/translations/index.php @@ -21,11 +21,10 @@ * @copyright 2018 Smaily * @license GPL3 */ - -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: ../"); +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; diff --git a/src/upgrade/Upgrade-1.1.0.php b/src/upgrade/Upgrade-1.1.0.php index fbe4967..1f89627 100644 --- a/src/upgrade/Upgrade-1.1.0.php +++ b/src/upgrade/Upgrade-1.1.0.php @@ -21,22 +21,20 @@ * @copyright 2018 Smaily * @license GPL3 */ - if (!defined('_PS_VERSION_')) { exit; } /** * Upgrades database with smaily abandoned cart table. - * */ function upgrade_module_1_1_0() { return Db::getInstance()->execute( - 'CREATE TABLE IF NOT EXISTS '._DB_PREFIX_.'smaily_cart ( + 'CREATE TABLE IF NOT EXISTS ' . _DB_PREFIX_ . 'smaily_cart ( `id_smaily_cart` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , `id_customer` INT UNSIGNED NULL , `id_cart` INT UNSIGNED NULL , - `date_sent` DATETIME NOT NULL) ENGINE='._MYSQL_ENGINE_ + `date_sent` DATETIME NOT NULL) ENGINE=' . _MYSQL_ENGINE_ ); } diff --git a/src/upgrade/Upgrade-1.3.0.php b/src/upgrade/Upgrade-1.3.0.php index f463e1d..aac4176 100644 --- a/src/upgrade/Upgrade-1.3.0.php +++ b/src/upgrade/Upgrade-1.3.0.php @@ -21,7 +21,6 @@ * @copyright 2018 Smaily * @license GPL3 */ - if (!defined('_PS_VERSION_')) { exit; } @@ -32,7 +31,7 @@ function upgrade_module_1_3_0() { $sync_fields = unserialize(Configuration::get('SMAILY_CART_SYNCRONIZE_ADDITIONAL')); - + // Replace description_short->description. $description_short = array_search('description_short', $sync_fields); if ($description_short !== false) { @@ -42,7 +41,7 @@ function upgrade_module_1_3_0() } } - $cartEnabled = Configuration::get('SMAILY_ENABLE_ABANDONED_CART') === "1" ? true :false; + $cartEnabled = Configuration::get('SMAILY_ENABLE_ABANDONED_CART') === '1' ? true : false; // Add the previous default fields to sync array. if ($cartEnabled) { array_push($sync_fields, 'first_name', 'last_name'); diff --git a/src/upgrade/Upgrade-1.5.0.php b/src/upgrade/Upgrade-1.5.0.php index 5636a98..0043dc4 100644 --- a/src/upgrade/Upgrade-1.5.0.php +++ b/src/upgrade/Upgrade-1.5.0.php @@ -21,7 +21,6 @@ * @copyright 2018 Smaily * @license GPL3 */ - if (!defined('_PS_VERSION_')) { exit; } @@ -36,8 +35,9 @@ function upgrade_module_1_5_0($object) $cart_autoresponder = str_replace('\"', '"', $cart_autoresponder); $cart_autoresponder = unserialize($cart_autoresponder); $autoresponder_id = isset($cart_autoresponder['id']) ? $cart_autoresponder['id'] : ''; - return (Configuration::updateValue('SMAILY_CART_AUTORESPONDER', $autoresponder_id) && - Configuration::updateValue('SMAILY_OPTIN_ENABLED', 0) && - Configuration::updateValue('SMAILY_OPTIN_AUTORESPONDER', '') && - $object->registerHook('actionCustomerAccountAdd')); + + return Configuration::updateValue('SMAILY_CART_AUTORESPONDER', $autoresponder_id) + && Configuration::updateValue('SMAILY_OPTIN_ENABLED', 0) + && Configuration::updateValue('SMAILY_OPTIN_AUTORESPONDER', '') + && $object->registerHook('actionCustomerAccountAdd'); } diff --git a/src/upgrade/Upgrade-1.6.0.php b/src/upgrade/Upgrade-1.6.0.php index bdb5934..880c4cf 100644 --- a/src/upgrade/Upgrade-1.6.0.php +++ b/src/upgrade/Upgrade-1.6.0.php @@ -21,7 +21,6 @@ * @copyright 2021 Smaily * @license GPL3 */ - if (!defined('_PS_VERSION_')) { exit; } @@ -31,7 +30,7 @@ function upgrade_module_1_6_0() $customer_sync_fields = unserialize(Configuration::get('SMAILY_SYNCRONIZE_ADDITIONAL')); // Update firstname and lastname fields names. - $fields = array(); + $fields = []; foreach ($customer_sync_fields as $field) { if ($field === 'firstname') { $fields[] = 'first_name'; diff --git a/src/upgrade/index.php b/src/upgrade/index.php index a714670..691f051 100644 --- a/src/upgrade/index.php +++ b/src/upgrade/index.php @@ -21,11 +21,10 @@ * @copyright 2018 Smaily * @license GPL3 */ - -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: ../"); +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; diff --git a/src/views/index.php b/src/views/index.php index a714670..691f051 100644 --- a/src/views/index.php +++ b/src/views/index.php @@ -21,11 +21,10 @@ * @copyright 2018 Smaily * @license GPL3 */ - -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: ../"); +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; diff --git a/src/views/js/index.php b/src/views/js/index.php index a714670..691f051 100644 --- a/src/views/js/index.php +++ b/src/views/js/index.php @@ -21,11 +21,10 @@ * @copyright 2018 Smaily * @license GPL3 */ - -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: ../"); +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; diff --git a/src/views/templates/admin/index.php b/src/views/templates/admin/index.php index a714670..691f051 100644 --- a/src/views/templates/admin/index.php +++ b/src/views/templates/admin/index.php @@ -21,11 +21,10 @@ * @copyright 2018 Smaily * @license GPL3 */ - -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: ../"); +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; diff --git a/src/views/templates/hook/index.php b/src/views/templates/hook/index.php index a714670..691f051 100644 --- a/src/views/templates/hook/index.php +++ b/src/views/templates/hook/index.php @@ -21,11 +21,10 @@ * @copyright 2018 Smaily * @license GPL3 */ - -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: ../"); +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; diff --git a/src/views/templates/index.php b/src/views/templates/index.php index a714670..691f051 100644 --- a/src/views/templates/index.php +++ b/src/views/templates/index.php @@ -21,11 +21,10 @@ * @copyright 2018 Smaily * @license GPL3 */ - -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: ../"); +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; From d8a20aaa9b7eb2617ce83a9ecdbff16136188cef Mon Sep 17 00:00:00 2001 From: Kaarel Date: Wed, 3 Apr 2024 18:16:14 +0300 Subject: [PATCH 004/114] Add strict types --- src/.php-cs-fixer.dist.php | 2 ++ .../admin/AdminSmailyforprestashopAjaxController.php | 2 ++ src/controllers/front/SmailyCartCron.php | 2 ++ src/controllers/front/SmailyCustomerCron.php | 6 ++++-- src/controllers/front/SmailyRssFeed.php | 2 ++ src/smailyforprestashop.php | 2 ++ src/upgrade/Upgrade-1.1.0.php | 2 ++ src/upgrade/Upgrade-1.3.0.php | 2 ++ src/upgrade/Upgrade-1.5.0.php | 2 ++ src/upgrade/Upgrade-1.6.0.php | 2 ++ 10 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/.php-cs-fixer.dist.php b/src/.php-cs-fixer.dist.php index 5b524f8..943897c 100644 --- a/src/.php-cs-fixer.dist.php +++ b/src/.php-cs-fixer.dist.php @@ -1,5 +1,7 @@ Date: Fri, 5 Apr 2024 10:16:47 +0300 Subject: [PATCH 005/114] Update vscode extensions and settings --- .vscode/{extension.json => extensions.json} | 2 ++ .vscode/settings.json | 8 +++++++- 2 files changed, 9 insertions(+), 1 deletion(-) rename .vscode/{extension.json => extensions.json} (55%) diff --git a/.vscode/extension.json b/.vscode/extensions.json similarity index 55% rename from .vscode/extension.json rename to .vscode/extensions.json index 4065e8d..191b055 100644 --- a/.vscode/extension.json +++ b/.vscode/extensions.json @@ -1,5 +1,7 @@ { "recommendations": [ + "aswinkumar863.smarty-template-support", + "mblode.twig-language-2", "junstyle.php-cs-fixer", "devsense.phptools-vscode" ] diff --git a/.vscode/settings.json b/.vscode/settings.json index 92a750d..b7a67b6 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,5 +2,11 @@ "[php]": { "editor.defaultFormatter": "junstyle.php-cs-fixer" }, - "editor.formatOnSave": true + "editor.formatOnSave": true, + "files.associations": { + "*.html": "twig" + }, + "emmet.includeLanguages": { + "twig": "html" + }, } From 10b9de13280092520aef16675587ae7a7c894200 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Fri, 5 Apr 2024 10:17:21 +0300 Subject: [PATCH 006/114] Update module composer file --- src/composer.json | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/composer.json b/src/composer.json index f68a5fd..6bfb915 100644 --- a/src/composer.json +++ b/src/composer.json @@ -1,4 +1,27 @@ { + "name": "smaily/smailyforprestashop", + "version": "2.0.0", + "description": "Smaily integration module for PrestaShop", + "license": "GNU General Public License v3.0", + "authors": [ + { + "name": "Smaily" + } + ], + "autoload": { + "psr-4": { + "PrestaShop\\Module\\SmailyForPrestashop\\": "src/", + "PrestaShop\\Module\\SmailyForPrestashop\\Lib\\": "lib/" + } + }, + "require": { + "php": ">=7.2.0" + }, + "config": { + "preferred-install": "dist", + "prepend-autoloader": false + }, + "type": "prestashop-module", "require-dev": { "prestashop/php-dev-tools": "^4.3" }, From 666f8a6d035ec907f2755257721575ccdb672cb2 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Wed, 10 Apr 2024 11:21:44 +0300 Subject: [PATCH 007/114] Reimplement admin page forms --- src/config/admin/services.yml | 92 ++ src/config/routes.yml | 7 + src/lib/Api.php | 53 + src/smailyforprestashop.php | 910 +++++++++--------- .../ModuleConfigurationController.php | 98 ++ .../AbandonedCartFormDataConfiguration.php | 91 ++ .../Form/AbandonedCartFormDataProvider.php | 31 + src/src/Form/AbandonedCartFormType.php | 198 ++++ .../AccountConfigurationDataConfiguration.php | 99 ++ .../AccountConfigurationFormDataProvider.php | 31 + src/src/Form/AccountConfigurationFormType.php | 35 + src/src/Form/ChoiceProvider/Autoresponder.php | 64 ++ .../CustomerSyncFormDataConfiguration.php | 92 ++ src/src/Form/CustomerSyncFormDataProvider.php | 31 + src/src/Form/CustomerSyncFormType.php | 148 +++ 15 files changed, 1507 insertions(+), 473 deletions(-) create mode 100644 src/config/admin/services.yml create mode 100644 src/config/routes.yml create mode 100644 src/lib/Api.php create mode 100644 src/src/Controller/ModuleConfigurationController.php create mode 100644 src/src/Form/AbandonedCartFormDataConfiguration.php create mode 100644 src/src/Form/AbandonedCartFormDataProvider.php create mode 100644 src/src/Form/AbandonedCartFormType.php create mode 100644 src/src/Form/AccountConfigurationDataConfiguration.php create mode 100644 src/src/Form/AccountConfigurationFormDataProvider.php create mode 100644 src/src/Form/AccountConfigurationFormType.php create mode 100644 src/src/Form/ChoiceProvider/Autoresponder.php create mode 100644 src/src/Form/CustomerSyncFormDataConfiguration.php create mode 100644 src/src/Form/CustomerSyncFormDataProvider.php create mode 100644 src/src/Form/CustomerSyncFormType.php diff --git a/src/config/admin/services.yml b/src/config/admin/services.yml new file mode 100644 index 0000000..f2f0d87 --- /dev/null +++ b/src/config/admin/services.yml @@ -0,0 +1,92 @@ +services: + _defaults: + public: true + + # Choice providers + prestashop.module.smailyforprestashop.choice_provider.autoresponders: + class: 'PrestaShop\Module\SmailyForPrestashop\Form\ChoiceProvider\Autoresponder' + arguments: + - '@translator' + - '@prestashop.adapter.legacy.configuration' + + # Account credentials form. + prestashop.module.smailyforprestashop.form.type.account_credentials: + class: 'PrestaShop\Module\SmailyForPrestashop\Form\AccountConfigurationFormType' + parent: 'form.type.translatable.aware' + public: true + tags: + - { name: form.type } + + prestashop.module.smailyforprestashop.form.account_credentials_data_configuration: + class: PrestaShop\Module\SmailyForPrestashop\Form\AccountConfigurationDataConfiguration + arguments: ['@prestashop.adapter.legacy.configuration'] + + prestashop.module.smailyforprestashop.form.account_credentials_form_data_provider: + class: PrestaShop\Module\SmailyForPrestashop\Form\AccountConfigurationFormDataProvider + arguments: + - '@prestashop.module.smailyforprestashop.form.account_credentials_data_configuration' + + prestashop.module.smailyforprestashop.form.account_credentials_form_handler: + class: PrestaShop\PrestaShop\Core\Form\Handler + arguments: + - '@form.factory' + - '@prestashop.core.hook.dispatcher' + - '@prestashop.module.smailyforprestashop.form.account_credentials_form_data_provider' + - PrestaShop\Module\SmailyForPrestashop\Form\AccountConfigurationFormType + - AccountConfiguration + + # Customer sync form + prestashop.module.smailyforprestashop.form.type.cystomer_sync: + class: 'PrestaShop\Module\SmailyForPrestashop\Form\CustomerSyncFormType' + parent: 'form.type.translatable.aware' + public: true + arguments: + - $autoresponderChoices: '@=service("prestashop.module.smailyforprestashop.choice_provider.autoresponders").getChoices()' + tags: + - { name: form.type } + + prestashop.module.smailyforprestashop.form.cystomer_sync_form_data_configuration: + class: PrestaShop\Module\SmailyForPrestashop\Form\CustomerSyncFormDataConfiguration + arguments: ['@prestashop.adapter.legacy.configuration'] + + prestashop.module.smailyforprestashop.form.customer_sync_form_data_provider: + class: PrestaShop\Module\SmailyForPrestashop\Form\CustomerSyncFormDataProvider + arguments: + - '@prestashop.module.smailyforprestashop.form.cystomer_sync_form_data_configuration' + + prestashop.module.smailyforprestashop.form.customer_sync_form_handler: + class: PrestaShop\PrestaShop\Core\Form\Handler + arguments: + - '@form.factory' + - '@prestashop.core.hook.dispatcher' + - '@prestashop.module.smailyforprestashop.form.customer_sync_form_data_provider' + - PrestaShop\Module\SmailyForPrestashop\Form\CustomerSyncFormType + - CustomerSyncConfiguration + + # Abandoned cart form + prestashop.module.smailyforprestashop.form.type.abandoned_cart: + class: 'PrestaShop\Module\SmailyForPrestashop\Form\AbandonedCartFormType' + parent: 'form.type.translatable.aware' + public: true + arguments: + - $autoresponderChoices: '@=service("prestashop.module.smailyforprestashop.choice_provider.autoresponders").getChoices()' + tags: + - { name: form.type } + + prestashop.module.smailyforprestashop.form.abandoned_cart_form_data_configuration: + class: PrestaShop\Module\SmailyForPrestashop\Form\AbandonedCartFormDataConfiguration + arguments: ['@prestashop.adapter.legacy.configuration'] + + prestashop.module.smailyforprestashop.form.abandoned_cart_form_data_provider: + class: PrestaShop\Module\SmailyForPrestashop\Form\AbandonedCartFormDataProvider + arguments: + - '@prestashop.module.smailyforprestashop.form.abandoned_cart_form_data_configuration' + + prestashop.module.smailyforprestashop.form.abandoned_cart_form_handler: + class: PrestaShop\PrestaShop\Core\Form\Handler + arguments: + - '@form.factory' + - '@prestashop.core.hook.dispatcher' + - '@prestashop.module.smailyforprestashop.form.abandoned_cart_form_data_provider' + - PrestaShop\Module\SmailyForPrestashop\Form\AbandonedCartFormType + - AbandonedCartConfiguration diff --git a/src/config/routes.yml b/src/config/routes.yml new file mode 100644 index 0000000..e92cc86 --- /dev/null +++ b/src/config/routes.yml @@ -0,0 +1,7 @@ +smailyforprestashop_module_configuration: + path: /smailyforprestashop/configuration + methods: [GET, POST] + defaults: + _controller: PrestaShop\Module\SmailyForPrestashop\Controller\ModuleConfigurationController::index + _legacy_controller: SmailyForPrestashopConfiguration + _legacy_link: SmailyForPrestashopConfiguration diff --git a/src/lib/Api.php b/src/lib/Api.php new file mode 100644 index 0000000..6f32bec --- /dev/null +++ b/src/lib/Api.php @@ -0,0 +1,53 @@ +subdomain = $subdomain; + $this->username = $username; + $this->password = $password; + + $this->client = new Client([ + 'base_uri' => 'https://' . $subdomain . '.sendsmaily.net/', + 'http_errors' => false, + ]); + } + + public function listAutoresponders(int $limit = 100): ResponseInterface + { + return $this->client->request('GET', 'api/autoresponder.php', [ + 'auth' => [$this->username, $this->password], + 'query' => [ + 'limit' => $limit, + ], + ]); + } +} diff --git a/src/smailyforprestashop.php b/src/smailyforprestashop.php index b5e5a3f..5d2b2fd 100644 --- a/src/smailyforprestashop.php +++ b/src/smailyforprestashop.php @@ -1,6 +1,6 @@ . * * @author Smaily - * @copyright 2018 Smaily + * @copyright 2024 Smaily * @license GPL3 */ declare(strict_types=1); @@ -29,6 +29,9 @@ class SmailyForPrestashop extends Module { + /** + * @var string[] list of allowed sort by values + */ public static $allowed_sort_by_values = ['date_add', 'date_upd', 'name', 'price', 'id_product']; public function __construct() @@ -36,26 +39,24 @@ public function __construct() $this->name = 'smailyforprestashop'; $this->tab = 'advertising_marketing'; $this->module_key = 'bcea90ce4da2594c0d0179852db9a1e3'; - $this->version = '1.6.1'; + $this->version = '2.0.0'; $this->author = 'Smaily'; $this->need_instance = 0; $this->ps_versions_compliancy = [ - 'min' => '1.7.0', - 'max' => _PS_VERSION_, + 'min' => '8.0.0', + 'max' => '8.99.99', ]; $this->bootstrap = true; parent::__construct(); - $this->controllerAdmin = 'AdminSmailyForPrestashopAjax'; + $this->displayName = $this->trans('Smaily for PrestaShop', [], 'Modules.Smailyforprestashop.Admin'); + $this->description = $this->trans('Smaily email marketing and automation module for PrestaShop.', [], 'Modules.Smailyforprestashop.Admin'); - $this->displayName = $this->l('Smaily for Prestashop'); - $this->description = $this->l('Smaily email marketing and automation module for PrestaShop.'); - - $this->confirmUninstall = $this->l('Are you sure you want to uninstall?'); + $this->confirmUninstall = $this->trans('Are you sure you want to uninstall?', [], 'Modules.Smailyforprestashop.Admin'); } - public function install() + public function install(): bool { // Check if multistore is enabled if (Shop::isFeatureActive()) { @@ -64,33 +65,36 @@ public function install() if (!parent::install() // Check that the module can be attached to the header hook. - || !$this->registerHook('backOfficeHeader') - // Check that you can add Smaily settings field values. - || !Configuration::updateValue('SMAILY_ENABLE_CRON', 0) - || !Configuration::updateValue('SMAILY_ENABLE_ABANDONED_CART', 0) - || !Configuration::updateValue('SMAILY_CUSTOMER_CRON_TOKEN', '') - || !Configuration::updateValue('SMAILY_CART_CRON_TOKEN', '') + // || !$this->registerHook('backOfficeHeader') + // Account Configuration || !Configuration::updateValue('SMAILY_SUBDOMAIN', '') || !Configuration::updateValue('SMAILY_USERNAME', '') || !Configuration::updateValue('SMAILY_PASSWORD', '') + // Customer Sync + || !Configuration::updateValue('SMAILY_ENABLE_CUSTOMER_SYNC', false) + || !Configuration::updateValue('SMAILY_CUSTOMER_CRON_TOKEN', uniqid()) + || !Configuration::updateValue('SMAILY_SYNCRONIZE_ADDITIONAL', serialize([])) + || !Configuration::updateValue('SMAILY_OPTIN_ENABLED', false) + || !Configuration::updateValue('SMAILY_OPTIN_AUTORESPONDER', '') + // Abandoned Cart + || !Configuration::updateValue('SMAILY_ENABLE_ABANDONED_CART', 0) + || !Configuration::updateValue('SMAILY_CART_CRON_TOKEN', uniqid()) || !Configuration::updateValue('SMAILY_CART_AUTORESPONDER', '') || !Configuration::updateValue('SMAILY_ABANDONED_CART_TIME', '') - || !Configuration::updateValue('SMAILY_SYNCRONIZE_ADDITIONAL', serialize([])) || !Configuration::updateValue('SMAILY_CART_SYNCRONIZE_ADDITIONAL', serialize([])) + // RSS || !Configuration::updateValue('SMAILY_RSS_CATEGORY_ID', '') || !Configuration::updateValue('SMAILY_RSS_LIMIT', '50') || !Configuration::updateValue('SMAILY_RSS_SORT_BY', 'date_upd') || !Configuration::updateValue('SMAILY_RSS_SORT_ORDER', 'desc') - || !Configuration::updateValue('SMAILY_OPTIN_ENABLED', 0) - || !Configuration::updateValue('SMAILY_OPTIN_AUTORESPONDER', '') // Add tab to sidebar - || !$this->installTab('AdminAdmin', 'AdminSmailyforprestashopAjax', 'Smaily for PrestaShop') + // || !$this->installTab('AdminAdmin', 'AdminSmailyforprestashopAjax', 'Smaily for PrestaShop') // Add Newsletter subscription form. - || !$this->registerHook('footerBefore') - || !$this->registerHook('leftColumn') - || !$this->registerHook('rightColumn') + // || !$this->registerHook('footerBefore') + // || !$this->registerHook('leftColumn') + // || !$this->registerHook('rightColumn') // User has option to trigger opt-in when customer joins store & newsletter through sign-up. - || !$this->registerHook('actionCustomerAccountAdd') + // || !$this->registerHook('actionCustomerAccountAdd') ) { return false; } @@ -107,44 +111,34 @@ public function install() return true; } - public function installTab($parent_class, $class_name, $name) - { - $tab = new Tab(); - $tab->id_parent = (int) Tab::getIdFromClassName($parent_class); - $tab->name = []; - foreach (Language::getLanguages(true) as $lang) { - $tab->name[$lang['id_lang']] = $name; - } - $tab->class_name = $class_name; - $tab->module = $this->name; - $tab->active = 0; - - return $tab->add(); - } - - public function uninstall() + public function uninstall(): bool { if (!parent::uninstall() // Delete settings created by module. - || !Configuration::deleteByName('SMAILY_ENABLE_CRON') - || !Configuration::deleteByName('SMAILY_ENABLE_ABANDONED_CART') - || !Configuration::deleteByName('SMAILY_CUSTOMER_CRON_TOKEN') - || !Configuration::deleteByName('SMAILY_CART_CRON_TOKEN') + // Account || !Configuration::deleteByName('SMAILY_SUBDOMAIN') || !Configuration::deleteByName('SMAILY_USERNAME') || !Configuration::deleteByName('SMAILY_PASSWORD') + // Customer sync + || !Configuration::deleteByName('SMAILY_ENABLE_CUSTOMER_SYNC') + || !Configuration::deleteByName('SMAILY_CUSTOMER_CRON_TOKEN') + || !Configuration::deleteByName('SMAILY_SYNCRONIZE_ADDITIONAL') + || !Configuration::deleteByName('SMAILY_OPTIN_ENABLED') + || !Configuration::deleteByName('SMAILY_OPTIN_AUTORESPONDER') + // Abandoned cart + || !Configuration::deleteByName('SMAILY_ENABLE_ABANDONED_CART') + || !Configuration::deleteByName('SMAILY_CART_CRON_TOKEN') || !Configuration::deleteByName('SMAILY_CART_AUTORESPONDER') || !Configuration::deleteByName('SMAILY_ABANDONED_CART_TIME') - || !Configuration::deleteByName('SMAILY_SYNCRONIZE_ADDITIONAL') || !Configuration::deleteByName('SMAILY_CART_SYNCRONIZE_ADDITIONAL') + // Rss || !Configuration::deleteByName('SMAILY_RSS_CATEGORY_ID') || !Configuration::deleteByName('SMAILY_RSS_LIMIT') || !Configuration::deleteByName('SMAILY_RSS_SORT_BY') || !Configuration::deleteByName('SMAILY_RSS_SORT_ORDER') - || !Configuration::deleteByName('SMAILY_OPTIN_ENABLED') - || !Configuration::deleteByName('SMAILY_OPTIN_AUTORESPONDER') - // Remove sideTab of smaily module. - || !$this->uninstallTab('AdminSmailyforprestashopAjax') + + // Remove sideTab of smaily module. + // || !$this->uninstallTab('AdminSmailyforprestashopAjax') ) { return false; } @@ -153,429 +147,399 @@ public function uninstall() return true; } - public function uninstallTab($class_name) + public function getContent(): void { - // Retrieve Tab ID - $id_tab = (int) Tab::getIdFromClassName($class_name); - // Load tab - $tab = new Tab((int) $id_tab); - - // Delete it - return $tab->delete(); + $route = $this->get('router')->generate('smailyforprestashop_module_configuration'); + Tools::redirectAdmin($route); + // $this->context->controller->addJquery(); + + // // Remove credentials button. + // if (Tools::isSubmit('smaily_remove_credentials')) { + // if (Configuration::updateValue('SMAILY_SUBDOMAIN', '') + // && Configuration::updateValue('SMAILY_USERNAME', '') + // && Configuration::updateValue('SMAILY_PASSWORD', '') + // ) { + // // Disable customer sync. + // Configuration::updateValue('SMAILY_ENABLE_CRON', 0); + // // Disable abandoned cart cron and remove all autoresponders. + // Configuration::updateValue('SMAILY_ENABLE_ABANDONED_CART', 0); + // Configuration::updateValue('SMAILY_CART_AUTORESPONDER', ''); + // Configuration::updateValue('SMAILY_OPTIN_AUTORESPONDER', ''); + // // Return success message. + // $output .= $this->displayConfirmation($this->trans('Credentials removed!')); + // } else { + // // Return error message + // $output .= $this->displayError($this->trans('Something went wrong removing credentials')); + // } + // } + + // // Customer sync form. + // if (Tools::isSubmit('smaily_submit_configuration')) { + // // Enable Cron. + // $enable_cron = pSQL(Tools::getValue('SMAILY_ENABLE_CRON')); + // // Customer cron token. + // $customer_cron_token = pSQL(Tools::getValue('SMAILY_CUSTOMER_CRON_TOKEN')); + // $customer_cron_token = trim(Tools::stripslashes($customer_cron_token)); + // if (empty($customer_cron_token)) { + // $customer_cron_token = uniqid(); + // } + + // // Syncronize additional. + // $syncronize_additional = Tools::getValue('SMAILY_SYNCRONIZE_ADDITIONAL'); + // $escaped_sync_additional = []; + // if (!empty($syncronize_additional)) { + // foreach ($syncronize_additional as $value) { + // $escaped_sync_additional[] = pSQL($value); + // } + // } + // $optin_enabled = pSQL(Tools::getValue('SMAILY_OPTIN_ENABLED')); + // $customer_join_autoresponder = pSQL(Tools::getValue('SMAILY_OPTIN_AUTORESPONDER')); + // // Check if subdomain is saved to db to verify that credentials are validated. + // if (empty(Configuration::get('SMAILY_SUBDOMAIN'))) { + // // Display error message. + // $output .= $this->displayError($this->trans('Please validate credentials before saving.')); + // } else { + // // Update settings. + // Configuration::updateValue('SMAILY_ENABLE_CRON', $enable_cron); + // Configuration::updateValue('SMAILY_CUSTOMER_CRON_TOKEN', $customer_cron_token); + // Configuration::updateValue('SMAILY_SYNCRONIZE_ADDITIONAL', serialize($escaped_sync_additional)); + // Configuration::updateValue('SMAILY_OPTIN_ENABLED', $optin_enabled); + // Configuration::updateValue('SMAILY_OPTIN_AUTORESPONDER', $customer_join_autoresponder); + // // Display success message. + // $output .= $this->displayConfirmation($this->trans('Settings updated')); + // } + // } + + // // Abandoned cart form. + // if (Tools::isSubmit('smaily_submit_abandoned_cart')) { + // // Enable Abandoned Cart. + // $enable_abandoned_cart = pSQL(Tools::getValue('SMAILY_ENABLE_ABANDONED_CART')); + // // Abandoned cart delay time + // $abandoned_cart_time = pSQL(Tools::getValue('SMAILY_ABANDONED_CART_TIME')); + // $abandoned_cart_time = (int) trim(Tools::stripslashes($abandoned_cart_time)); + // // Cart cron token. + // $cart_cron_token = pSQL(Tools::getValue('SMAILY_CART_CRON_TOKEN')); + // $cart_cron_token = trim(Tools::stripslashes($cart_cron_token)); + // if (empty($cart_cron_token)) { + // $cart_cron_token = uniqid(); + // } + // // Abandoned cart Autoresponder + // $cart_autoresponder = pSQL(Tools::getValue('SMAILY_CART_AUTORESPONDER')); + // // Syncronize additional for abandoned cart template. + // $cart_syncronize_additional = Tools::getValue('SMAILY_CART_SYNCRONIZE_ADDITIONAL'); + // $cart_escaped_sync_additional = []; + // if (!empty($cart_syncronize_additional)) { + // foreach ($cart_syncronize_additional as $value) { + // $cart_escaped_sync_additional[] = pSQL($value); + // } + // } + // // Validate autoresponder time and autoresponder for cart. + // if ($abandoned_cart_time < 15) { + // // Display error message. + // $output .= $this->displayError($this->trans('Abandoned cart delay has to be atleast 15 minutes.')); + // } elseif ((int) $enable_abandoned_cart === 1 && empty($cart_autoresponder)) { + // // Display error message. + // $output .= $this->displayError($this->trans('Select autoresponder for abandoned cart.')); + // } else { + // Configuration::updateValue('SMAILY_ENABLE_ABANDONED_CART', $enable_abandoned_cart); + // Configuration::updateValue('SMAILY_CART_AUTORESPONDER', $cart_autoresponder); + // Configuration::updateValue('SMAILY_ABANDONED_CART_TIME', $abandoned_cart_time); + // Configuration::updateValue('SMAILY_CART_CRON_TOKEN', $cart_cron_token); + // Configuration::updateValue( + // 'SMAILY_CART_SYNCRONIZE_ADDITIONAL', + // serialize($cart_escaped_sync_additional) + // ); + // // Display success message. + // $output .= $this->displayConfirmation($this->trans('Abandoned cart settings updated')); + // } + // } + // // RSS + // if (Tools::isSubmit('smaily_submit_rss')) { + // // Update settings. + // $category_id = (int) Tools::getValue('SMAILY_RSS_CATEGORY_ID'); + // $category_id = $category_id <= 0 ? false : $category_id; + // Configuration::updateValue('SMAILY_RSS_CATEGORY_ID', $category_id); + + // $limit = (int) Tools::getValue('SMAILY_RSS_LIMIT'); + // $limit = $limit >= 1 && $limit <= 250 ? $limit : 50; + // Configuration::updateValue('SMAILY_RSS_LIMIT', $limit); + + // $sort_by = Tools::getValue('SMAILY_RSS_SORT_BY'); + // $sort_by = in_array($sort_by, SmailyForPrestashop::$allowed_sort_by_values, true) ? $sort_by : 'date_upd'; + // Configuration::updateValue('SMAILY_RSS_SORT_BY', $sort_by); + + // $sort_order = Tools::getValue('SMAILY_RSS_SORT_ORDER'); + // $sort_order = in_array($sort_order, ['asc', 'desc'], true) ? $sort_order : 'desc'; + // Configuration::updateValue('SMAILY_RSS_SORT_ORDER', $sort_order); + + // // Display success message. + // $output .= $this->displayConfirmation($this->trans('RSS settings updated')); + // } + + // // Get syncronize additional values for template. + // if (false !== unserialize(Configuration::get('SMAILY_SYNCRONIZE_ADDITIONAL'))) { + // $sync_array = unserialize(Configuration::get('SMAILY_SYNCRONIZE_ADDITIONAL')); + // } else { + // $sync_array = []; + // } + // // Get abandoned cart syncronize additional values for template. + // if (false !== unserialize(Configuration::get('SMAILY_CART_SYNCRONIZE_ADDITIONAL'))) { + // $cart_sync_array = unserialize(Configuration::get('SMAILY_CART_SYNCRONIZE_ADDITIONAL')); + // } else { + // $cart_sync_array = []; + // } + // // Get customer cron token or generate random string when not set. + // if (false != Configuration::get('SMAILY_CUSTOMER_CRON_TOKEN')) { + // $customer_cron_token = pSQL(Configuration::get('SMAILY_CUSTOMER_CRON_TOKEN')); + // } else { + // $customer_cron_token = uniqid(); + // } + // // Get cart cron token or generate random string when not set. + // if (false != Configuration::get('SMAILY_CART_CRON_TOKEN')) { + // $cart_cron_token = pSQL(Configuration::get('SMAILY_CART_CRON_TOKEN')); + // } else { + // $cart_cron_token = uniqid(); + // } + // // Get customer join autoresponder values for template. + // $optin_autoresponder = pSQL(Configuration::get('SMAILY_OPTIN_AUTORESPONDER')); + // // Get abandoned cart autoresponder values for template. + // $cart_autoresponder = pSQL(Configuration::get('SMAILY_CART_AUTORESPONDER')); + + // $categories = Category::getNestedCategories(null, Context::getContext()->language->id); + + // // Assign variables to template if available. + // $this->context->smarty->assign( + // [ + // 'smaily_enable_cron' => pSQL(Configuration::get('SMAILY_ENABLE_CRON')), + // 'smaily_enable_abandoned_cart' => pSQL(Configuration::get('SMAILY_ENABLE_ABANDONED_CART')), + // 'smaily_subdomain' => pSQL(Configuration::get('SMAILY_SUBDOMAIN')), + // 'smaily_username' => pSQL(Configuration::get('SMAILY_USERNAME')), + // 'smaily_password' => pSQL(Configuration::get('SMAILY_PASSWORD')), + // 'smaily_cart_autoresponder' => $cart_autoresponder, + // 'smaily_abandoned_cart_time' => pSQL(Configuration::get('SMAILY_ABANDONED_CART_TIME')), + // 'smaily_syncronize_additional' => $sync_array, + // 'smaily_cart_syncronize_additional' => $cart_sync_array, + // 'token' => Tools::getAdminTokenLite('AdminSmailyforprestashopAjax'), + // 'smaily_rssfeed_url' => $this->buildRssUrlFromSettings(), + // 'smaily_customer_cron_url' => Context::getContext()->link->getModuleLink( + // 'smailyforprestashop', + // 'SmailyCustomerCron', + // ['token' => $customer_cron_token] + // ), + // 'smaily_customer_cron_token' => $customer_cron_token, + // 'smaily_cart_cron_token' => $cart_cron_token, + // 'smaily_cart_cron_url' => Context::getContext()->link->getModuleLink( + // 'smailyforprestashop', + // 'SmailyCartCron', + // ['token' => $cart_cron_token] + // ), + // 'smaily_rss_available_category_ids' => $this->recursivelyNormalizeCategoriesForTemplate($categories), + // 'smaily_rss_selected_category_id' => pSQL(Configuration::get('SMAILY_RSS_CATEGORY_ID')), + // 'smaily_rss_limit' => pSQL(Configuration::get('SMAILY_RSS_LIMIT')), + // 'smaily_rss_sort_by' => pSQL(Configuration::get('SMAILY_RSS_SORT_BY')), + // 'smaily_rss_sort_order' => pSQL(Configuration::get('SMAILY_RSS_SORT_ORDER')), + // 'smaily_optin_autoresponder' => $optin_autoresponder, + // 'smaily_optin_enabled' => pSQL(Configuration::get('SMAILY_OPTIN_ENABLED')), + // ] + // ); + + // // Display settings form. + // return $output .= $this->display(__FILE__, 'views/templates/admin/smaily_configure.tpl'); } - public function getContent() - { - $output = null; - $this->context->controller->addJquery(); - - // Remove credentials button. - if (Tools::isSubmit('smaily_remove_credentials')) { - if (Configuration::updateValue('SMAILY_SUBDOMAIN', '') - && Configuration::updateValue('SMAILY_USERNAME', '') - && Configuration::updateValue('SMAILY_PASSWORD', '') - ) { - // Disable customer sync. - Configuration::updateValue('SMAILY_ENABLE_CRON', 0); - // Disable abandoned cart cron and remove all autoresponders. - Configuration::updateValue('SMAILY_ENABLE_ABANDONED_CART', 0); - Configuration::updateValue('SMAILY_CART_AUTORESPONDER', ''); - Configuration::updateValue('SMAILY_OPTIN_AUTORESPONDER', ''); - // Return success message. - $output .= $this->displayConfirmation($this->l('Credentials removed!')); - } else { - // Return error message - $output .= $this->displayError($this->l('Something went wrong removing credentials')); - } - } - - // Customer sync form. - if (Tools::isSubmit('smaily_submit_configuration')) { - // Enable Cron. - $enable_cron = pSQL(Tools::getValue('SMAILY_ENABLE_CRON')); - // Customer cron token. - $customer_cron_token = pSQL(Tools::getValue('SMAILY_CUSTOMER_CRON_TOKEN')); - $customer_cron_token = trim(Tools::stripslashes($customer_cron_token)); - if (empty($customer_cron_token)) { - $customer_cron_token = uniqid(); - } - - // Syncronize additional. - $syncronize_additional = Tools::getValue('SMAILY_SYNCRONIZE_ADDITIONAL'); - $escaped_sync_additional = []; - if (!empty($syncronize_additional)) { - foreach ($syncronize_additional as $value) { - $escaped_sync_additional[] = pSQL($value); - } - } - $optin_enabled = pSQL(Tools::getValue('SMAILY_OPTIN_ENABLED')); - $customer_join_autoresponder = pSQL(Tools::getValue('SMAILY_OPTIN_AUTORESPONDER')); - // Check if subdomain is saved to db to verify that credentials are validated. - if (empty(Configuration::get('SMAILY_SUBDOMAIN'))) { - // Display error message. - $output .= $this->displayError($this->l('Please validate credentials before saving.')); - } else { - // Update settings. - Configuration::updateValue('SMAILY_ENABLE_CRON', $enable_cron); - Configuration::updateValue('SMAILY_CUSTOMER_CRON_TOKEN', $customer_cron_token); - Configuration::updateValue('SMAILY_SYNCRONIZE_ADDITIONAL', serialize($escaped_sync_additional)); - Configuration::updateValue('SMAILY_OPTIN_ENABLED', $optin_enabled); - Configuration::updateValue('SMAILY_OPTIN_AUTORESPONDER', $customer_join_autoresponder); - // Display success message. - $output .= $this->displayConfirmation($this->l('Settings updated')); - } - } - - // Abandoned cart form. - if (Tools::isSubmit('smaily_submit_abandoned_cart')) { - // Enable Abandoned Cart. - $enable_abandoned_cart = pSQL(Tools::getValue('SMAILY_ENABLE_ABANDONED_CART')); - // Abandoned cart delay time - $abandoned_cart_time = pSQL(Tools::getValue('SMAILY_ABANDONED_CART_TIME')); - $abandoned_cart_time = (int) trim(Tools::stripslashes($abandoned_cart_time)); - // Cart cron token. - $cart_cron_token = pSQL(Tools::getValue('SMAILY_CART_CRON_TOKEN')); - $cart_cron_token = trim(Tools::stripslashes($cart_cron_token)); - if (empty($cart_cron_token)) { - $cart_cron_token = uniqid(); - } - // Abandoned cart Autoresponder - $cart_autoresponder = pSQL(Tools::getValue('SMAILY_CART_AUTORESPONDER')); - // Syncronize additional for abandoned cart template. - $cart_syncronize_additional = Tools::getValue('SMAILY_CART_SYNCRONIZE_ADDITIONAL'); - $cart_escaped_sync_additional = []; - if (!empty($cart_syncronize_additional)) { - foreach ($cart_syncronize_additional as $value) { - $cart_escaped_sync_additional[] = pSQL($value); - } - } - // Validate autoresponder time and autoresponder for cart. - if ($abandoned_cart_time < 15) { - // Display error message. - $output .= $this->displayError($this->l('Abandoned cart delay has to be atleast 15 minutes.')); - } elseif ((int) $enable_abandoned_cart === 1 && empty($cart_autoresponder)) { - // Display error message. - $output .= $this->displayError($this->l('Select autoresponder for abandoned cart.')); - } else { - Configuration::updateValue('SMAILY_ENABLE_ABANDONED_CART', $enable_abandoned_cart); - Configuration::updateValue('SMAILY_CART_AUTORESPONDER', $cart_autoresponder); - Configuration::updateValue('SMAILY_ABANDONED_CART_TIME', $abandoned_cart_time); - Configuration::updateValue('SMAILY_CART_CRON_TOKEN', $cart_cron_token); - Configuration::updateValue( - 'SMAILY_CART_SYNCRONIZE_ADDITIONAL', - serialize($cart_escaped_sync_additional) - ); - // Display success message. - $output .= $this->displayConfirmation($this->l('Abandoned cart settings updated')); - } - } - // RSS - if (Tools::isSubmit('smaily_submit_rss')) { - // Update settings. - $category_id = (int) Tools::getValue('SMAILY_RSS_CATEGORY_ID'); - $category_id = $category_id <= 0 ? false : $category_id; - Configuration::updateValue('SMAILY_RSS_CATEGORY_ID', $category_id); - - $limit = (int) Tools::getValue('SMAILY_RSS_LIMIT'); - $limit = $limit >= 1 && $limit <= 250 ? $limit : 50; - Configuration::updateValue('SMAILY_RSS_LIMIT', $limit); - - $sort_by = Tools::getValue('SMAILY_RSS_SORT_BY'); - $sort_by = in_array($sort_by, SmailyForPrestashop::$allowed_sort_by_values, true) ? $sort_by : 'date_upd'; - Configuration::updateValue('SMAILY_RSS_SORT_BY', $sort_by); - - $sort_order = Tools::getValue('SMAILY_RSS_SORT_ORDER'); - $sort_order = in_array($sort_order, ['asc', 'desc'], true) ? $sort_order : 'desc'; - Configuration::updateValue('SMAILY_RSS_SORT_ORDER', $sort_order); - - // Display success message. - $output .= $this->displayConfirmation($this->l('RSS settings updated')); - } - - // Get syncronize additional values for template. - if (false !== unserialize(Configuration::get('SMAILY_SYNCRONIZE_ADDITIONAL'))) { - $sync_array = unserialize(Configuration::get('SMAILY_SYNCRONIZE_ADDITIONAL')); - } else { - $sync_array = []; - } - // Get abandoned cart syncronize additional values for template. - if (false !== unserialize(Configuration::get('SMAILY_CART_SYNCRONIZE_ADDITIONAL'))) { - $cart_sync_array = unserialize(Configuration::get('SMAILY_CART_SYNCRONIZE_ADDITIONAL')); - } else { - $cart_sync_array = []; - } - // Get customer cron token or generate random string when not set. - if (false != Configuration::get('SMAILY_CUSTOMER_CRON_TOKEN')) { - $customer_cron_token = pSQL(Configuration::get('SMAILY_CUSTOMER_CRON_TOKEN')); - } else { - $customer_cron_token = uniqid(); - } - // Get cart cron token or generate random string when not set. - if (false != Configuration::get('SMAILY_CART_CRON_TOKEN')) { - $cart_cron_token = pSQL(Configuration::get('SMAILY_CART_CRON_TOKEN')); - } else { - $cart_cron_token = uniqid(); - } - // Get customer join autoresponder values for template. - $optin_autoresponder = pSQL(Configuration::get('SMAILY_OPTIN_AUTORESPONDER')); - // Get abandoned cart autoresponder values for template. - $cart_autoresponder = pSQL(Configuration::get('SMAILY_CART_AUTORESPONDER')); - - $categories = Category::getNestedCategories(null, Context::getContext()->language->id); - - // Assign variables to template if available. - $this->context->smarty->assign( - [ - 'smaily_enable_cron' => pSQL(Configuration::get('SMAILY_ENABLE_CRON')), - 'smaily_enable_abandoned_cart' => pSQL(Configuration::get('SMAILY_ENABLE_ABANDONED_CART')), - 'smaily_subdomain' => pSQL(Configuration::get('SMAILY_SUBDOMAIN')), - 'smaily_username' => pSQL(Configuration::get('SMAILY_USERNAME')), - 'smaily_password' => pSQL(Configuration::get('SMAILY_PASSWORD')), - 'smaily_cart_autoresponder' => $cart_autoresponder, - 'smaily_abandoned_cart_time' => pSQL(Configuration::get('SMAILY_ABANDONED_CART_TIME')), - 'smaily_syncronize_additional' => $sync_array, - 'smaily_cart_syncronize_additional' => $cart_sync_array, - 'token' => Tools::getAdminTokenLite('AdminSmailyforprestashopAjax'), - 'smaily_rssfeed_url' => $this->buildRssUrlFromSettings(), - 'smaily_customer_cron_url' => Context::getContext()->link->getModuleLink( - 'smailyforprestashop', - 'SmailyCustomerCron', - ['token' => $customer_cron_token] - ), - 'smaily_customer_cron_token' => $customer_cron_token, - 'smaily_cart_cron_token' => $cart_cron_token, - 'smaily_cart_cron_url' => Context::getContext()->link->getModuleLink( - 'smailyforprestashop', - 'SmailyCartCron', - ['token' => $cart_cron_token] - ), - 'smaily_rss_available_category_ids' => $this->recursivelyNormalizeCategoriesForTemplate($categories), - 'smaily_rss_selected_category_id' => pSQL(Configuration::get('SMAILY_RSS_CATEGORY_ID')), - 'smaily_rss_limit' => pSQL(Configuration::get('SMAILY_RSS_LIMIT')), - 'smaily_rss_sort_by' => pSQL(Configuration::get('SMAILY_RSS_SORT_BY')), - 'smaily_rss_sort_order' => pSQL(Configuration::get('SMAILY_RSS_SORT_ORDER')), - 'smaily_optin_autoresponder' => $optin_autoresponder, - 'smaily_optin_enabled' => pSQL(Configuration::get('SMAILY_OPTIN_ENABLED')), - ] - ); - - // Display settings form. - return $output .= $this->display(__FILE__, 'views/templates/admin/smaily_configure.tpl'); - } - - /** - * Recursively go through categories in array and normalize for template. - * - * @param array $categories enabled categories in Prestashop catalog - * - * @return array categories in format: array(category id => category name) - */ - private function recursivelyNormalizeCategoriesForTemplate($categories) - { - $normalized = []; - foreach ($categories as $category) { - $normalized[$category['id_category']] = $category['name']; - if (isset($category['children']) && is_array($category['children'])) { - $normalized += $this->recursivelyNormalizeCategoriesForTemplate($category['children']); - } - } - - return $normalized; - } - - /** - * Make RSS URL with query parameters. - * - * @return string $url - */ - private function buildRssUrlFromSettings() - { - $query_arguments = [ - 'limit' => Configuration::get('SMAILY_RSS_LIMIT'), - 'sort_by' => Configuration::get('SMAILY_RSS_SORT_BY'), - 'sort_order' => Configuration::get('SMAILY_RSS_SORT_ORDER'), - ]; - if (Configuration::get('SMAILY_RSS_CATEGORY_ID') !== '') { - $query_arguments['category_id'] = Configuration::get('SMAILY_RSS_CATEGORY_ID'); - } - - return Context::getContext()->link->getModuleLink( - 'smailyforprestashop', - 'SmailyRssFeed', - $query_arguments - ); - } - - // Display Block Newsletter in footer. - public function hookDisplayFooterBefore($params) - { - // Add subdomain to template. - $this->context->smarty->assign([ - 'smaily_subdomain' => pSQL(Configuration::get('SMAILY_SUBDOMAIN')), - ]); - - return $this->display(__FILE__, 'smaily_blocknewsletter.tpl'); - } - - // Display Block Newsletter in left column. - public function hookDisplayLeftColumn($params) - { - // Add subdomain to template. - $this->context->smarty->assign([ - 'smaily_subdomain' => pSQL(Configuration::get('SMAILY_SUBDOMAIN')), - ]); - - return $this->display(__FILE__, 'smaily_blocknewsletter_column.tpl'); - } - - // Display Block Newsletter in right column. - public function hookDisplayRightColumn($params) - { - return $this->hookDisplayLeftColumn($params); - } - - // Add JQuerry and module javascript. - public function hookDisplayBackOfficeHeader() - { - // Add module javascript. - if (Tools::getValue('configure') === $this->name) { - // Add JQuerry before module javascript. - $this->context->controller->addJquery(); - $this->context->controller->addJS([$this->_path . 'views/js/smaily_module.js']); - // Add variables for js. - $rss_url = Context::getContext()->link->getModuleLink('smailyforprestashop', 'SmailyRssFeed'); - Media::addJsDef( - [ - 'controller_url' => $this->context->link->getAdminLink($this->controllerAdmin), - 'smaily_rss_url' => $rss_url, - 'smailymessages' => [ - 'no_autoresponders' => $this->l('No autoresponders created in Smaily!'), - 'no_connection' => $this->l('There seems to be some problem with connecting to Smaily!'), - 'credentials_validated' => $this->l('Smaily credentials validated!'), - ], - ] - ); - } - } - - /** - * Trigger Smaily Opt-in if customer joins with newsletter subscription. - * - * @param array $params array of parameters being passed to the hook function - * - * @return bool success of the operation - */ - public function hookActionCustomerAccountAdd($params) - { - if (empty($params['newCustomer'])) { - return false; - } - $email = $params['newCustomer']->email; - if (!Validate::isEmail($email)) { - return false; - } - $is_newsletter_checked = $params['newCustomer']->newsletter === '1'; - $is_subscription_optin_enabled = Configuration::get('SMAILY_OPTIN_ENABLED') === '1'; - if (!$is_newsletter_checked || !$is_subscription_optin_enabled) { - return false; - } - - $autoresponder = Configuration::get('SMAILY_OPTIN_AUTORESPONDER'); - $autoresponder_id = empty($autoresponder) ? '' : (int) $autoresponder; - $query = [ - 'autoresponder' => $autoresponder_id, - 'addresses' => [['email' => $email]], - ]; - $response = $this->callApi('autoresponder', $query, 'POST'); - if (array_key_exists('success', $response) - && isset($response['result']['code']) - && $response['result']['code'] === 101) { - return true; // All good. - } else { - // Supply query values and save log of unsuccesful operation. - $this->logErrorWithFormatting( - 'Failed to opt-in new customer with email: %s using autoresponder ID: %s. ' . - 'Smaily response code: %s, message: %s.', - $query['addresses'][0]['email'], - $query['autoresponder'], - $response['result']['code'], - $response['result']['message'] - ); - - return false; - } - } - - /** - * Add error (severity 3) to Prestashop log with formatted arguments. - * - * @param string $message - * - * @return void - */ - public function logErrorWithFormatting() - { - $args = func_get_args(); - $message = call_user_func_array('sprintf', $args); - PrestaShopLogger::addLog('[SMAILY] ' . $message, 3); - } - - /** - * Add information to Prestashop log. - * - * @param string $message - * @param int $severity (1 is informative, 3 error) - * - * @return void - */ - public function logMessageWithSeverity($message, $severity) - { - PrestaShopLogger::addLog('[SMAILY] ' . $message, $severity); - } - - /** - * Makes API call to Smaily. - * - * @param string $endpoint Endpoint of smaily API without .php - * @param array $data data to be sent to API - * @param string $method 'GET' or 'POST' method - * - * @return array $response response from smaily api - */ - public function callApi($endpoint, array $data, $method = 'GET') - { - // Smaily api credentials. - $subdomain = pSQL(Configuration::get('SMAILY_SUBDOMAIN')); - $username = pSQL(Configuration::get('SMAILY_USERNAME')); - $password = pSQL(Configuration::get('SMAILY_PASSWORD')); - - // API call. - $apiUrl = 'https://' . $subdomain . '.sendsmaily.net/api/' . trim($endpoint, '/') . '.php'; - $data = http_build_query($data); - if ($method == 'GET') { - $apiUrl = $apiUrl . '?' . $data; - } - $ch = curl_init(); - curl_setopt($ch, CURLOPT_URL, $apiUrl); - curl_setopt($ch, CURLOPT_HEADER, 0); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); - if ($method == 'POST') { - curl_setopt($ch, CURLOPT_POST, 1); - curl_setopt($ch, CURLOPT_POSTFIELDS, $data); - } - curl_setopt($ch, CURLOPT_USERPWD, "$username:$password"); - $result = json_decode(curl_exec($ch), true); - // Error handling - $http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE); - if ((int) $http_status === 401) { - return $result = ['error' => $this->l('Check credentials, unauthorized!')]; - } - if (curl_errno($ch)) { - return $result = ['error' => curl_error($ch)]; - } - // Close connection and send response. - curl_close($ch); - - return ['success' => true, 'result' => $result]; - } + // /** + // * Recursively go through categories in array and normalize for template. + // * + // * @param array $categories enabled categories in Prestashop catalog + // * + // * @return array categories in format: array(category id => category name) + // */ + // private function recursivelyNormalizeCategoriesForTemplate($categories) + // { + // $normalized = []; + // foreach ($categories as $category) { + // $normalized[$category['id_category']] = $category['name']; + // if (isset($category['children']) && is_array($category['children'])) { + // $normalized += $this->recursivelyNormalizeCategoriesForTemplate($category['children']); + // } + // } + + // return $normalized; + // } + + // /** + // * Make RSS URL with query parameters. + // * + // * @return string $url + // */ + // private function buildRssUrlFromSettings() + // { + // $query_arguments = [ + // 'limit' => Configuration::get('SMAILY_RSS_LIMIT'), + // 'sort_by' => Configuration::get('SMAILY_RSS_SORT_BY'), + // 'sort_order' => Configuration::get('SMAILY_RSS_SORT_ORDER'), + // ]; + // if (Configuration::get('SMAILY_RSS_CATEGORY_ID') !== '') { + // $query_arguments['category_id'] = Configuration::get('SMAILY_RSS_CATEGORY_ID'); + // } + + // return Context::getContext()->link->getModuleLink( + // 'smailyforprestashop', + // 'SmailyRssFeed', + // $query_arguments + // ); + // } + + // // Display Block Newsletter in footer. + // public function hookDisplayFooterBefore($params) + // { + // // Add subdomain to template. + // $this->context->smarty->assign([ + // 'smaily_subdomain' => pSQL(Configuration::get('SMAILY_SUBDOMAIN')), + // ]); + + // return $this->display(__FILE__, 'smaily_blocknewsletter.tpl'); + // } + + // // Display Block Newsletter in left column. + // public function hookDisplayLeftColumn($params) + // { + // // Add subdomain to template. + // $this->context->smarty->assign([ + // 'smaily_subdomain' => pSQL(Configuration::get('SMAILY_SUBDOMAIN')), + // ]); + + // return $this->display(__FILE__, 'smaily_blocknewsletter_column.tpl'); + // } + + // // Display Block Newsletter in right column. + // public function hookDisplayRightColumn($params) + // { + // return $this->hookDisplayLeftColumn($params); + // } + + // // Add JQuerry and module javascript. + // public function hookDisplayBackOfficeHeader() + // { + // // Add module javascript. + // if (Tools::getValue('configure') === $this->name) { + // // Add JQuerry before module javascript. + // $this->context->controller->addJquery(); + // $this->context->controller->addJS([$this->_path . 'views/js/smaily_module.js']); + // // Add variables for js. + // $rss_url = Context::getContext()->link->getModuleLink('smailyforprestashop', 'SmailyRssFeed'); + // Media::addJsDef( + // [ + // 'controller_url' => $this->context->link->getAdminLink($this->controllerAdmin), + // 'smaily_rss_url' => $rss_url, + // 'smailymessages' => [ + // 'no_autoresponders' => $this->trans('No autoresponders created in Smaily!'), + // 'no_connection' => $this->trans('There seems to be some problem with connecting to Smaily!'), + // 'credentials_validated' => $this->trans('Smaily credentials validated!'), + // ], + // ] + // ); + // } + // } + + // /** + // * Trigger Smaily Opt-in if customer joins with newsletter subscription. + // * + // * @param array $params array of parameters being passed to the hook function + // * + // * @return bool success of the operation + // */ + // public function hookActionCustomerAccountAdd($params) + // { + // if (empty($params['newCustomer'])) { + // return false; + // } + // $email = $params['newCustomer']->email; + // if (!Validate::isEmail($email)) { + // return false; + // } + // $is_newsletter_checked = $params['newCustomer']->newsletter === '1'; + // $is_subscription_optin_enabled = Configuration::get('SMAILY_OPTIN_ENABLED') === '1'; + // if (!$is_newsletter_checked || !$is_subscription_optin_enabled) { + // return false; + // } + + // $autoresponder = Configuration::get('SMAILY_OPTIN_AUTORESPONDER'); + // $autoresponder_id = empty($autoresponder) ? '' : (int) $autoresponder; + // $query = [ + // 'autoresponder' => $autoresponder_id, + // 'addresses' => [['email' => $email]], + // ]; + // $response = $this->callApi('autoresponder', $query, 'POST'); + // if (array_key_exists('success', $response) + // && isset($response['result']['code']) + // && $response['result']['code'] === 101) { + // return true; // All good. + // } else { + // // Supply query values and save log of unsuccesful operation. + // $this->logErrorWithFormatting( + // 'Failed to opt-in new customer with email: %s using autoresponder ID: %s. ' . + // 'Smaily response code: %s, message: %s.', + // $query['addresses'][0]['email'], + // $query['autoresponder'], + // $response['result']['code'], + // $response['result']['message'] + // ); + + // return false; + // } + // } + + // /** + // * Add error (severity 3) to Prestashop log with formatted arguments. + // * + // * @param string $message + // * + // * @return void + // */ + // public function logErrorWithFormatting() + // { + // $args = func_get_args(); + // $message = call_user_func_array('sprintf', $args); + // PrestaShopLogger::addLog('[SMAILY] ' . $message, 3); + // } + + // /** + // * Add information to Prestashop log. + // * + // * @param string $message + // * @param int $severity (1 is informative, 3 error) + // * + // * @return void + // */ + // public function logMessageWithSeverity($message, $severity) + // { + // PrestaShopLogger::addLog('[SMAILY] ' . $message, $severity); + // } + + // public function installTab($parent_class, $class_name, $name): bool + // { + // $tab = new Tab(); + // $tab->id_parent = (int) Tab::getIdFromClassName($parent_class); + // $tab->name = []; + // foreach (Language::getLanguages(true) as $lang) { + // $tab->name[$lang['id_lang']] = $name; + // } + // $tab->class_name = $class_name; + // $tab->module = $this->name; + // $tab->active = 0; + + // return $tab->add(); + // } + + // public function uninstallTab($class_name): bool + // { + // // Retrieve Tab ID + // $id_tab = (int) Tab::getIdFromClassName($class_name); + // // Load tab + // $tab = new Tab((int) $id_tab); + + // // Delete it + // return $tab->delete(); + // } } diff --git a/src/src/Controller/ModuleConfigurationController.php b/src/src/Controller/ModuleConfigurationController.php new file mode 100644 index 0000000..d5f9ab5 --- /dev/null +++ b/src/src/Controller/ModuleConfigurationController.php @@ -0,0 +1,98 @@ +get('prestashop.adapter.legacy.configuration'); + $isAccountConnected = $configurationService->get('SMAILY_SUBDOMAIN') !== ''; + $tab = 'account'; + + // Account + $accountFormDataHandler = $this->get('prestashop.module.smailyforprestashop.form.account_credentials_form_handler'); + $accountForm = $accountFormDataHandler->getForm(); + $accountForm->handleRequest($request); + + if ($accountForm->get('submit')->isClicked() && $accountForm->isValid()) { + $errors = $accountFormDataHandler->save($accountForm->getData()); + + if (empty($errors)) { + $this->addFlash('success', $this->trans('Connected with Smaily account.', 'Modules.Smailyforprestashop.Admin')); + + return $this->redirectToRoute('smailyforprestashop_module_configuration', ['tab' => $tab]); + } + + $this->flashErrors($errors); + } + + // Allow to access settings only if account is connected. + if (!$isAccountConnected) { + return $this->render('@Modules/smailyforprestashop/views/templates/admin/configuration.html.twig', [ + 'accountConfigurationForm' => $accountForm->createView(), + 'accountConnected' => false, + 'tab' => $tab, + ]); + } + + // Customer Sync + $customerSyncFormDataHandler = $this->get('prestashop.module.smailyforprestashop.form.customer_sync_form_handler'); + $customerSyncForm = $customerSyncFormDataHandler->getForm(); + $customerSyncForm->handleRequest($request); + + $customerSyncFormClicked = $customerSyncForm->get('submit')->isClicked(); + + if ($customerSyncFormClicked) { + $tab = 'sync'; + } + + if ($customerSyncFormClicked && $customerSyncForm->isValid()) { + $errors = $customerSyncFormDataHandler->save($customerSyncForm->getData()); + + if (empty($errors)) { + $this->addFlash('success', $this->trans('Configuration saved.', 'Modules.Smailyforprestashop.Admin')); + + return $this->redirectToRoute('smailyforprestashop_module_configuration', ['tab' => $tab]); + } + + $this->flashErrors($errors); + } + + // Abandoned Cart + $abandonedCartFormDataHandler = $this->get('prestashop.module.smailyforprestashop.form.abandoned_cart_form_handler'); + $abandonedCartForm = $abandonedCartFormDataHandler->getForm(); + $abandonedCartForm->handleRequest($request); + $abandonedCartFormClicked = $abandonedCartForm->get('submit')->isClicked(); + + if ($abandonedCartFormClicked) { + $tab = 'cart'; + } + + if ($abandonedCartFormClicked && $abandonedCartForm->isValid()) { + $errors = $abandonedCartFormDataHandler->save($abandonedCartForm->getData()); + + if (empty($errors)) { + $this->addFlash('success', $this->trans('Configuration saved.', 'Modules.Smailyforprestashop.Admin')); + + return $this->redirectToRoute('smailyforprestashop_module_configuration', ['tab' => $tab]); + } + + $this->flashErrors($errors); + } + + return $this->render('@Modules/smailyforprestashop/views/templates/admin/configuration.html.twig', [ + 'accountConfigurationForm' => $accountForm->createView(), + 'customerSyncForm' => $customerSyncForm->createView(), + 'abandonedCartForm' => $abandonedCartForm->createView(), + 'accountConnected' => true, + 'tab' => $tab, + ]); + } +} diff --git a/src/src/Form/AbandonedCartFormDataConfiguration.php b/src/src/Form/AbandonedCartFormDataConfiguration.php new file mode 100644 index 0000000..c533742 --- /dev/null +++ b/src/src/Form/AbandonedCartFormDataConfiguration.php @@ -0,0 +1,91 @@ +configuration = $configuration; + } + + public function getConfiguration(): array + { + $return = []; + + $return['enabled'] = $this->configuration->getBoolean('SMAILY_ENABLE_ABANDONED_CART'); + $return['autoresponder'] = $this->configuration->get('SMAILY_CART_AUTORESPONDER'); + $return['sync_additional'] = unserialize($this->configuration->get('SMAILY_CART_SYNCRONIZE_ADDITIONAL')); + $return['sync_interval'] = (int) $this->configuration->get('SMAILY_ABANDONED_CART_TIME') === 0 ? 15 : $this->configuration->get('SMAILY_ABANDONED_CART_TIME'); + $return['cron_token'] = $this->configuration->get('SMAILY_CART_CRON_TOKEN'); + $return['cron_url'] = $this->buildCronURL($return['cron_token']); + + return $return; + } + + public function updateConfiguration(array $formData): array + { + $errors = []; + + if (empty($formData['cron_token'])) { + $errors[] = [ + 'key' => 'Please provide a cron token for abandoned cart synchronization.', + 'domain' => 'Modules.Smailyforprestashop.Admin', + 'parameters' => [], + ]; + } + + if ($formData['enabled'] && empty($formData['autoresponder'])) { + $errors[] = [ + 'key' => 'Please select an automation workflow for customer Opt-In trigger.', + 'domain' => 'Modules.Smailyforprestashop.Admin', + 'parameters' => [], + ]; + } + + if ($this->validateConfiguration($formData) && empty($errors)) { + $this->configuration->set('SMAILY_ENABLE_ABANDONED_CART', $formData['enabled']); + $this->configuration->set('SMAILY_CART_AUTORESPONDER', $formData['autoresponder']); + $this->configuration->set('SMAILY_CART_SYNCRONIZE_ADDITIONAL', serialize($formData['sync_additional'])); + $this->configuration->set('SMAILY_ABANDONED_CART_TIME', $formData['sync_interval']); + $this->configuration->set('SMAILY_CART_CRON_TOKEN', $formData['cron_token']); + } + + return $errors; + } + + public function validateConfiguration(array $configuration): bool + { + return isset( + $configuration['enabled'], + $configuration['autoresponder'], + $configuration['sync_additional'], + $configuration['cron_token'] + ); + } + + /** + * Get customer cron token or generate random string when not set. + */ + private function buildCronURL(string $token): string + { + // TODO: Handler and correct link + return \Context::getContext() + ->link + ->getModuleLink( + 'smailyforprestashop', + 'AbandonedCart', + ['token' => $token] + ); + } +} diff --git a/src/src/Form/AbandonedCartFormDataProvider.php b/src/src/Form/AbandonedCartFormDataProvider.php new file mode 100644 index 0000000..fa81845 --- /dev/null +++ b/src/src/Form/AbandonedCartFormDataProvider.php @@ -0,0 +1,31 @@ +configuration = $configuration; + } + + public function getData(): array + { + return $this->configuration->getConfiguration(); + } + + public function setData(array $data): array + { + return $this->configuration->updateConfiguration($data); + } +} diff --git a/src/src/Form/AbandonedCartFormType.php b/src/src/Form/AbandonedCartFormType.php new file mode 100644 index 0000000..7343204 --- /dev/null +++ b/src/src/Form/AbandonedCartFormType.php @@ -0,0 +1,198 @@ +translator = $translator; + // TODO: Why there is extra key? + $this->autoresponderChoices = $autoresponderChoices['$autoresponderChoices']; + } + + public function buildForm(FormBuilderInterface $builder, array $options) + { + $builder + ->add('enabled', SwitchType::class, [ + 'label' => $this->trans('Enable Abandoed Cart', 'Modules.Smailyforprestashop.Admin'), + 'required' => false, + ]) + ->add('autoresponder', ChoiceType::class, [ + 'label' => $this->trans('Autoresponder', 'Modules.Smailyforprestashop.Admin'), + 'choices' => $this->autoresponderChoices, + ]) + ->add( + $builder->create( + 'sync_additional', + FormType\FormType::class, + [ + 'required' => false, + 'label' => $this->trans('Synchronize Additional', 'Modules.Smailyforprestashop.Admin'), + 'help' => $this->trans('Select additional fields to syncronize', 'Modules.Smailyforprestashop.Admin'), + ] + )->add( + 'first_name', + CheckboxType::class, + [ + 'label' => $this->trans('Customers first name', 'Modules.Smailyforprestashop.Admin'), + 'required' => false, + 'attr' => [ + 'material_design' => true, + ], + ] + )->add( + 'last_name', + CheckboxType::class, + [ + 'label' => $this->trans('Customers last name', 'Modules.Smailyforprestashop.Admin'), + 'required' => false, + 'attr' => [ + 'material_design' => true, + ], + ] + )->add( + 'name', + CheckboxType::class, + [ + 'label' => $this->trans('Product name', 'Modules.Smailyforprestashop.Admin'), + 'required' => false, + 'attr' => [ + 'material_design' => true, + ], + ] + )->add( + 'description', + CheckboxType::class, + [ + 'label' => $this->trans('Product description', 'Modules.Smailyforprestashop.Admin'), + 'required' => false, + 'attr' => [ + 'material_design' => true, + ], + ] + )->add( + 'sku', + CheckboxType::class, + [ + 'label' => $this->trans('Product SKU', 'Modules.Smailyforprestashop.Admin'), + 'required' => false, + 'attr' => [ + 'material_design' => true, + ], + ] + )->add( + 'price', + CheckboxType::class, + [ + 'label' => $this->trans('Product price', 'Modules.Smailyforprestashop.Admin'), + 'required' => false, + 'attr' => [ + 'material_design' => true, + ], + ] + )->add( + 'quantity', + CheckboxType::class, + [ + 'label' => $this->trans('Product quantity', 'Modules.Smailyforprestashop.Admin'), + 'required' => false, + 'attr' => [ + 'material_design' => true, + ], + 'help' => $this->trans('Select additional fields to send to abandoned cart template.', 'Modules.Smailyforprestashop.Admin'), + ] + ) + ) + ->add('sync_interval', NumberType::class, [ + 'label' => $this->trans('Abandoned Cart Delay', 'Modules.Smailyforprestashop.Admin'), + // TODO: Help displays double?? + 'html5' => true, + 'attr' => [ + 'step' => 1, + ], + 'constraints' => [ + new NotBlank([ + 'message' => $this->trans( + 'The field is required.', + 'Modules.Smailyforprestashop.Admin', + ), + ]), + new GreaterThanOrEqual([ + 'value' => 15, + 'message' => $this->trans( + 'This value should be greater than %value%', + 'Admin.Notifications.Error', + [ + '%value%' => 15, + ] + ), + ]), + ], + ]) + ->add('cron_token', TextType::class, [ + 'label' => $this->trans('Cron token', 'Modules.Smailyforprestashop.Admin'), + 'help' => $this->trans('Token is required for cron security. Use this auto generated one or replace with your own.', 'Modules.Smailyforprestashop.Admin'), + 'constraints' => [ + new NotBlank([ + 'message' => $this->trans( + 'The field is required.', + 'Modules.Smailyforprestashop.Admin', + ), + ]), + ], + ]) + // TODO: Nice clickable URL. + ->add('cron_url', TextareaType::class, [ + 'label' => $this->trans('Cron URL', 'Modules.Smailyforprestashop.Admin'), + 'help' => $this->trans('To schedule automatic sync, set up CRON in your hosting and use this URL.', 'Modules.Smailyforprestashop.Admin'), + 'attr' => [ + 'readonly class' => 'form-control-plaintext', + 'disabled' => true, + ], + ]) + ->add('submit', SubmitType::class, [ + 'label' => $this->trans('Save', 'Admin.Actions'), + 'attr' => [ + 'class' => 'btn-primary', + ], + ]); + } +} diff --git a/src/src/Form/AccountConfigurationDataConfiguration.php b/src/src/Form/AccountConfigurationDataConfiguration.php new file mode 100644 index 0000000..b7a6541 --- /dev/null +++ b/src/src/Form/AccountConfigurationDataConfiguration.php @@ -0,0 +1,99 @@ +configuration = $configuration; + } + + public function getConfiguration(): array + { + $return = []; + + $return['subdomain'] = $this->configuration->get('SMAILY_SUBDOMAIN'); + $return['username'] = $this->configuration->get('SMAILY_USERNAME'); + $return['password'] = $this->configuration->get('SMAILY_PASSWORD'); + + return $return; + } + + public function updateConfiguration(array $configuration): array + { + $errors = []; + + if (empty($configuration['subdomain'])) { + $errors[] = [ + 'key' => 'Please enter subdomain', + 'domain' => 'Modules.Smailyforprestashop.Admin', + 'parameters' => [], + ]; + } + + if (empty($configuration['username'])) { + $errors[] = [ + 'key' => 'Please enter username', + 'domain' => 'Modules.Smailyforprestashop.Admin', + 'parameters' => [], + ]; + } + + if (empty($configuration['password'])) { + $errors[] = [ + 'key' => 'Please enter password', + 'domain' => 'Modules.Smailyforprestashop.Admin', + 'parameters' => [], + ]; + } + + if ($this->validateConfiguration($configuration) && empty($errors)) { + $api = new Api($configuration['subdomain'], $configuration['username'], $configuration['password']); + $response = $api->listAutoresponders(); + switch ($response->getStatusCode()) { + case 200: + $this->configuration->set('SMAILY_SUBDOMAIN', $configuration['subdomain']); + $this->configuration->set('SMAILY_USERNAME', $configuration['username']); + $this->configuration->set('SMAILY_PASSWORD', $configuration['password']); + break; + case 401: + $errors[] = [ + 'key' => 'Unauthorized, please check credentials.', + 'domain' => 'Modules.Smailyforprestashop.Admin', + 'parameters' => [], + ]; + break; + default: + $errors[] = [ + 'key' => 'Error validating credentials, please try again.', + 'domain' => 'Modules.Smailyforprestashop.Admin', + 'parameters' => [], + ]; + break; + } + } + + return $errors; + } + + public function validateConfiguration(array $configuration): bool + { + return isset( + $configuration['subdomain'], + $configuration['username'], + $configuration['password'] + ); + } +} diff --git a/src/src/Form/AccountConfigurationFormDataProvider.php b/src/src/Form/AccountConfigurationFormDataProvider.php new file mode 100644 index 0000000..543399a --- /dev/null +++ b/src/src/Form/AccountConfigurationFormDataProvider.php @@ -0,0 +1,31 @@ +configuration = $configuration; + } + + public function getData(): array + { + return $this->configuration->getConfiguration(); + } + + public function setData(array $data): array + { + return $this->configuration->updateConfiguration($data); + } +} diff --git a/src/src/Form/AccountConfigurationFormType.php b/src/src/Form/AccountConfigurationFormType.php new file mode 100644 index 0000000..55dee8d --- /dev/null +++ b/src/src/Form/AccountConfigurationFormType.php @@ -0,0 +1,35 @@ +add('subdomain', TextType::class, [ + 'label' => $this->trans('Subdomain', 'Modules.Smailyforprestashop.Admin'), + 'help' => $this->trans('For example demo from https://demo.sendsmaily.net', 'Modules.Smailyforprestashop.Admin'), + ]) + ->add('username', TextType::class, [ + 'label' => $this->trans('Username', 'Modules.Smailyforprestashop.Admin'), + ]) + ->add('password', PasswordType::class, [ + 'label' => $this->trans('Password', 'Modules.Smailyforprestashop.Admin'), + ]) + ->add('submit', SubmitType::class, [ + 'label' => $this->trans('Connect', 'Modules.Smailyforprestashop.Admin'), + 'attr' => [ + 'class' => 'btn-primary', + ], + ]); + } +} diff --git a/src/src/Form/ChoiceProvider/Autoresponder.php b/src/src/Form/ChoiceProvider/Autoresponder.php new file mode 100644 index 0000000..47f5747 --- /dev/null +++ b/src/src/Form/ChoiceProvider/Autoresponder.php @@ -0,0 +1,64 @@ +translator = $translator; + $this->configuration = $configuration; + } + + /** + * Get autoresponder choices from Smaily. + */ + public function getChoices(): array + { + $noAutoresponders = [ + $this->translator->trans('No autoresponders available', [], 'Module.Smailyforprestashop.Admin') => null, + ]; + + $subdomain = $this->configuration->get('SMAILY_SUBDOMAIN'); + $username = $this->configuration->get('SMAILY_USERNAME'); + $password = $this->configuration->get('SMAILY_PASSWORD'); + + if (empty($subdomain) || empty($username) || empty($password)) { + return $noAutoresponders; + } + + $api = new Api($subdomain, $username, $password); + $response = $api->listAutoresponders(); + + if ($response->getStatusCode() !== 200) { + return $noAutoresponders; + } + + $autoresponders = (array) json_decode($response->getBody()->getContents(), true); + if (count($autoresponders) == 0) { + return $noAutoresponders; + } + + $choices = []; + foreach ($autoresponders as $autoresponder) { + $choices[$autoresponder['name']] = $autoresponder['id']; + } + + return $choices; + } +} diff --git a/src/src/Form/CustomerSyncFormDataConfiguration.php b/src/src/Form/CustomerSyncFormDataConfiguration.php new file mode 100644 index 0000000..1242d37 --- /dev/null +++ b/src/src/Form/CustomerSyncFormDataConfiguration.php @@ -0,0 +1,92 @@ +configuration = $configuration; + } + + public function getConfiguration(): array + { + $return = []; + + $return['enabled'] = $this->configuration->getBoolean('SMAILY_ENABLE_CUSTOMER_SYNC'); + $return['sync_additional'] = unserialize($this->configuration->get('SMAILY_SYNCRONIZE_ADDITIONAL')); + $return['cron_token'] = $this->configuration->get('SMAILY_CUSTOMER_CRON_TOKEN'); + $return['cron_url'] = $this->buildCronURL($return['cron_token']); + $return['optin_enabled'] = $this->configuration->getBoolean('SMAILY_OPTIN_ENABLED'); + $return['autoresponder'] = $this->configuration->get('SMAILY_OPTIN_AUTORESPONDER'); + + return $return; + } + + public function updateConfiguration(array $formData): array + { + $errors = []; + + if (empty($formData['cron_token'])) { + $errors[] = [ + 'key' => 'Please provide a cron token for customer synchronization.', + 'domain' => 'Modules.Smailyforprestashop.Admin', + 'parameters' => [], + ]; + } + + if ($formData['optin_enabled'] && empty($formData['autoresponder'])) { + $errors[] = [ + 'key' => 'Please select an automation workflow for customer Opt-In trigger.', + 'domain' => 'Modules.Smailyforprestashop.Admin', + 'parameters' => [], + ]; + } + + if ($this->validateConfiguration($formData) && empty($errors)) { + $this->configuration->set('SMAILY_ENABLE_CUSTOMER_SYNC', $formData['enabled']); + $this->configuration->set('SMAILY_SYNCRONIZE_ADDITIONAL', serialize($formData['sync_additional'])); + $this->configuration->set('SMAILY_CUSTOMER_CRON_TOKEN', $formData['cron_token']); + $this->configuration->set('SMAILY_OPTIN_ENABLED', $formData['optin_enabled']); + $this->configuration->set('SMAILY_OPTIN_AUTORESPONDER', $formData['autoresponder']); + } + + return $errors; + } + + public function validateConfiguration(array $configuration): bool + { + return isset( + $configuration['enabled'], + $configuration['sync_additional'], + $configuration['cron_token'], + $configuration['optin_enabled'], + $configuration['autoresponder'] + ); + } + + /** + * Get customer cron token or generate random string when not set. + */ + private function buildCronURL(string $token): string + { + // TODO: Handler and correct link + return \Context::getContext() + ->link + ->getModuleLink( + 'smailyforprestashop', + 'CustomerSync', + ['token' => $token] + ); + } +} diff --git a/src/src/Form/CustomerSyncFormDataProvider.php b/src/src/Form/CustomerSyncFormDataProvider.php new file mode 100644 index 0000000..591669a --- /dev/null +++ b/src/src/Form/CustomerSyncFormDataProvider.php @@ -0,0 +1,31 @@ +configuration = $configuration; + } + + public function getData(): array + { + return $this->configuration->getConfiguration(); + } + + public function setData(array $data): array + { + return $this->configuration->updateConfiguration($data); + } +} diff --git a/src/src/Form/CustomerSyncFormType.php b/src/src/Form/CustomerSyncFormType.php new file mode 100644 index 0000000..7015249 --- /dev/null +++ b/src/src/Form/CustomerSyncFormType.php @@ -0,0 +1,148 @@ +translator = $translator; + // TODO: Why there is extra key? + $this->autoresponderChoices = $autoresponderChoices['$autoresponderChoices']; + } + + public function buildForm(FormBuilderInterface $builder, array $options): void + { + $builder + ->add('enabled', SwitchType::class, [ + 'label' => $this->trans('Enable Customer Synchronization', 'Modules.Smailyforprestashop.Admin'), + 'required' => false, + ]) + ->add( + $builder->create( + 'sync_additional', + FormType\FormType::class, + [ + 'required' => false, + 'label' => $this->trans('Synchronize Additional', 'Modules.Smailyforprestashop.Admin'), + 'help' => $this->trans('Select additional fields to syncronize', 'Modules.Smailyforprestashop.Admin'), + ] + ) + ->add( + 'first_name', + CheckboxType::class, + [ + 'label' => $this->trans('First name', 'Modules.Smailyforprestashop.Admin'), + 'required' => false, + 'attr' => [ + 'material_design' => true, + ], + ] + ) + ->add( + 'last_name', + CheckboxType::class, + [ + 'label' => $this->trans('Last name', 'Modules.Smailyforprestashop.Admin'), + 'required' => false, + 'attr' => [ + 'material_design' => true, + ], + ] + ) + ->add( + 'birthday', + CheckboxType::class, + [ + 'label' => $this->trans('Birthday', 'Modules.Smailyforprestashop.Admin'), + 'required' => false, + 'attr' => [ + 'material_design' => true, + ], + ] + ) + ->add( + 'website', + CheckboxType::class, + [ + 'label' => $this->trans('Website', 'Modules.Smailyforprestashop.Admin'), + 'required' => false, + 'attr' => [ + 'material_design' => true, + ], + ] + ) + ) + ->add('cron_token', TextType::class, [ + 'label' => $this->trans('Cron token', 'Modules.Smailyforprestashop.Admin'), + 'help' => $this->trans('Token is required for cron security. Use this auto generated one or replace with your own.', 'Modules.Smailyforprestashop.Admin'), + 'constraints' => [ + new NotBlank([ + 'message' => $this->trans( + 'The field is required.', + 'Modules.Smailyforprestashop.Admin', + ), + ]), + ], + ]) + // TODO: Nice clickable URL. + ->add('cron_url', TextareaType::class, [ + 'label' => $this->trans('Cron URL', 'Modules.Smailyforprestashop.Admin'), + 'help' => $this->trans('To schedule automatic sync, set up CRON in your hosting and use this URL.', 'Modules.Smailyforprestashop.Admin'), + 'attr' => [ + 'readonly class' => 'form-control-plaintext', + 'disabled' => true, + ], + ]) + ->add('optin_enabled', SwitchType::class, [ + 'label' => $this->trans('Trigger opt-in on customer sign-up', 'Modules.Smailyforprestashop.Admin'), + 'required' => false, + 'help' => $this->trans("Opt-in will only be triggered when customer creates an account and signs-up for newsletter. Changes to newsletter subscription in the admin panel won't trigger an opt-in.", 'Module.Smailyforprestashop.Admin'), + ]) + ->add('autoresponder', ChoiceType::class, [ + 'choices' => $this->autoresponderChoices, + 'label' => $this->trans('Automation to trigger on customer sign-up', 'Modules.Smailyforprestashop.Admin'), + ]) + ->add('submit', SubmitType::class, [ + 'label' => $this->trans('Save', 'Admin.Actions'), + 'attr' => [ + 'class' => 'btn-primary', + ], + ]); + } +} From 322c6786d6bab0eb0337687ec949f5420a3325b5 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Thu, 11 Apr 2024 10:15:04 +0300 Subject: [PATCH 008/114] Rename class from SmailyForPrestashop to SmailyForPrestaShop --- src/composer.json | 6 ++-- src/config/admin/services.yml | 26 ++++++++--------- src/config/routes.yml | 6 ++-- src/smailyforprestashop.php | 29 +------------------ .../ModuleConfigurationController.php | 2 +- .../AbandonedCartFormDataConfiguration.php | 2 +- .../Form/AbandonedCartFormDataProvider.php | 2 +- src/src/Form/AbandonedCartFormType.php | 2 +- .../AccountConfigurationDataConfiguration.php | 4 +-- .../AccountConfigurationFormDataProvider.php | 2 +- src/src/Form/AccountConfigurationFormType.php | 2 +- src/src/Form/ChoiceProvider/Autoresponder.php | 4 +-- .../CustomerSyncFormDataConfiguration.php | 8 +++-- src/src/Form/CustomerSyncFormDataProvider.php | 2 +- src/src/Form/CustomerSyncFormType.php | 2 +- 15 files changed, 37 insertions(+), 62 deletions(-) diff --git a/src/composer.json b/src/composer.json index 6bfb915..df094e2 100644 --- a/src/composer.json +++ b/src/composer.json @@ -10,8 +10,8 @@ ], "autoload": { "psr-4": { - "PrestaShop\\Module\\SmailyForPrestashop\\": "src/", - "PrestaShop\\Module\\SmailyForPrestashop\\Lib\\": "lib/" + "PrestaShop\\Module\\SmailyForPrestaShop\\": "src/", + "PrestaShop\\Module\\SmailyForPrestaShop\\Lib\\": "lib/" } }, "require": { @@ -30,4 +30,4 @@ "fix": "php-cs-fixer fix", "phpstan": "_PS_ROOT_DIR_=/var/www/html phpstan analyse ." } -} +} \ No newline at end of file diff --git a/src/config/admin/services.yml b/src/config/admin/services.yml index f2f0d87..616c470 100644 --- a/src/config/admin/services.yml +++ b/src/config/admin/services.yml @@ -4,25 +4,25 @@ services: # Choice providers prestashop.module.smailyforprestashop.choice_provider.autoresponders: - class: 'PrestaShop\Module\SmailyForPrestashop\Form\ChoiceProvider\Autoresponder' + class: 'PrestaShop\Module\SmailyForPrestaShop\Form\ChoiceProvider\Autoresponder' arguments: - '@translator' - '@prestashop.adapter.legacy.configuration' # Account credentials form. prestashop.module.smailyforprestashop.form.type.account_credentials: - class: 'PrestaShop\Module\SmailyForPrestashop\Form\AccountConfigurationFormType' + class: 'PrestaShop\Module\SmailyForPrestaShop\Form\AccountConfigurationFormType' parent: 'form.type.translatable.aware' public: true tags: - { name: form.type } prestashop.module.smailyforprestashop.form.account_credentials_data_configuration: - class: PrestaShop\Module\SmailyForPrestashop\Form\AccountConfigurationDataConfiguration + class: PrestaShop\Module\SmailyForPrestaShop\Form\AccountConfigurationDataConfiguration arguments: ['@prestashop.adapter.legacy.configuration'] prestashop.module.smailyforprestashop.form.account_credentials_form_data_provider: - class: PrestaShop\Module\SmailyForPrestashop\Form\AccountConfigurationFormDataProvider + class: PrestaShop\Module\SmailyForPrestaShop\Form\AccountConfigurationFormDataProvider arguments: - '@prestashop.module.smailyforprestashop.form.account_credentials_data_configuration' @@ -32,12 +32,12 @@ services: - '@form.factory' - '@prestashop.core.hook.dispatcher' - '@prestashop.module.smailyforprestashop.form.account_credentials_form_data_provider' - - PrestaShop\Module\SmailyForPrestashop\Form\AccountConfigurationFormType + - PrestaShop\Module\SmailyForPrestaShop\Form\AccountConfigurationFormType - AccountConfiguration # Customer sync form prestashop.module.smailyforprestashop.form.type.cystomer_sync: - class: 'PrestaShop\Module\SmailyForPrestashop\Form\CustomerSyncFormType' + class: 'PrestaShop\Module\SmailyForPrestaShop\Form\CustomerSyncFormType' parent: 'form.type.translatable.aware' public: true arguments: @@ -46,11 +46,11 @@ services: - { name: form.type } prestashop.module.smailyforprestashop.form.cystomer_sync_form_data_configuration: - class: PrestaShop\Module\SmailyForPrestashop\Form\CustomerSyncFormDataConfiguration + class: PrestaShop\Module\SmailyForPrestaShop\Form\CustomerSyncFormDataConfiguration arguments: ['@prestashop.adapter.legacy.configuration'] prestashop.module.smailyforprestashop.form.customer_sync_form_data_provider: - class: PrestaShop\Module\SmailyForPrestashop\Form\CustomerSyncFormDataProvider + class: PrestaShop\Module\SmailyForPrestaShop\Form\CustomerSyncFormDataProvider arguments: - '@prestashop.module.smailyforprestashop.form.cystomer_sync_form_data_configuration' @@ -60,12 +60,12 @@ services: - '@form.factory' - '@prestashop.core.hook.dispatcher' - '@prestashop.module.smailyforprestashop.form.customer_sync_form_data_provider' - - PrestaShop\Module\SmailyForPrestashop\Form\CustomerSyncFormType + - PrestaShop\Module\SmailyForPrestaShop\Form\CustomerSyncFormType - CustomerSyncConfiguration # Abandoned cart form prestashop.module.smailyforprestashop.form.type.abandoned_cart: - class: 'PrestaShop\Module\SmailyForPrestashop\Form\AbandonedCartFormType' + class: 'PrestaShop\Module\SmailyForPrestaShop\Form\AbandonedCartFormType' parent: 'form.type.translatable.aware' public: true arguments: @@ -74,11 +74,11 @@ services: - { name: form.type } prestashop.module.smailyforprestashop.form.abandoned_cart_form_data_configuration: - class: PrestaShop\Module\SmailyForPrestashop\Form\AbandonedCartFormDataConfiguration + class: PrestaShop\Module\SmailyForPrestaShop\Form\AbandonedCartFormDataConfiguration arguments: ['@prestashop.adapter.legacy.configuration'] prestashop.module.smailyforprestashop.form.abandoned_cart_form_data_provider: - class: PrestaShop\Module\SmailyForPrestashop\Form\AbandonedCartFormDataProvider + class: PrestaShop\Module\SmailyForPrestaShop\Form\AbandonedCartFormDataProvider arguments: - '@prestashop.module.smailyforprestashop.form.abandoned_cart_form_data_configuration' @@ -88,5 +88,5 @@ services: - '@form.factory' - '@prestashop.core.hook.dispatcher' - '@prestashop.module.smailyforprestashop.form.abandoned_cart_form_data_provider' - - PrestaShop\Module\SmailyForPrestashop\Form\AbandonedCartFormType + - PrestaShop\Module\SmailyForPrestaShop\Form\AbandonedCartFormType - AbandonedCartConfiguration diff --git a/src/config/routes.yml b/src/config/routes.yml index e92cc86..cdda26d 100644 --- a/src/config/routes.yml +++ b/src/config/routes.yml @@ -2,6 +2,6 @@ smailyforprestashop_module_configuration: path: /smailyforprestashop/configuration methods: [GET, POST] defaults: - _controller: PrestaShop\Module\SmailyForPrestashop\Controller\ModuleConfigurationController::index - _legacy_controller: SmailyForPrestashopConfiguration - _legacy_link: SmailyForPrestashopConfiguration + _controller: PrestaShop\Module\SmailyForPrestaShop\Controller\ModuleConfigurationController::index + _legacy_controller: SmailyForPrestaShopConfiguration + _legacy_link: SmailyForPrestaShopConfiguration diff --git a/src/smailyforprestashop.php b/src/smailyforprestashop.php index 5d2b2fd..923e187 100644 --- a/src/smailyforprestashop.php +++ b/src/smailyforprestashop.php @@ -27,7 +27,7 @@ exit; } -class SmailyForPrestashop extends Module +class SmailyForPrestaShop extends Module { /** * @var string[] list of allowed sort by values @@ -490,33 +490,6 @@ public function getContent(): void // } // } - // /** - // * Add error (severity 3) to Prestashop log with formatted arguments. - // * - // * @param string $message - // * - // * @return void - // */ - // public function logErrorWithFormatting() - // { - // $args = func_get_args(); - // $message = call_user_func_array('sprintf', $args); - // PrestaShopLogger::addLog('[SMAILY] ' . $message, 3); - // } - - // /** - // * Add information to Prestashop log. - // * - // * @param string $message - // * @param int $severity (1 is informative, 3 error) - // * - // * @return void - // */ - // public function logMessageWithSeverity($message, $severity) - // { - // PrestaShopLogger::addLog('[SMAILY] ' . $message, $severity); - // } - // public function installTab($parent_class, $class_name, $name): bool // { // $tab = new Tab(); diff --git a/src/src/Controller/ModuleConfigurationController.php b/src/src/Controller/ModuleConfigurationController.php index d5f9ab5..a28ece6 100644 --- a/src/src/Controller/ModuleConfigurationController.php +++ b/src/src/Controller/ModuleConfigurationController.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace PrestaShop\Module\SmailyForPrestashop\Controller; +namespace PrestaShop\Module\SmailyForPrestaShop\Controller; use PrestaShopBundle\Controller\Admin\FrameworkBundleAdminController; use Symfony\Component\HttpFoundation\Request; diff --git a/src/src/Form/AbandonedCartFormDataConfiguration.php b/src/src/Form/AbandonedCartFormDataConfiguration.php index c533742..20d1d67 100644 --- a/src/src/Form/AbandonedCartFormDataConfiguration.php +++ b/src/src/Form/AbandonedCartFormDataConfiguration.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace PrestaShop\Module\SmailyForPrestashop\Form; +namespace PrestaShop\Module\SmailyForPrestaShop\Form; use PrestaShop\PrestaShop\Core\Configuration\DataConfigurationInterface; use PrestaShop\PrestaShop\Core\ConfigurationInterface; diff --git a/src/src/Form/AbandonedCartFormDataProvider.php b/src/src/Form/AbandonedCartFormDataProvider.php index fa81845..6632d66 100644 --- a/src/src/Form/AbandonedCartFormDataProvider.php +++ b/src/src/Form/AbandonedCartFormDataProvider.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace PrestaShop\Module\SmailyForPrestashop\Form; +namespace PrestaShop\Module\SmailyForPrestaShop\Form; use PrestaShop\PrestaShop\Core\Configuration\DataConfigurationInterface; use PrestaShop\PrestaShop\Core\Form\FormDataProviderInterface; diff --git a/src/src/Form/AbandonedCartFormType.php b/src/src/Form/AbandonedCartFormType.php index 7343204..035b5a1 100644 --- a/src/src/Form/AbandonedCartFormType.php +++ b/src/src/Form/AbandonedCartFormType.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace PrestaShop\Module\SmailyForPrestashop\Form; +namespace PrestaShop\Module\SmailyForPrestaShop\Form; use PrestaShopBundle\Form\Admin\Type\SwitchType; use PrestaShopBundle\Form\Admin\Type\TranslatorAwareType; diff --git a/src/src/Form/AccountConfigurationDataConfiguration.php b/src/src/Form/AccountConfigurationDataConfiguration.php index b7a6541..5bd7fd7 100644 --- a/src/src/Form/AccountConfigurationDataConfiguration.php +++ b/src/src/Form/AccountConfigurationDataConfiguration.php @@ -2,9 +2,9 @@ declare(strict_types=1); -namespace PrestaShop\Module\SmailyForPrestashop\Form; +namespace PrestaShop\Module\SmailyForPrestaShop\Form; -use PrestaShop\Module\SmailyForPrestashop\Lib\Api; +use PrestaShop\Module\SmailyForPrestaShop\Lib\Api; use PrestaShop\PrestaShop\Core\Configuration\DataConfigurationInterface; use PrestaShop\PrestaShop\Core\ConfigurationInterface; diff --git a/src/src/Form/AccountConfigurationFormDataProvider.php b/src/src/Form/AccountConfigurationFormDataProvider.php index 543399a..5a5ddeb 100644 --- a/src/src/Form/AccountConfigurationFormDataProvider.php +++ b/src/src/Form/AccountConfigurationFormDataProvider.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace PrestaShop\Module\SmailyForPrestashop\Form; +namespace PrestaShop\Module\SmailyForPrestaShop\Form; use PrestaShop\PrestaShop\Core\Configuration\DataConfigurationInterface; use PrestaShop\PrestaShop\Core\Form\FormDataProviderInterface; diff --git a/src/src/Form/AccountConfigurationFormType.php b/src/src/Form/AccountConfigurationFormType.php index 55dee8d..0999c5d 100644 --- a/src/src/Form/AccountConfigurationFormType.php +++ b/src/src/Form/AccountConfigurationFormType.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace PrestaShop\Module\SmailyForPrestashop\Form; +namespace PrestaShop\Module\SmailyForPrestaShop\Form; use PrestaShopBundle\Form\Admin\Type\TranslatorAwareType; use Symfony\Component\Form\Extension\Core\Type\PasswordType; diff --git a/src/src/Form/ChoiceProvider/Autoresponder.php b/src/src/Form/ChoiceProvider/Autoresponder.php index 47f5747..f2659d9 100644 --- a/src/src/Form/ChoiceProvider/Autoresponder.php +++ b/src/src/Form/ChoiceProvider/Autoresponder.php @@ -1,8 +1,8 @@ link ->getModuleLink( 'smailyforprestashop', - 'CustomerSync', - ['token' => $token] + 'SmailyCustomerCron', + [ + 'token' => $token, + ] ); } } diff --git a/src/src/Form/CustomerSyncFormDataProvider.php b/src/src/Form/CustomerSyncFormDataProvider.php index 591669a..85aaf28 100644 --- a/src/src/Form/CustomerSyncFormDataProvider.php +++ b/src/src/Form/CustomerSyncFormDataProvider.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace PrestaShop\Module\SmailyForPrestashop\Form; +namespace PrestaShop\Module\SmailyForPrestaShop\Form; use PrestaShop\PrestaShop\Core\Configuration\DataConfigurationInterface; use PrestaShop\PrestaShop\Core\Form\FormDataProviderInterface; diff --git a/src/src/Form/CustomerSyncFormType.php b/src/src/Form/CustomerSyncFormType.php index 7015249..85629d4 100644 --- a/src/src/Form/CustomerSyncFormType.php +++ b/src/src/Form/CustomerSyncFormType.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace PrestaShop\Module\SmailyForPrestashop\Form; +namespace PrestaShop\Module\SmailyForPrestaShop\Form; use PrestaShopBundle\Form\Admin\Type\SwitchType; use PrestaShopBundle\Form\Admin\Type\TranslatorAwareType; From e109f61db2dccff718810065f2bb1735cef65986 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Thu, 11 Apr 2024 10:15:48 +0300 Subject: [PATCH 009/114] Add admin page templates --- .../abandonedCartConfiguration.html.twig | 27 +++++++++++++++ .../admin/accountConfiguration.html.twig | 31 +++++++++++++++++ .../templates/admin/configuration.html.twig | 33 +++++++++++++++++++ .../admin/customerSyncConfiguration.html.twig | 30 +++++++++++++++++ 4 files changed, 121 insertions(+) create mode 100644 src/views/templates/admin/abandonedCartConfiguration.html.twig create mode 100644 src/views/templates/admin/accountConfiguration.html.twig create mode 100644 src/views/templates/admin/configuration.html.twig create mode 100644 src/views/templates/admin/customerSyncConfiguration.html.twig diff --git a/src/views/templates/admin/abandonedCartConfiguration.html.twig b/src/views/templates/admin/abandonedCartConfiguration.html.twig new file mode 100644 index 0000000..82178a6 --- /dev/null +++ b/src/views/templates/admin/abandonedCartConfiguration.html.twig @@ -0,0 +1,27 @@ +{% trans_default_domain 'Modules.Smailyforprestashop.Admin' %} + +{% block abandoned_cart_configuration %} + {{ form_start(abandonedCartForm) }} +
+

+ settings + {{ 'Abandoned Cart' | trans }} +

+
+
+ {{ form_row(abandonedCartForm.enabled) }} + {{ form_row(abandonedCartForm.autoresponder) }} + {{ form_row(abandonedCartForm.sync_additional) }} + {{ form_row(abandonedCartForm.sync_interval) }} + {{ form_row(abandonedCartForm.cron_token) }} + {{ form_row(abandonedCartForm.cron_url) }} +
+
+ +
+ {{ form_end(abandonedCartForm) }} +{% endblock %} diff --git a/src/views/templates/admin/accountConfiguration.html.twig b/src/views/templates/admin/accountConfiguration.html.twig new file mode 100644 index 0000000..d5ceb9f --- /dev/null +++ b/src/views/templates/admin/accountConfiguration.html.twig @@ -0,0 +1,31 @@ +{% trans_default_domain 'Modules.Smailyforprestashop.Admin' %} + +{% block account_configuration_content %} + {{ form_start(accountConfigurationForm) }} +
+

+ settings + {{ 'Smaily Account Settings'|trans }} +

+
+
+ {{ form_row(accountConfigurationForm.subdomain)}} + {{ form_row(accountConfigurationForm.username)}} + {{ form_row(accountConfigurationForm.password)}} +

+ {{ 'How to create API credentials?'| trans }} +

+
+
+ +
+ {{ form_end(accountConfigurationForm) }} +{% endblock %} diff --git a/src/views/templates/admin/configuration.html.twig b/src/views/templates/admin/configuration.html.twig new file mode 100644 index 0000000..339e196 --- /dev/null +++ b/src/views/templates/admin/configuration.html.twig @@ -0,0 +1,33 @@ +{% extends '@PrestaShop/Admin/layout.html.twig' %} +{% trans_default_domain 'Modules.Smailyforprestashop.Admin' %} + + +{% block content %} +
+ +
+
+ {% include '@Modules/smailyforprestashop/views/templates/admin/accountConfiguration.html.twig' %}
+ {% if accountConnected %} +
+ {% include '@Modules/smailyforprestashop/views/templates/admin/customerSyncConfiguration.html.twig' %} +
+
+ {% include '@Modules/smailyforprestashop/views/templates/admin/abandonedCartConfiguration.html.twig' %} +
+ {% endif %} +
+
+{% endblock %} diff --git a/src/views/templates/admin/customerSyncConfiguration.html.twig b/src/views/templates/admin/customerSyncConfiguration.html.twig new file mode 100644 index 0000000..6041a56 --- /dev/null +++ b/src/views/templates/admin/customerSyncConfiguration.html.twig @@ -0,0 +1,30 @@ +{% trans_default_domain 'Modules.Smailyforprestashop.Admin' %} + +{% block customer_sync_configuration %} + {{ form_start(customerSyncForm) }} +
+

+ settings + {{ 'Customer Synchronization' | trans }} +

+
+
+ {{ form_row(customerSyncForm.enabled) }} + {{ form_row(customerSyncForm.sync_additional) }} + {{ form_row(customerSyncForm.cron_token) }} + {{ form_row(customerSyncForm.cron_url) }} + {{ form_row(customerSyncForm.optin_enabled) }} + {{ form_row(customerSyncForm.autoresponder) }} +

+ {{ 'How to create an automation trigger?' | trans }} +

+
+
+ +
+ {{ form_end(customerSyncForm) }} +{% endblock %} From 07a0c0786b75c96740c52abc402022502e618538 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Thu, 11 Apr 2024 10:17:53 +0300 Subject: [PATCH 010/114] Add Lib classes - Api and Logger --- src/lib/Api.php | 44 +++++++++++++++++++++++--------------------- src/lib/Logger.php | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 21 deletions(-) create mode 100644 src/lib/Logger.php diff --git a/src/lib/Api.php b/src/lib/Api.php index 6f32bec..d305fe5 100644 --- a/src/lib/Api.php +++ b/src/lib/Api.php @@ -2,28 +2,13 @@ declare(strict_types=1); -namespace PrestaShop\Module\SmailyForPrestashop\Lib; +namespace PrestaShop\Module\SmailyForPrestaShop\Lib; use GuzzleHttp\Client; use Psr\Http\Message\ResponseInterface; class Api { - /** - * @var string - */ - private $subdomain; - - /** - * @var string - */ - private $username; - - /** - * @var string - */ - private $password; - /** * @var \GuzzleHttp\Client */ @@ -31,12 +16,9 @@ class Api public function __construct(string $subdomain, string $username, string $password) { - $this->subdomain = $subdomain; - $this->username = $username; - $this->password = $password; - $this->client = new Client([ 'base_uri' => 'https://' . $subdomain . '.sendsmaily.net/', + 'auth' => [$username, $password], 'http_errors' => false, ]); } @@ -44,10 +26,30 @@ public function __construct(string $subdomain, string $username, string $passwor public function listAutoresponders(int $limit = 100): ResponseInterface { return $this->client->request('GET', 'api/autoresponder.php', [ - 'auth' => [$this->username, $this->password], 'query' => [ 'limit' => $limit, ], ]); } + + public function listUnsubscribers(int $limit = 100, $offset = 0): ResponseInterface + { + return $this->client->get('api/contact.php', [ + 'query' => [ + 'list' => 2, + 'limit' => $limit, + 'offset' => $offset, + ], + ]); + } + + public function createSubscribers(array $data): ResponseInterface + { + return $this->client->post('api/contact.php', [ + 'headers' => [ + 'Content-Type' => 'application/json', + ], + 'body' => json_encode($data), + ]); + } } diff --git a/src/lib/Logger.php b/src/lib/Logger.php new file mode 100644 index 0000000..6208df5 --- /dev/null +++ b/src/lib/Logger.php @@ -0,0 +1,35 @@ + Date: Thu, 11 Apr 2024 13:27:45 +0300 Subject: [PATCH 011/114] Normalize API calls --- src/lib/Api.php | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/lib/Api.php b/src/lib/Api.php index d305fe5..941a382 100644 --- a/src/lib/Api.php +++ b/src/lib/Api.php @@ -25,7 +25,7 @@ public function __construct(string $subdomain, string $username, string $passwor public function listAutoresponders(int $limit = 100): ResponseInterface { - return $this->client->request('GET', 'api/autoresponder.php', [ + return $this->client->get('api/autoresponder.php', [ 'query' => [ 'limit' => $limit, ], @@ -52,4 +52,16 @@ public function createSubscribers(array $data): ResponseInterface 'body' => json_encode($data), ]); } + + public function triggerAutomation(string $autoresponder, array $addresses): ResponseInterface + { + return $this->client->post('/api/autoresponder.php', [ + 'headers' => [ + 'Content-Type' => 'application/json', + ], + 'body' => [ + 'addresses' => json_encode($addresses), + ], + ]); + } } From 10895c81f98478954c80c1089ed088f4d1946f7b Mon Sep 17 00:00:00 2001 From: Kaarel Date: Thu, 11 Apr 2024 13:29:00 +0300 Subject: [PATCH 012/114] Add RSS form --- src/config/admin/services.yml | 34 ++++++ src/smailyforprestashop.php | 48 -------- .../ModuleConfigurationController.php | 23 ++++ .../Form/ChoiceProvider/ProductCategory.php | 62 +++++++++++ src/src/Form/RssFeedFormDataConfiguration.php | 98 +++++++++++++++++ src/src/Form/RssFeedFormDataProvider.php | 31 ++++++ src/src/Form/RssFeedFormType.php | 104 ++++++++++++++++++ .../templates/admin/configuration.html.twig | 11 ++ .../admin/rssFeedConfiguration.html.twig | 26 +++++ 9 files changed, 389 insertions(+), 48 deletions(-) create mode 100644 src/src/Form/ChoiceProvider/ProductCategory.php create mode 100644 src/src/Form/RssFeedFormDataConfiguration.php create mode 100644 src/src/Form/RssFeedFormDataProvider.php create mode 100644 src/src/Form/RssFeedFormType.php create mode 100644 src/views/templates/admin/rssFeedConfiguration.html.twig diff --git a/src/config/admin/services.yml b/src/config/admin/services.yml index 616c470..6d671f1 100644 --- a/src/config/admin/services.yml +++ b/src/config/admin/services.yml @@ -9,6 +9,12 @@ services: - '@translator' - '@prestashop.adapter.legacy.configuration' + prestashop.module.smailyforprestashop.choice_provider.product_categories: + class: 'PrestaShop\Module\SmailyForPrestaShop\Form\ChoiceProvider\ProductCategory' + arguments: + - '@translator' + - '@prestashop.adapter.data_provider.category' + # Account credentials form. prestashop.module.smailyforprestashop.form.type.account_credentials: class: 'PrestaShop\Module\SmailyForPrestaShop\Form\AccountConfigurationFormType' @@ -90,3 +96,31 @@ services: - '@prestashop.module.smailyforprestashop.form.abandoned_cart_form_data_provider' - PrestaShop\Module\SmailyForPrestaShop\Form\AbandonedCartFormType - AbandonedCartConfiguration + + # RSS feed form + prestashop.module.smailyforprestashop.form.type.rss_feed: + class: 'PrestaShop\Module\SmailyForPrestaShop\Form\RssFeedFormType' + parent: 'form.type.translatable.aware' + public: true + arguments: + - $productCategoryChoices: '@=service("prestashop.module.smailyforprestashop.choice_provider.product_categories").getChoices()' + tags: + - { name: form.type } + + prestashop.module.smailyforprestashop.form.rss_feed_form_data_configuration: + class: PrestaShop\Module\SmailyForPrestaShop\Form\RssFeedFormDataConfiguration + arguments: ['@prestashop.adapter.legacy.configuration'] + + prestashop.module.smailyforprestashop.form.rss_feed_form_data_provider: + class: PrestaShop\Module\SmailyForPrestaShop\Form\RssFeedFormDataProvider + arguments: + - '@prestashop.module.smailyforprestashop.form.rss_feed_form_data_configuration' + + prestashop.module.smailyforprestashop.form.rss_feed_form_handler: + class: PrestaShop\PrestaShop\Core\Form\Handler + arguments: + - '@form.factory' + - '@prestashop.core.hook.dispatcher' + - '@prestashop.module.smailyforprestashop.form.rss_feed_form_data_provider' + - PrestaShop\Module\SmailyForPrestaShop\Form\RssFeedFormType + - RssFeedConfiguration \ No newline at end of file diff --git a/src/smailyforprestashop.php b/src/smailyforprestashop.php index 923e187..f47da28 100644 --- a/src/smailyforprestashop.php +++ b/src/smailyforprestashop.php @@ -29,11 +29,6 @@ class SmailyForPrestaShop extends Module { - /** - * @var string[] list of allowed sort by values - */ - public static $allowed_sort_by_values = ['date_add', 'date_upd', 'name', 'price', 'id_product']; - public function __construct() { $this->name = 'smailyforprestashop'; @@ -347,49 +342,6 @@ public function getContent(): void // return $output .= $this->display(__FILE__, 'views/templates/admin/smaily_configure.tpl'); } - // /** - // * Recursively go through categories in array and normalize for template. - // * - // * @param array $categories enabled categories in Prestashop catalog - // * - // * @return array categories in format: array(category id => category name) - // */ - // private function recursivelyNormalizeCategoriesForTemplate($categories) - // { - // $normalized = []; - // foreach ($categories as $category) { - // $normalized[$category['id_category']] = $category['name']; - // if (isset($category['children']) && is_array($category['children'])) { - // $normalized += $this->recursivelyNormalizeCategoriesForTemplate($category['children']); - // } - // } - - // return $normalized; - // } - - // /** - // * Make RSS URL with query parameters. - // * - // * @return string $url - // */ - // private function buildRssUrlFromSettings() - // { - // $query_arguments = [ - // 'limit' => Configuration::get('SMAILY_RSS_LIMIT'), - // 'sort_by' => Configuration::get('SMAILY_RSS_SORT_BY'), - // 'sort_order' => Configuration::get('SMAILY_RSS_SORT_ORDER'), - // ]; - // if (Configuration::get('SMAILY_RSS_CATEGORY_ID') !== '') { - // $query_arguments['category_id'] = Configuration::get('SMAILY_RSS_CATEGORY_ID'); - // } - - // return Context::getContext()->link->getModuleLink( - // 'smailyforprestashop', - // 'SmailyRssFeed', - // $query_arguments - // ); - // } - // // Display Block Newsletter in footer. // public function hookDisplayFooterBefore($params) // { diff --git a/src/src/Controller/ModuleConfigurationController.php b/src/src/Controller/ModuleConfigurationController.php index a28ece6..9a0c388 100644 --- a/src/src/Controller/ModuleConfigurationController.php +++ b/src/src/Controller/ModuleConfigurationController.php @@ -87,10 +87,33 @@ public function index(Request $request): Response $this->flashErrors($errors); } + // Rss feed + $rssFeedFormDataHandler = $this->get('prestashop.module.smailyforprestashop.form.rss_feed_form_handler'); + $rssFeedForm = $rssFeedFormDataHandler->getForm(); + $rssFeedForm->handleRequest($request); + $rssFeedFormClicked = $rssFeedForm->get('submit')->isClicked(); + + if ($rssFeedFormClicked) { + $tab = 'rss'; + } + + if ($rssFeedFormClicked && $rssFeedForm->isValid()) { + $errors = $rssFeedFormDataHandler->save($rssFeedForm->getData()); + + if (empty($errors)) { + $this->addFlash('success', $this->trans('RSS-feed URL updated.', 'Modules.Smailyforprestashop.Admin')); + + return $this->redirectToRoute('smailyforprestashop_module_configuration', ['tab' => $tab]); + } + + $this->flashErrors($errors); + } + return $this->render('@Modules/smailyforprestashop/views/templates/admin/configuration.html.twig', [ 'accountConfigurationForm' => $accountForm->createView(), 'customerSyncForm' => $customerSyncForm->createView(), 'abandonedCartForm' => $abandonedCartForm->createView(), + 'rssFeedForm' => $rssFeedForm->createView(), 'accountConnected' => true, 'tab' => $tab, ]); diff --git a/src/src/Form/ChoiceProvider/ProductCategory.php b/src/src/Form/ChoiceProvider/ProductCategory.php new file mode 100644 index 0000000..4e65252 --- /dev/null +++ b/src/src/Form/ChoiceProvider/ProductCategory.php @@ -0,0 +1,62 @@ +translator = $translator; + $this->categoryDataProvider = $categoryDataProvider; + } + + /** + * Get autoresponder choices from Smaily. + */ + public function getChoices(): array + { + $choices = [ + $this->translator->trans('All products', [], 'Module.Smailyforprestashop.Admin') => null, + ]; + + return array_merge( + $choices, + $this->recursivelyNormalizeCategories($this->categoryDataProvider->getNestedCategories()) + ); + } + + /** + * Recursively go through categories in array and normalize them. + * + * @param array $categories enabled categories in PrestaShop catalog + * + * @return array categories in format: array(category name => category id) + */ + private function recursivelyNormalizeCategories($categories) + { + $normalized = []; + + foreach ($categories as $category) { + $normalized[$category['name']] = $category['id_category']; + if (isset($category['children']) && is_array($category['children'])) { + $normalized += $this->recursivelyNormalizeCategories($category['children']); + } + } + + return $normalized; + } +} diff --git a/src/src/Form/RssFeedFormDataConfiguration.php b/src/src/Form/RssFeedFormDataConfiguration.php new file mode 100644 index 0000000..b248926 --- /dev/null +++ b/src/src/Form/RssFeedFormDataConfiguration.php @@ -0,0 +1,98 @@ +configuration = $configuration; + } + + public function getConfiguration(): array + { + $return = []; + + $return['product_category_id'] = $this->configuration->get('SMAILY_RSS_CATEGORY_ID'); + $return['product_limit'] = $this->configuration->get('SMAILY_RSS_LIMIT'); + $return['sort_by'] = $this->configuration->get('SMAILY_RSS_SORT_BY'); + $return['sort_order'] = $this->configuration->get('SMAILY_RSS_SORT_ORDER'); + $return['rss_url'] = $this->buildRssUrl( + $return['product_category_id'], + $return['product_limit'], + $return['sort_by'], + $return['sort_order'] + ); + + return $return; + } + + public function updateConfiguration(array $formData): array + { + $errors = []; + + if ($formData['product_limit'] > $this::PRODUCT_LIMIT_MAX_VALUE) { + $errors[] = [ + 'key' => 'Maximum number or products is %value%', + 'domain' => 'Modules.Smailyforprestashop.Admin', + 'parameters' => [ + '%value%' => $this::PRODUCT_LIMIT_MAX_VALUE, + ], + ]; + } + + if ($this->validateConfiguration($formData) && empty($errors)) { + $this->configuration->set('SMAILY_RSS_CATEGORY_ID', $formData['product_category_id']); + $this->configuration->set('SMAILY_RSS_LIMIT', $formData['product_limit']); + $this->configuration->set('SMAILY_RSS_SORT_BY', $formData['sort_by']); + $this->configuration->set('SMAILY_RSS_SORT_ORDER', $formData['sort_order']); + } + + return $errors; + } + + public function validateConfiguration(array $formData): bool + { + return isset( + $formData['product_limit'], + $formData['sort_by'], + $formData['sort_order'] + ); + } + + /** + * Make RSS URL with query parameters. + * + * @return string + */ + public function buildRssUrl(string $categoryId, string $limit, string $sortBy, string $sortOrder): string + { + $query_arguments = [ + 'limit' => $limit, + 'sort_by' => $sortBy, + 'sort_order' => $sortOrder, + ]; + + if (!empty($categoryId)) { + $query_arguments['category_id'] = $categoryId; + } + + return \Context::getContext()->link->getModuleLink( + 'smailyforprestashop', + 'SmailyRssFeed', + $query_arguments + ); + } +} diff --git a/src/src/Form/RssFeedFormDataProvider.php b/src/src/Form/RssFeedFormDataProvider.php new file mode 100644 index 0000000..e57bbb0 --- /dev/null +++ b/src/src/Form/RssFeedFormDataProvider.php @@ -0,0 +1,31 @@ +configuration = $configuration; + } + + public function getData(): array + { + return $this->configuration->getConfiguration(); + } + + public function setData(array $data): array + { + return $this->configuration->updateConfiguration($data); + } +} diff --git a/src/src/Form/RssFeedFormType.php b/src/src/Form/RssFeedFormType.php new file mode 100644 index 0000000..7eb9917 --- /dev/null +++ b/src/src/Form/RssFeedFormType.php @@ -0,0 +1,104 @@ +translator = $translator; + // TODO: Why there is extra key? + $this->productCategoryChoices = $productCategoryChoices['$productCategoryChoices']; + } + + public function buildForm(FormBuilderInterface $builder, array $options): void + { + $builder + ->add('product_category_id', ChoiceType::class, [ + 'label' => $this->trans('Product category', 'Modules.Smailyforprestashop.Admin'), + 'help' => $this->trans('Show products only from this category.', 'Modules.Smailyforprestashop.Admin'), + 'choices' => $this->productCategoryChoices, + ]) + ->add('product_limit', NumberType::class, [ + 'label' => $this->trans('Product limit', 'Modules.Smailyforprestashop.Admin'), + 'help' => $this->trans('Limit how many products you will add to your feed. Maximum 250.', 'Modules.Smailyforprestashop.Admin'), + 'html5' => true, + 'constraints' => [ + new LessThanOrEqual([ + 'value' => 250, + 'message' => $this->trans( + 'This value should be less than %value%', + 'Modules.Smailyforprestashop.Admin', + [ + '%value%' => 250, + ] + ), + ]), + ], + ]) + ->add('sort_by', ChoiceType::class, [ + 'label' => $this->trans('Sort by', 'Modules.Smailyforprestashop.Admin'), + 'choices' => [ + $this->trans('Date added', 'Modules.Smailyforprestashop.Admin') => 'date_add', + $this->trans('Date updated', 'Modules.Smailyforprestashop.Admin') => 'date_upd', + $this->trans('Product name', 'Modules.Smailyforprestashop.Admin') => 'name', + $this->trans('Product price', 'Modules.Smailyforprestashop.Admin') => 'price', + $this->trans('Product ID', 'Modules.Smailyforprestashop.Admin') => 'id_product', + ], + ]) + ->add('sort_order', ChoiceType::class, [ + 'label' => $this->trans('Sort order', 'Modules.Smailyforprestashop.Admin'), + 'choices' => [ + $this->trans('Descending', 'Modules.Smailyforprestashop.Admin') => 'desc', + $this->trans('Ascending', 'Modules.Smailyforprestashop.Admin') => 'asc', + ], + ]) + // TODO: Nice clickable URL. + ->add('rss_url', TextareaType::class, [ + 'label' => $this->trans('RSS-feed URL', 'Modules.Smailyforprestashop.Admin'), + 'help' => $this->trans("Copy this URL into your template editor's RSS block", 'Modules.Smailyforprestashop.Admin'), + 'attr' => [ + 'readonly class' => 'form-control-plaintext', + 'disabled' => true, + ], + ]) + ->add('submit', SubmitType::class, [ + 'label' => $this->trans('Generate', 'Admin.Actions'), + 'attr' => [ + 'class' => 'btn-primary', + ], + ]); + } +} diff --git a/src/views/templates/admin/configuration.html.twig b/src/views/templates/admin/configuration.html.twig index 339e196..413c06d 100644 --- a/src/views/templates/admin/configuration.html.twig +++ b/src/views/templates/admin/configuration.html.twig @@ -3,6 +3,11 @@ {% block content %} + {% if app.request.query.get('tab') %} + {% set tab = app.request.query.get('tab') %} + {% endif %} + +
@@ -27,6 +35,9 @@
{% include '@Modules/smailyforprestashop/views/templates/admin/abandonedCartConfiguration.html.twig' %}
+
+ {% include '@Modules/smailyforprestashop/views/templates/admin/rssFeedConfiguration.html.twig' %} +
{% endif %}
diff --git a/src/views/templates/admin/rssFeedConfiguration.html.twig b/src/views/templates/admin/rssFeedConfiguration.html.twig new file mode 100644 index 0000000..4d55f58 --- /dev/null +++ b/src/views/templates/admin/rssFeedConfiguration.html.twig @@ -0,0 +1,26 @@ +{% trans_default_domain 'Modules.Smailyforprestashop.Admin' %} + +{% block rss_feed_configuration %} + {{ form_start(rssFeedForm) }} +
+

+ settings + {{ 'RSS Feed' | trans }} +

+
+
+ {{ form_row(rssFeedForm.product_category_id) }} + {{ form_row(rssFeedForm.product_limit) }} + {{ form_row(rssFeedForm.sort_by) }} + {{ form_row(rssFeedForm.sort_order) }} + {{ form_row(rssFeedForm.rss_url) }} +
+
+ +
+ {{ form_end(rssFeedForm) }} +{% endblock %} From 449c46d235747aa78ce921cb0efeb433645f4cb2 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Mon, 15 Apr 2024 10:23:21 +0300 Subject: [PATCH 013/114] Refactor RSS feed --- src/config/front/services.yml | 6 +++ src/controllers/front/SmailyRssFeed.php | 54 +++++++++---------- .../Repository/RssFeedProductsRepository.php | 24 +++++++++ 3 files changed, 57 insertions(+), 27 deletions(-) create mode 100644 src/config/front/services.yml create mode 100644 src/src/Repository/RssFeedProductsRepository.php diff --git a/src/config/front/services.yml b/src/config/front/services.yml new file mode 100644 index 0000000..c5b62ea --- /dev/null +++ b/src/config/front/services.yml @@ -0,0 +1,6 @@ +services: + _defaults: + public: true + + prestashop.module.smailyforprestashop.front.rss_feed_product_repository: + class: PrestaShop\Module\SmailyForPrestaShop\Repository\RssFeedProductsRepository diff --git a/src/controllers/front/SmailyRssFeed.php b/src/controllers/front/SmailyRssFeed.php index 0ccd296..73a9266 100644 --- a/src/controllers/front/SmailyRssFeed.php +++ b/src/controllers/front/SmailyRssFeed.php @@ -23,43 +23,44 @@ */ declare(strict_types=1); -class SmailyforprestashopSmailyRssFeedModuleFrontController extends ModuleFrontController +class SmailyForPrestaShopSmailyRssFeedModuleFrontController extends ModuleFrontController { + public const ALLOWED_SORT_BY_VALUES = ['date_add', 'date_upd', 'name', 'price', 'id_product']; + public function initContent() { parent::initContent(); - $this->generateRssFeed(); - } - public function generateRssFeed() - { $limit = (int) Tools::getValue('limit'); $limit = $limit >= 1 && $limit <= 250 ? $limit : 50; - $sort_by = Tools::getValue('sort_by'); - $sort_by = in_array($sort_by, SmailyForPrestashop::$allowed_sort_by_values, true) ? $sort_by : 'date_upd'; + $sortBy = Tools::getValue('sort_by'); + $sortBy = in_array($sortBy, $this::ALLOWED_SORT_BY_VALUES, true) ? $sortBy : 'date_upd'; - $sort_order = Tools::getValue('sort_order'); - $sort_order = in_array($sort_order, ['asc', 'desc'], true) ? $sort_order : 'desc'; + $sortOrder = Tools::getValue('sort_order'); + $sortOrder = in_array($sortOrder, ['asc', 'desc'], true) ? $sortOrder : 'desc'; - $category_id = (int) Tools::getValue('category_id'); - $category_id = $category_id <= 0 ? false : $category_id; + $categoryId = (int) Tools::getValue('category_id'); + $categoryId = $categoryId <= 0 ? false : $categoryId; + + header('Content-Type: application/xml'); + echo $this->generateRssFeed($categoryId, $limit, $sortBy, $sortOrder); + exit; // Stop to render XML instead of twig template. + } + + public function generateRssFeed($categoryId, $limit, $sortBy, $sortOrder): string + { + /** @var \PrestaShop\Module\SmailyForPrestaShop\Repository\RssFeedProductsRepository $repository */ + $repository = $this->get('prestashop.module.smailyforprestashop.front.rss_feed_product_repository'); - $products = Product::getProducts( - $this->context->language->id, - 0, // start number - $limit, // hardcoded 50 in < 1.4.0 - $sort_by, // hardcoded date_upd in < 1.4.0 - $sort_order, // hardcoded desc in < 1.4.0 - $category_id, // hardcoded false in < 1.4.0 - true // only active products - ); $baseUrl = Tools::getHttpHost(true) . __PS_BASE_URI__; $rss = '' . '' . 'Store' . htmlspecialchars($baseUrl) . 'Product Feed' . date('D, d M Y H:i:s') . ''; + + $products = $repository->getProducts($categoryId, $limit, $sortBy, $sortOrder); foreach ($products as $product) { // Product data by id. $prod = new Product($product['id_product']); @@ -85,10 +86,10 @@ public function generateRssFeed() if ($full_price > $price && $price > 0) { $discount = ceil(($full_price - $price) / $full_price * 100); } - // Addcurrency symbol. - $currencysymbol = Currency::getDefaultCurrency()->sign; - $price = number_format($price, 2, '.', ',') . $currencysymbol; - $full_price = number_format($full_price, 2, '.', ',') . $currencysymbol; + // Add currency symbol. + $currencySymbol = Currency::getDefaultCurrency()->sign; + $price = number_format($price, 2, '.', ',') . $currencySymbol; + $full_price = number_format($full_price, 2, '.', ',') . $currencySymbol; $price_fields = ''; if ($discount > 0) { $price_fields = '' . $full_price . '-' . @@ -106,8 +107,7 @@ public function generateRssFeed() '; } $rss .= ''; - header('Content-Type: application/xml'); - echo $rss; - exit; + + return $rss; } } diff --git a/src/src/Repository/RssFeedProductsRepository.php b/src/src/Repository/RssFeedProductsRepository.php new file mode 100644 index 0000000..3872762 --- /dev/null +++ b/src/src/Repository/RssFeedProductsRepository.php @@ -0,0 +1,24 @@ +language->id, + 0, // start number + $limit, // hardcoded 50 in < 1.4.0 + $sort_by, // hardcoded date_upd in < 1.4.0 + $sort_order, // hardcoded desc in < 1.4.0 + $categoryId, // hardcoded false in < 1.4.0 + true // only active products + ); + + return $products; + } +} From 5f3bd5c9e0ecfa7548cd4fb43b74c4df2e67cb4c Mon Sep 17 00:00:00 2001 From: Kaarel Date: Mon, 15 Apr 2024 13:13:05 +0300 Subject: [PATCH 014/114] Add spell checker to recommended extensions --- .vscode/extensions.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 191b055..244a1c4 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -3,6 +3,7 @@ "aswinkumar863.smarty-template-support", "mblode.twig-language-2", "junstyle.php-cs-fixer", - "devsense.phptools-vscode" + "devsense.phptools-vscode", + "streetsidesoftware.code-spell-checker" ] } From 727e7b33a1215d54f952a498c8f04ba14e4a18cb Mon Sep 17 00:00:00 2001 From: Kaarel Date: Mon, 15 Apr 2024 13:15:38 +0300 Subject: [PATCH 015/114] Improve RSS-url copy functionality --- .../ModuleConfigurationController.php | 3 ++ src/src/Form/RssFeedFormType.php | 37 +++++++++++++------ src/views/js/smaily-admin.js | 37 +++++++++++++++++++ .../templates/admin/configuration.html.twig | 7 ++++ .../admin/rssFeedConfiguration.html.twig | 15 +++++++- 5 files changed, 87 insertions(+), 12 deletions(-) create mode 100644 src/views/js/smaily-admin.js diff --git a/src/src/Controller/ModuleConfigurationController.php b/src/src/Controller/ModuleConfigurationController.php index 9a0c388..021fa3a 100644 --- a/src/src/Controller/ModuleConfigurationController.php +++ b/src/src/Controller/ModuleConfigurationController.php @@ -116,6 +116,9 @@ public function index(Request $request): Response 'rssFeedForm' => $rssFeedForm->createView(), 'accountConnected' => true, 'tab' => $tab, + 'jsVariables' => [ + 'rssBaseURL' => \Context::getContext()->link->getModuleLink('smailyforprestashop', 'SmailyRssFeed'), + ], ]); } } diff --git a/src/src/Form/RssFeedFormType.php b/src/src/Form/RssFeedFormType.php index 7eb9917..e447d64 100644 --- a/src/src/Form/RssFeedFormType.php +++ b/src/src/Form/RssFeedFormType.php @@ -6,10 +6,11 @@ use PrestaShopBundle\Form\Admin\Type\TranslatorAwareType; use Symfony\Component\Form\Extension\Core\Type\ChoiceType; +use Symfony\Component\Form\Extension\Core\Type\HiddenType; use Symfony\Component\Form\Extension\Core\Type\NumberType; use Symfony\Component\Form\Extension\Core\Type\SubmitType; -use Symfony\Component\Form\Extension\Core\Type\TextareaType; use Symfony\Component\Form\FormBuilderInterface; +use Symfony\Component\Validator\Constraints\GreaterThan; use Symfony\Component\Validator\Constraints\LessThanOrEqual; use Symfony\Contracts\Translation\TranslatorInterface; @@ -50,12 +51,28 @@ public function buildForm(FormBuilderInterface $builder, array $options): void 'label' => $this->trans('Product category', 'Modules.Smailyforprestashop.Admin'), 'help' => $this->trans('Show products only from this category.', 'Modules.Smailyforprestashop.Admin'), 'choices' => $this->productCategoryChoices, + 'attr' => [ + 'class' => 'smaily-rss-options', + ], ]) ->add('product_limit', NumberType::class, [ 'label' => $this->trans('Product limit', 'Modules.Smailyforprestashop.Admin'), 'help' => $this->trans('Limit how many products you will add to your feed. Maximum 250.', 'Modules.Smailyforprestashop.Admin'), 'html5' => true, + 'attr' => [ + 'class' => 'smaily-rss-options', + ], 'constraints' => [ + new GreaterThan([ + 'value' => 0, + 'message' => $this->trans( + 'This value should be greater than %value%', + 'Modules.Smailyforprestashop.Admin', + [ + '%value%' => 0, + ] + ), + ]), new LessThanOrEqual([ 'value' => 250, 'message' => $this->trans( @@ -70,6 +87,9 @@ public function buildForm(FormBuilderInterface $builder, array $options): void ]) ->add('sort_by', ChoiceType::class, [ 'label' => $this->trans('Sort by', 'Modules.Smailyforprestashop.Admin'), + 'attr' => [ + 'class' => 'smaily-rss-options', + ], 'choices' => [ $this->trans('Date added', 'Modules.Smailyforprestashop.Admin') => 'date_add', $this->trans('Date updated', 'Modules.Smailyforprestashop.Admin') => 'date_upd', @@ -80,22 +100,17 @@ public function buildForm(FormBuilderInterface $builder, array $options): void ]) ->add('sort_order', ChoiceType::class, [ 'label' => $this->trans('Sort order', 'Modules.Smailyforprestashop.Admin'), + 'attr' => [ + 'class' => 'smaily-rss-options', + ], 'choices' => [ $this->trans('Descending', 'Modules.Smailyforprestashop.Admin') => 'desc', $this->trans('Ascending', 'Modules.Smailyforprestashop.Admin') => 'asc', ], ]) - // TODO: Nice clickable URL. - ->add('rss_url', TextareaType::class, [ - 'label' => $this->trans('RSS-feed URL', 'Modules.Smailyforprestashop.Admin'), - 'help' => $this->trans("Copy this URL into your template editor's RSS block", 'Modules.Smailyforprestashop.Admin'), - 'attr' => [ - 'readonly class' => 'form-control-plaintext', - 'disabled' => true, - ], - ]) + ->add('rss_url', HiddenType::class) ->add('submit', SubmitType::class, [ - 'label' => $this->trans('Generate', 'Admin.Actions'), + 'label' => $this->trans('Save', 'Admin.Actions'), 'attr' => [ 'class' => 'btn-primary', ], diff --git a/src/views/js/smaily-admin.js b/src/views/js/smaily-admin.js new file mode 100644 index 0000000..cfc7bee --- /dev/null +++ b/src/views/js/smaily-admin.js @@ -0,0 +1,37 @@ +const { rssBaseURL } = jsVariables; + +$(() => { + $("#copy-rss-url-button").click(function (e) { + e.preventDefault(); + var url = $("#rss #rss-feed-url").text(); + navigator.clipboard.writeText(url); + }); + + // Generate RSS product feed URL if options change. + $(".smaily-rss-options").change(function (event) { + var rss_url_base = rssBaseURL + '?'; + var url_parameters = {}; + + var rss_limit = $('#rss #form_product_limit').val(); + if (rss_limit != "") { + url_parameters.limit = rss_limit; + } + + var rss_sort_by = $('#rss #form_sort_by').val(); + if (rss_sort_by != "") { + url_parameters.sort_by = rss_sort_by; + } + + var rss_sort_order = $('#rss #form_sort_order').val(); + if (rss_sort_order != "") { + url_parameters.sort_order = rss_sort_order; + } + + var rss_category_id = $('#rss #form_product_category_id').val(); + if (rss_category_id != "") { + url_parameters.category_id = rss_category_id; + } + + $('#rss-feed-url').html(rss_url_base + $.param(url_parameters)); + }); +}); diff --git a/src/views/templates/admin/configuration.html.twig b/src/views/templates/admin/configuration.html.twig index 413c06d..ed70d77 100644 --- a/src/views/templates/admin/configuration.html.twig +++ b/src/views/templates/admin/configuration.html.twig @@ -42,3 +42,10 @@ {% endblock %} + +{% block javascripts %} + + +{% endblock %} diff --git a/src/views/templates/admin/rssFeedConfiguration.html.twig b/src/views/templates/admin/rssFeedConfiguration.html.twig index 4d55f58..42418bb 100644 --- a/src/views/templates/admin/rssFeedConfiguration.html.twig +++ b/src/views/templates/admin/rssFeedConfiguration.html.twig @@ -13,7 +13,20 @@ {{ form_row(rssFeedForm.product_limit) }} {{ form_row(rssFeedForm.sort_by) }} {{ form_row(rssFeedForm.sort_order) }} - {{ form_row(rssFeedForm.rss_url) }} +
+ +
+
+ +
+ +
+
+ +
+
From 1d2246e9385bf0f5aa68f5ceab19a6b5a31b9d3d Mon Sep 17 00:00:00 2001 From: Kaarel Date: Tue, 16 Apr 2024 09:19:14 +0300 Subject: [PATCH 017/114] Use single form data provider --- src/config/admin/services.yml | 8 ++--- .../Form/AbandonedCartFormDataProvider.php | 31 ------------------- .../AccountConfigurationFormDataProvider.php | 31 ------------------- src/src/Form/CustomerSyncFormDataProvider.php | 31 ------------------- ...mDataProvider.php => FormDataProvider.php} | 2 +- 5 files changed, 5 insertions(+), 98 deletions(-) delete mode 100644 src/src/Form/AbandonedCartFormDataProvider.php delete mode 100644 src/src/Form/AccountConfigurationFormDataProvider.php delete mode 100644 src/src/Form/CustomerSyncFormDataProvider.php rename src/src/Form/{RssFeedFormDataProvider.php => FormDataProvider.php} (91%) diff --git a/src/config/admin/services.yml b/src/config/admin/services.yml index 6d671f1..137eac3 100644 --- a/src/config/admin/services.yml +++ b/src/config/admin/services.yml @@ -28,7 +28,7 @@ services: arguments: ['@prestashop.adapter.legacy.configuration'] prestashop.module.smailyforprestashop.form.account_credentials_form_data_provider: - class: PrestaShop\Module\SmailyForPrestaShop\Form\AccountConfigurationFormDataProvider + class: PrestaShop\Module\SmailyForPrestaShop\Form\FormDataProvider arguments: - '@prestashop.module.smailyforprestashop.form.account_credentials_data_configuration' @@ -56,7 +56,7 @@ services: arguments: ['@prestashop.adapter.legacy.configuration'] prestashop.module.smailyforprestashop.form.customer_sync_form_data_provider: - class: PrestaShop\Module\SmailyForPrestaShop\Form\CustomerSyncFormDataProvider + class: PrestaShop\Module\SmailyForPrestaShop\Form\FormDataProvider arguments: - '@prestashop.module.smailyforprestashop.form.cystomer_sync_form_data_configuration' @@ -84,7 +84,7 @@ services: arguments: ['@prestashop.adapter.legacy.configuration'] prestashop.module.smailyforprestashop.form.abandoned_cart_form_data_provider: - class: PrestaShop\Module\SmailyForPrestaShop\Form\AbandonedCartFormDataProvider + class: PrestaShop\Module\SmailyForPrestaShop\Form\FormDataProvider arguments: - '@prestashop.module.smailyforprestashop.form.abandoned_cart_form_data_configuration' @@ -112,7 +112,7 @@ services: arguments: ['@prestashop.adapter.legacy.configuration'] prestashop.module.smailyforprestashop.form.rss_feed_form_data_provider: - class: PrestaShop\Module\SmailyForPrestaShop\Form\RssFeedFormDataProvider + class: PrestaShop\Module\SmailyForPrestaShop\Form\FormDataProvider arguments: - '@prestashop.module.smailyforprestashop.form.rss_feed_form_data_configuration' diff --git a/src/src/Form/AbandonedCartFormDataProvider.php b/src/src/Form/AbandonedCartFormDataProvider.php deleted file mode 100644 index 6632d66..0000000 --- a/src/src/Form/AbandonedCartFormDataProvider.php +++ /dev/null @@ -1,31 +0,0 @@ -configuration = $configuration; - } - - public function getData(): array - { - return $this->configuration->getConfiguration(); - } - - public function setData(array $data): array - { - return $this->configuration->updateConfiguration($data); - } -} diff --git a/src/src/Form/AccountConfigurationFormDataProvider.php b/src/src/Form/AccountConfigurationFormDataProvider.php deleted file mode 100644 index 5a5ddeb..0000000 --- a/src/src/Form/AccountConfigurationFormDataProvider.php +++ /dev/null @@ -1,31 +0,0 @@ -configuration = $configuration; - } - - public function getData(): array - { - return $this->configuration->getConfiguration(); - } - - public function setData(array $data): array - { - return $this->configuration->updateConfiguration($data); - } -} diff --git a/src/src/Form/CustomerSyncFormDataProvider.php b/src/src/Form/CustomerSyncFormDataProvider.php deleted file mode 100644 index 85aaf28..0000000 --- a/src/src/Form/CustomerSyncFormDataProvider.php +++ /dev/null @@ -1,31 +0,0 @@ -configuration = $configuration; - } - - public function getData(): array - { - return $this->configuration->getConfiguration(); - } - - public function setData(array $data): array - { - return $this->configuration->updateConfiguration($data); - } -} diff --git a/src/src/Form/RssFeedFormDataProvider.php b/src/src/Form/FormDataProvider.php similarity index 91% rename from src/src/Form/RssFeedFormDataProvider.php rename to src/src/Form/FormDataProvider.php index e57bbb0..bc3a2ba 100644 --- a/src/src/Form/RssFeedFormDataProvider.php +++ b/src/src/Form/FormDataProvider.php @@ -7,7 +7,7 @@ use PrestaShop\PrestaShop\Core\Configuration\DataConfigurationInterface; use PrestaShop\PrestaShop\Core\Form\FormDataProviderInterface; -class RssFeedFormDataProvider implements FormDataProviderInterface +class FormDataProvider implements FormDataProviderInterface { /** * @var DataConfigurationInterface From 0c37a78b358c4ddf3511953f0c8efe663ece12b9 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Tue, 16 Apr 2024 11:00:19 +0300 Subject: [PATCH 018/114] Configure form names --- src/config/admin/services.yml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/config/admin/services.yml b/src/config/admin/services.yml index 137eac3..fb1d883 100644 --- a/src/config/admin/services.yml +++ b/src/config/admin/services.yml @@ -39,7 +39,8 @@ services: - '@prestashop.core.hook.dispatcher' - '@prestashop.module.smailyforprestashop.form.account_credentials_form_data_provider' - PrestaShop\Module\SmailyForPrestaShop\Form\AccountConfigurationFormType - - AccountConfiguration + - SmailyForPrestaShopAccountConfiguration + - account # Customer sync form prestashop.module.smailyforprestashop.form.type.cystomer_sync: @@ -67,7 +68,8 @@ services: - '@prestashop.core.hook.dispatcher' - '@prestashop.module.smailyforprestashop.form.customer_sync_form_data_provider' - PrestaShop\Module\SmailyForPrestaShop\Form\CustomerSyncFormType - - CustomerSyncConfiguration + - SmailyForPrestaShopCustomerSyncConfiguration + - customer # Abandoned cart form prestashop.module.smailyforprestashop.form.type.abandoned_cart: @@ -95,7 +97,8 @@ services: - '@prestashop.core.hook.dispatcher' - '@prestashop.module.smailyforprestashop.form.abandoned_cart_form_data_provider' - PrestaShop\Module\SmailyForPrestaShop\Form\AbandonedCartFormType - - AbandonedCartConfiguration + - SmailyForPrestaShopAbandonedCartConfiguration + - cart # RSS feed form prestashop.module.smailyforprestashop.form.type.rss_feed: @@ -123,4 +126,5 @@ services: - '@prestashop.core.hook.dispatcher' - '@prestashop.module.smailyforprestashop.form.rss_feed_form_data_provider' - PrestaShop\Module\SmailyForPrestaShop\Form\RssFeedFormType - - RssFeedConfiguration \ No newline at end of file + - SmailyForPrestaShopRssFeedConfiguration + - rss From 7011172a159835ebf09e93ae3ac04831a40a5c2e Mon Sep 17 00:00:00 2001 From: Kaarel Date: Tue, 16 Apr 2024 11:00:46 +0300 Subject: [PATCH 019/114] Fix front service config indentation --- src/config/front/services.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/front/services.yml b/src/config/front/services.yml index c5b62ea..73dcc4f 100644 --- a/src/config/front/services.yml +++ b/src/config/front/services.yml @@ -1,6 +1,6 @@ services: _defaults: - public: true + public: true prestashop.module.smailyforprestashop.front.rss_feed_product_repository: class: PrestaShop\Module\SmailyForPrestaShop\Repository\RssFeedProductsRepository From 75aa6665a96f6ec16d46e5cf245061b4f7831961 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Tue, 16 Apr 2024 11:02:39 +0300 Subject: [PATCH 020/114] Add correct URL to AbandonedCart cron --- src/src/Form/AbandonedCartFormDataConfiguration.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/src/Form/AbandonedCartFormDataConfiguration.php b/src/src/Form/AbandonedCartFormDataConfiguration.php index 20d1d67..1aa532a 100644 --- a/src/src/Form/AbandonedCartFormDataConfiguration.php +++ b/src/src/Form/AbandonedCartFormDataConfiguration.php @@ -79,12 +79,11 @@ public function validateConfiguration(array $configuration): bool */ private function buildCronURL(string $token): string { - // TODO: Handler and correct link return \Context::getContext() ->link ->getModuleLink( 'smailyforprestashop', - 'AbandonedCart', + 'SmailyCartCron', ['token' => $token] ); } From 2b4e7dc4149569588ba903817d2bcc85cacccce8 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Tue, 16 Apr 2024 11:02:58 +0300 Subject: [PATCH 021/114] Drop upgrades --- src/upgrade/Upgrade-1.1.0.php | 42 ------------------------- src/upgrade/Upgrade-1.3.0.php | 59 ----------------------------------- src/upgrade/Upgrade-1.5.0.php | 45 -------------------------- src/upgrade/Upgrade-1.6.0.php | 49 ----------------------------- src/upgrade/index.php | 30 ------------------ 5 files changed, 225 deletions(-) delete mode 100644 src/upgrade/Upgrade-1.1.0.php delete mode 100644 src/upgrade/Upgrade-1.3.0.php delete mode 100644 src/upgrade/Upgrade-1.5.0.php delete mode 100644 src/upgrade/Upgrade-1.6.0.php delete mode 100644 src/upgrade/index.php diff --git a/src/upgrade/Upgrade-1.1.0.php b/src/upgrade/Upgrade-1.1.0.php deleted file mode 100644 index a8187bb..0000000 --- a/src/upgrade/Upgrade-1.1.0.php +++ /dev/null @@ -1,42 +0,0 @@ -. - * - * @author Smaily - * @copyright 2018 Smaily - * @license GPL3 - */ -declare(strict_types=1); - -if (!defined('_PS_VERSION_')) { - exit; -} - -/** - * Upgrades database with smaily abandoned cart table. - */ -function upgrade_module_1_1_0() -{ - return Db::getInstance()->execute( - 'CREATE TABLE IF NOT EXISTS ' . _DB_PREFIX_ . 'smaily_cart ( - `id_smaily_cart` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , - `id_customer` INT UNSIGNED NULL , - `id_cart` INT UNSIGNED NULL , - `date_sent` DATETIME NOT NULL) ENGINE=' . _MYSQL_ENGINE_ - ); -} diff --git a/src/upgrade/Upgrade-1.3.0.php b/src/upgrade/Upgrade-1.3.0.php deleted file mode 100644 index 6b0a731..0000000 --- a/src/upgrade/Upgrade-1.3.0.php +++ /dev/null @@ -1,59 +0,0 @@ -. - * - * @author Smaily - * @copyright 2018 Smaily - * @license GPL3 - */ -declare(strict_types=1); - -if (!defined('_PS_VERSION_')) { - exit; -} - -/** - * Migrates existing abandoned cart fields to new structure. - */ -function upgrade_module_1_3_0() -{ - $sync_fields = unserialize(Configuration::get('SMAILY_CART_SYNCRONIZE_ADDITIONAL')); - - // Replace description_short->description. - $description_short = array_search('description_short', $sync_fields); - if ($description_short !== false) { - unset($sync_fields[$description_short]); - if (!in_array('description', $sync_fields)) { - array_push($sync_fields, 'description'); - } - } - - $cartEnabled = Configuration::get('SMAILY_ENABLE_ABANDONED_CART') === '1' ? true : false; - // Add the previous default fields to sync array. - if ($cartEnabled) { - array_push($sync_fields, 'first_name', 'last_name'); - } - - // Remove product category field. - $category = array_search('category', $sync_fields); - if ($category !== false) { - unset($sync_fields[$category]); - } - - return Configuration::updateValue('SMAILY_SYNCRONIZE_ADDITIONAL', serialize($sync_fields)); -} diff --git a/src/upgrade/Upgrade-1.5.0.php b/src/upgrade/Upgrade-1.5.0.php deleted file mode 100644 index 7eef4ff..0000000 --- a/src/upgrade/Upgrade-1.5.0.php +++ /dev/null @@ -1,45 +0,0 @@ -. - * - * @author Smaily - * @copyright 2018 Smaily - * @license GPL3 - */ -declare(strict_types=1); - -if (!defined('_PS_VERSION_')) { - exit; -} - -/** - * Migrates existing abandoned cart fields to new structure. - */ -function upgrade_module_1_5_0($object) -{ - // 1.5.0+ saves only autoresponder ID to database instead of the whole autoresponder serialized. - $cart_autoresponder = pSQL(Configuration::get('SMAILY_CART_AUTORESPONDER')); - $cart_autoresponder = str_replace('\"', '"', $cart_autoresponder); - $cart_autoresponder = unserialize($cart_autoresponder); - $autoresponder_id = isset($cart_autoresponder['id']) ? $cart_autoresponder['id'] : ''; - - return Configuration::updateValue('SMAILY_CART_AUTORESPONDER', $autoresponder_id) - && Configuration::updateValue('SMAILY_OPTIN_ENABLED', 0) - && Configuration::updateValue('SMAILY_OPTIN_AUTORESPONDER', '') - && $object->registerHook('actionCustomerAccountAdd'); -} diff --git a/src/upgrade/Upgrade-1.6.0.php b/src/upgrade/Upgrade-1.6.0.php deleted file mode 100644 index 16f33d9..0000000 --- a/src/upgrade/Upgrade-1.6.0.php +++ /dev/null @@ -1,49 +0,0 @@ -. - * - * @author Smaily - * @copyright 2021 Smaily - * @license GPL3 - */ -declare(strict_types=1); - -if (!defined('_PS_VERSION_')) { - exit; -} - -function upgrade_module_1_6_0() -{ - $customer_sync_fields = unserialize(Configuration::get('SMAILY_SYNCRONIZE_ADDITIONAL')); - - // Update firstname and lastname fields names. - $fields = []; - foreach ($customer_sync_fields as $field) { - if ($field === 'firstname') { - $fields[] = 'first_name'; - } elseif ($field === 'lastname') { - $fields[] = 'last_name'; - } else { - $fields[] = $field; - } - } - - $customer_sync_fields = $fields; - - return Configuration::updateValue('SMAILY_SYNCRONIZE_ADDITIONAL', serialize($customer_sync_fields)); -} diff --git a/src/upgrade/index.php b/src/upgrade/index.php deleted file mode 100644 index 691f051..0000000 --- a/src/upgrade/index.php +++ /dev/null @@ -1,30 +0,0 @@ -. - * - * @author Smaily - * @copyright 2018 Smaily - * @license GPL3 - */ -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; From ed41a64602cab64bb5d609c19ab39aced61f41e3 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Wed, 17 Apr 2024 09:49:21 +0300 Subject: [PATCH 022/114] Refactor module main file --- src/smailyforprestashop.php | 365 ++++++++++-------------------------- 1 file changed, 104 insertions(+), 261 deletions(-) diff --git a/src/smailyforprestashop.php b/src/smailyforprestashop.php index f47da28..72cccb4 100644 --- a/src/smailyforprestashop.php +++ b/src/smailyforprestashop.php @@ -29,6 +29,30 @@ class SmailyForPrestaShop extends Module { + private const CONFIGURATION_KEYS = [ + // Account + 'SMAILY_SUBDOMAIN', + 'SMAILY_USERNAME', + 'SMAILY_PASSWORD', + // Customer Sync + 'SMAILY_ENABLE_CUSTOMER_SYNC', + 'SMAILY_CUSTOMER_CRON_TOKEN', + 'SMAILY_SYNCRONIZE_ADDITIONAL', + 'SMAILY_OPTIN_ENABLED', + 'SMAILY_OPTIN_AUTORESPONDER', + // Abandoned Cart + 'SMAILY_ENABLE_ABANDONED_CART', + 'SMAILY_CART_CRON_TOKEN', + 'SMAILY_CART_AUTORESPONDER', + 'SMAILY_ABANDONED_CART_TIME', + 'SMAILY_CART_SYNCRONIZE_ADDITIONAL', + // RSS + 'SMAILY_RSS_CATEGORY_ID', + 'SMAILY_RSS_LIMIT', + 'SMAILY_RSS_SORT_BY', + 'SMAILY_RSS_SORT_ORDER', + ]; + public function __construct() { $this->name = 'smailyforprestashop'; @@ -47,7 +71,6 @@ public function __construct() $this->displayName = $this->trans('Smaily for PrestaShop', [], 'Modules.Smailyforprestashop.Admin'); $this->description = $this->trans('Smaily email marketing and automation module for PrestaShop.', [], 'Modules.Smailyforprestashop.Admin'); - $this->confirmUninstall = $this->trans('Are you sure you want to uninstall?', [], 'Modules.Smailyforprestashop.Admin'); } @@ -59,85 +82,24 @@ public function install(): bool } if (!parent::install() - // Check that the module can be attached to the header hook. - // || !$this->registerHook('backOfficeHeader') - // Account Configuration - || !Configuration::updateValue('SMAILY_SUBDOMAIN', '') - || !Configuration::updateValue('SMAILY_USERNAME', '') - || !Configuration::updateValue('SMAILY_PASSWORD', '') - // Customer Sync - || !Configuration::updateValue('SMAILY_ENABLE_CUSTOMER_SYNC', false) - || !Configuration::updateValue('SMAILY_CUSTOMER_CRON_TOKEN', uniqid()) - || !Configuration::updateValue('SMAILY_SYNCRONIZE_ADDITIONAL', serialize([])) - || !Configuration::updateValue('SMAILY_OPTIN_ENABLED', false) - || !Configuration::updateValue('SMAILY_OPTIN_AUTORESPONDER', '') - // Abandoned Cart - || !Configuration::updateValue('SMAILY_ENABLE_ABANDONED_CART', 0) - || !Configuration::updateValue('SMAILY_CART_CRON_TOKEN', uniqid()) - || !Configuration::updateValue('SMAILY_CART_AUTORESPONDER', '') - || !Configuration::updateValue('SMAILY_ABANDONED_CART_TIME', '') - || !Configuration::updateValue('SMAILY_CART_SYNCRONIZE_ADDITIONAL', serialize([])) - // RSS - || !Configuration::updateValue('SMAILY_RSS_CATEGORY_ID', '') - || !Configuration::updateValue('SMAILY_RSS_LIMIT', '50') - || !Configuration::updateValue('SMAILY_RSS_SORT_BY', 'date_upd') - || !Configuration::updateValue('SMAILY_RSS_SORT_ORDER', 'desc') - // Add tab to sidebar - // || !$this->installTab('AdminAdmin', 'AdminSmailyforprestashopAjax', 'Smaily for PrestaShop') - // Add Newsletter subscription form. - // || !$this->registerHook('footerBefore') - // || !$this->registerHook('leftColumn') - // || !$this->registerHook('rightColumn') - // User has option to trigger opt-in when customer joins store & newsletter through sign-up. - // || !$this->registerHook('actionCustomerAccountAdd') + || !$this->addDefaultConfiguration() + || !$this->createTables() + || !$this->registerHooks() ) { return false; } - $sql = 'CREATE TABLE IF NOT EXISTS ' . _DB_PREFIX_ . 'smaily_cart ( - `id_smaily_cart` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , - `id_customer` INT UNSIGNED NULL , - `id_cart` INT UNSIGNED NULL , - `date_sent` DATETIME NOT NULL) ENGINE=' . _MYSQL_ENGINE_; - if (!Db::getInstance()->execute($sql)) { - return false; - } - return true; } public function uninstall(): bool { if (!parent::uninstall() - // Delete settings created by module. - // Account - || !Configuration::deleteByName('SMAILY_SUBDOMAIN') - || !Configuration::deleteByName('SMAILY_USERNAME') - || !Configuration::deleteByName('SMAILY_PASSWORD') - // Customer sync - || !Configuration::deleteByName('SMAILY_ENABLE_CUSTOMER_SYNC') - || !Configuration::deleteByName('SMAILY_CUSTOMER_CRON_TOKEN') - || !Configuration::deleteByName('SMAILY_SYNCRONIZE_ADDITIONAL') - || !Configuration::deleteByName('SMAILY_OPTIN_ENABLED') - || !Configuration::deleteByName('SMAILY_OPTIN_AUTORESPONDER') - // Abandoned cart - || !Configuration::deleteByName('SMAILY_ENABLE_ABANDONED_CART') - || !Configuration::deleteByName('SMAILY_CART_CRON_TOKEN') - || !Configuration::deleteByName('SMAILY_CART_AUTORESPONDER') - || !Configuration::deleteByName('SMAILY_ABANDONED_CART_TIME') - || !Configuration::deleteByName('SMAILY_CART_SYNCRONIZE_ADDITIONAL') - // Rss - || !Configuration::deleteByName('SMAILY_RSS_CATEGORY_ID') - || !Configuration::deleteByName('SMAILY_RSS_LIMIT') - || !Configuration::deleteByName('SMAILY_RSS_SORT_BY') - || !Configuration::deleteByName('SMAILY_RSS_SORT_ORDER') - - // Remove sideTab of smaily module. - // || !$this->uninstallTab('AdminSmailyforprestashopAjax') + || !$this->removeConfiguration() + || !$this->dropTables() ) { return false; } - Db::getInstance()->execute('DROP TABLE IF EXISTS ' . _DB_PREFIX_ . 'smaily_cart'); return true; } @@ -146,200 +108,81 @@ public function getContent(): void { $route = $this->get('router')->generate('smailyforprestashop_module_configuration'); Tools::redirectAdmin($route); - // $this->context->controller->addJquery(); - - // // Remove credentials button. - // if (Tools::isSubmit('smaily_remove_credentials')) { - // if (Configuration::updateValue('SMAILY_SUBDOMAIN', '') - // && Configuration::updateValue('SMAILY_USERNAME', '') - // && Configuration::updateValue('SMAILY_PASSWORD', '') - // ) { - // // Disable customer sync. - // Configuration::updateValue('SMAILY_ENABLE_CRON', 0); - // // Disable abandoned cart cron and remove all autoresponders. - // Configuration::updateValue('SMAILY_ENABLE_ABANDONED_CART', 0); - // Configuration::updateValue('SMAILY_CART_AUTORESPONDER', ''); - // Configuration::updateValue('SMAILY_OPTIN_AUTORESPONDER', ''); - // // Return success message. - // $output .= $this->displayConfirmation($this->trans('Credentials removed!')); - // } else { - // // Return error message - // $output .= $this->displayError($this->trans('Something went wrong removing credentials')); - // } - // } - - // // Customer sync form. - // if (Tools::isSubmit('smaily_submit_configuration')) { - // // Enable Cron. - // $enable_cron = pSQL(Tools::getValue('SMAILY_ENABLE_CRON')); - // // Customer cron token. - // $customer_cron_token = pSQL(Tools::getValue('SMAILY_CUSTOMER_CRON_TOKEN')); - // $customer_cron_token = trim(Tools::stripslashes($customer_cron_token)); - // if (empty($customer_cron_token)) { - // $customer_cron_token = uniqid(); - // } - - // // Syncronize additional. - // $syncronize_additional = Tools::getValue('SMAILY_SYNCRONIZE_ADDITIONAL'); - // $escaped_sync_additional = []; - // if (!empty($syncronize_additional)) { - // foreach ($syncronize_additional as $value) { - // $escaped_sync_additional[] = pSQL($value); - // } - // } - // $optin_enabled = pSQL(Tools::getValue('SMAILY_OPTIN_ENABLED')); - // $customer_join_autoresponder = pSQL(Tools::getValue('SMAILY_OPTIN_AUTORESPONDER')); - // // Check if subdomain is saved to db to verify that credentials are validated. - // if (empty(Configuration::get('SMAILY_SUBDOMAIN'))) { - // // Display error message. - // $output .= $this->displayError($this->trans('Please validate credentials before saving.')); - // } else { - // // Update settings. - // Configuration::updateValue('SMAILY_ENABLE_CRON', $enable_cron); - // Configuration::updateValue('SMAILY_CUSTOMER_CRON_TOKEN', $customer_cron_token); - // Configuration::updateValue('SMAILY_SYNCRONIZE_ADDITIONAL', serialize($escaped_sync_additional)); - // Configuration::updateValue('SMAILY_OPTIN_ENABLED', $optin_enabled); - // Configuration::updateValue('SMAILY_OPTIN_AUTORESPONDER', $customer_join_autoresponder); - // // Display success message. - // $output .= $this->displayConfirmation($this->trans('Settings updated')); - // } - // } - - // // Abandoned cart form. - // if (Tools::isSubmit('smaily_submit_abandoned_cart')) { - // // Enable Abandoned Cart. - // $enable_abandoned_cart = pSQL(Tools::getValue('SMAILY_ENABLE_ABANDONED_CART')); - // // Abandoned cart delay time - // $abandoned_cart_time = pSQL(Tools::getValue('SMAILY_ABANDONED_CART_TIME')); - // $abandoned_cart_time = (int) trim(Tools::stripslashes($abandoned_cart_time)); - // // Cart cron token. - // $cart_cron_token = pSQL(Tools::getValue('SMAILY_CART_CRON_TOKEN')); - // $cart_cron_token = trim(Tools::stripslashes($cart_cron_token)); - // if (empty($cart_cron_token)) { - // $cart_cron_token = uniqid(); - // } - // // Abandoned cart Autoresponder - // $cart_autoresponder = pSQL(Tools::getValue('SMAILY_CART_AUTORESPONDER')); - // // Syncronize additional for abandoned cart template. - // $cart_syncronize_additional = Tools::getValue('SMAILY_CART_SYNCRONIZE_ADDITIONAL'); - // $cart_escaped_sync_additional = []; - // if (!empty($cart_syncronize_additional)) { - // foreach ($cart_syncronize_additional as $value) { - // $cart_escaped_sync_additional[] = pSQL($value); - // } - // } - // // Validate autoresponder time and autoresponder for cart. - // if ($abandoned_cart_time < 15) { - // // Display error message. - // $output .= $this->displayError($this->trans('Abandoned cart delay has to be atleast 15 minutes.')); - // } elseif ((int) $enable_abandoned_cart === 1 && empty($cart_autoresponder)) { - // // Display error message. - // $output .= $this->displayError($this->trans('Select autoresponder for abandoned cart.')); - // } else { - // Configuration::updateValue('SMAILY_ENABLE_ABANDONED_CART', $enable_abandoned_cart); - // Configuration::updateValue('SMAILY_CART_AUTORESPONDER', $cart_autoresponder); - // Configuration::updateValue('SMAILY_ABANDONED_CART_TIME', $abandoned_cart_time); - // Configuration::updateValue('SMAILY_CART_CRON_TOKEN', $cart_cron_token); - // Configuration::updateValue( - // 'SMAILY_CART_SYNCRONIZE_ADDITIONAL', - // serialize($cart_escaped_sync_additional) - // ); - // // Display success message. - // $output .= $this->displayConfirmation($this->trans('Abandoned cart settings updated')); - // } - // } - // // RSS - // if (Tools::isSubmit('smaily_submit_rss')) { - // // Update settings. - // $category_id = (int) Tools::getValue('SMAILY_RSS_CATEGORY_ID'); - // $category_id = $category_id <= 0 ? false : $category_id; - // Configuration::updateValue('SMAILY_RSS_CATEGORY_ID', $category_id); - - // $limit = (int) Tools::getValue('SMAILY_RSS_LIMIT'); - // $limit = $limit >= 1 && $limit <= 250 ? $limit : 50; - // Configuration::updateValue('SMAILY_RSS_LIMIT', $limit); - - // $sort_by = Tools::getValue('SMAILY_RSS_SORT_BY'); - // $sort_by = in_array($sort_by, SmailyForPrestashop::$allowed_sort_by_values, true) ? $sort_by : 'date_upd'; - // Configuration::updateValue('SMAILY_RSS_SORT_BY', $sort_by); - - // $sort_order = Tools::getValue('SMAILY_RSS_SORT_ORDER'); - // $sort_order = in_array($sort_order, ['asc', 'desc'], true) ? $sort_order : 'desc'; - // Configuration::updateValue('SMAILY_RSS_SORT_ORDER', $sort_order); - - // // Display success message. - // $output .= $this->displayConfirmation($this->trans('RSS settings updated')); - // } - - // // Get syncronize additional values for template. - // if (false !== unserialize(Configuration::get('SMAILY_SYNCRONIZE_ADDITIONAL'))) { - // $sync_array = unserialize(Configuration::get('SMAILY_SYNCRONIZE_ADDITIONAL')); - // } else { - // $sync_array = []; - // } - // // Get abandoned cart syncronize additional values for template. - // if (false !== unserialize(Configuration::get('SMAILY_CART_SYNCRONIZE_ADDITIONAL'))) { - // $cart_sync_array = unserialize(Configuration::get('SMAILY_CART_SYNCRONIZE_ADDITIONAL')); - // } else { - // $cart_sync_array = []; - // } - // // Get customer cron token or generate random string when not set. - // if (false != Configuration::get('SMAILY_CUSTOMER_CRON_TOKEN')) { - // $customer_cron_token = pSQL(Configuration::get('SMAILY_CUSTOMER_CRON_TOKEN')); - // } else { - // $customer_cron_token = uniqid(); - // } - // // Get cart cron token or generate random string when not set. - // if (false != Configuration::get('SMAILY_CART_CRON_TOKEN')) { - // $cart_cron_token = pSQL(Configuration::get('SMAILY_CART_CRON_TOKEN')); - // } else { - // $cart_cron_token = uniqid(); - // } - // // Get customer join autoresponder values for template. - // $optin_autoresponder = pSQL(Configuration::get('SMAILY_OPTIN_AUTORESPONDER')); - // // Get abandoned cart autoresponder values for template. - // $cart_autoresponder = pSQL(Configuration::get('SMAILY_CART_AUTORESPONDER')); - - // $categories = Category::getNestedCategories(null, Context::getContext()->language->id); - - // // Assign variables to template if available. - // $this->context->smarty->assign( - // [ - // 'smaily_enable_cron' => pSQL(Configuration::get('SMAILY_ENABLE_CRON')), - // 'smaily_enable_abandoned_cart' => pSQL(Configuration::get('SMAILY_ENABLE_ABANDONED_CART')), - // 'smaily_subdomain' => pSQL(Configuration::get('SMAILY_SUBDOMAIN')), - // 'smaily_username' => pSQL(Configuration::get('SMAILY_USERNAME')), - // 'smaily_password' => pSQL(Configuration::get('SMAILY_PASSWORD')), - // 'smaily_cart_autoresponder' => $cart_autoresponder, - // 'smaily_abandoned_cart_time' => pSQL(Configuration::get('SMAILY_ABANDONED_CART_TIME')), - // 'smaily_syncronize_additional' => $sync_array, - // 'smaily_cart_syncronize_additional' => $cart_sync_array, - // 'token' => Tools::getAdminTokenLite('AdminSmailyforprestashopAjax'), - // 'smaily_rssfeed_url' => $this->buildRssUrlFromSettings(), - // 'smaily_customer_cron_url' => Context::getContext()->link->getModuleLink( - // 'smailyforprestashop', - // 'SmailyCustomerCron', - // ['token' => $customer_cron_token] - // ), - // 'smaily_customer_cron_token' => $customer_cron_token, - // 'smaily_cart_cron_token' => $cart_cron_token, - // 'smaily_cart_cron_url' => Context::getContext()->link->getModuleLink( - // 'smailyforprestashop', - // 'SmailyCartCron', - // ['token' => $cart_cron_token] - // ), - // 'smaily_rss_available_category_ids' => $this->recursivelyNormalizeCategoriesForTemplate($categories), - // 'smaily_rss_selected_category_id' => pSQL(Configuration::get('SMAILY_RSS_CATEGORY_ID')), - // 'smaily_rss_limit' => pSQL(Configuration::get('SMAILY_RSS_LIMIT')), - // 'smaily_rss_sort_by' => pSQL(Configuration::get('SMAILY_RSS_SORT_BY')), - // 'smaily_rss_sort_order' => pSQL(Configuration::get('SMAILY_RSS_SORT_ORDER')), - // 'smaily_optin_autoresponder' => $optin_autoresponder, - // 'smaily_optin_enabled' => pSQL(Configuration::get('SMAILY_OPTIN_ENABLED')), - // ] - // ); - - // // Display settings form. - // return $output .= $this->display(__FILE__, 'views/templates/admin/smaily_configure.tpl'); + } + + private function createTables(): bool + { + $sql = 'CREATE TABLE IF NOT EXISTS ' . _DB_PREFIX_ . 'smaily_cart ( + `id_smaily_cart` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , + `id_customer` INT UNSIGNED NULL , + `id_cart` INT UNSIGNED NULL , + `date_sent` DATETIME NOT NULL) ENGINE=' . _MYSQL_ENGINE_; + + return DB::getInstance()->execute($sql); + } + + private function dropTables(): bool + { + return Db::getInstance()->execute('DROP TABLE IF EXISTS ' . _DB_PREFIX_ . 'smaily_cart'); + } + + private function registerHooks(): bool + { + // Check that the module can be attached to the header hook. + // || !$this->registerHook('backOfficeHeader') + // || !$this->registerHook('footerBefore') + // || !$this->registerHook('leftColumn') + // || !$this->registerHook('rightColumn') + // Add Newsletter subscription form. + // User has option to trigger opt-in when customer joins store & newsletter through sign-up. + // || !$this->registerHook('actionCustomerAccountAdd') + return true; + } + + private function addDefaultConfiguration(): bool + { + $defaults = [ + // Account + 'SMAILY_SUBDOMAIN' => '', + 'SMAILY_USERNAME' => '', + 'SMAILY_PASSWORD' => '', + // Customer Sync + 'SMAILY_ENABLE_CUSTOMER_SYNC' => false, + 'SMAILY_CUSTOMER_CRON_TOKEN' => bin2hex(random_bytes(6)), + 'SMAILY_SYNCRONIZE_ADDITIONAL' => serialize([]), + 'SMAILY_OPTIN_ENABLED' => false, + 'SMAILY_OPTIN_AUTORESPONDER' => '', + // Abandoned Cart + 'SMAILY_ENABLE_ABANDONED_CART' => 0, + 'SMAILY_CART_CRON_TOKEN' => bin2hex(random_bytes(6)), + 'SMAILY_CART_AUTORESPONDER' => '', + 'SMAILY_ABANDONED_CART_TIME' => 15, + 'SMAILY_CART_SYNCRONIZE_ADDITIONAL' => serialize([]), + // RSS + 'SMAILY_RSS_CATEGORY_ID' => '', + 'SMAILY_RSS_LIMIT' => 50, + 'SMAILY_RSS_SORT_BY' => 'date_upd', + 'SMAILY_RSS_SORT_ORDER' => 'desc', + ]; + + foreach (self::CONFIGURATION_KEYS as $key) { + if (!Configuration::updateValue($key, $defaults[$key])) { + return false; + } + } + + return true; + } + + private function removeConfiguration(): bool + { + foreach (self::CONFIGURATION_KEYS as $key) { + if (!Configuration::deleteByName($key)) { + return false; + } + } + + return true; } // // Display Block Newsletter in footer. From 1fe4ea75425846186e411721206edfe0ef0aabfe Mon Sep 17 00:00:00 2001 From: Kaarel Date: Wed, 17 Apr 2024 09:51:04 +0300 Subject: [PATCH 023/114] Add null value to autoresponder choices list --- src/src/Form/ChoiceProvider/Autoresponder.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/src/Form/ChoiceProvider/Autoresponder.php b/src/src/Form/ChoiceProvider/Autoresponder.php index f2659d9..f7c4323 100644 --- a/src/src/Form/ChoiceProvider/Autoresponder.php +++ b/src/src/Form/ChoiceProvider/Autoresponder.php @@ -31,7 +31,7 @@ public function __construct(TranslatorInterface $translator, ConfigurationInterf public function getChoices(): array { $noAutoresponders = [ - $this->translator->trans('No autoresponders available', [], 'Module.Smailyforprestashop.Admin') => null, + $this->translator->trans('No automation workflows available', [], 'Module.Smailyforprestashop.Admin') => null, ]; $subdomain = $this->configuration->get('SMAILY_SUBDOMAIN'); @@ -54,7 +54,9 @@ public function getChoices(): array return $noAutoresponders; } - $choices = []; + $choices = [ + $this->translator->trans('Select an automation workflow', [], 'Module.Smailyforprestashop.Admin') => null, + ]; foreach ($autoresponders as $autoresponder) { $choices[$autoresponder['name']] = $autoresponder['id']; } From a48410ba155bdf5638078c468f4412d8d3e672d3 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Wed, 17 Apr 2024 09:51:38 +0300 Subject: [PATCH 024/114] Add empty jsVariables array to template when account not connected --- src/src/Controller/ModuleConfigurationController.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/src/Controller/ModuleConfigurationController.php b/src/src/Controller/ModuleConfigurationController.php index 021fa3a..fb01583 100644 --- a/src/src/Controller/ModuleConfigurationController.php +++ b/src/src/Controller/ModuleConfigurationController.php @@ -39,6 +39,7 @@ public function index(Request $request): Response 'accountConfigurationForm' => $accountForm->createView(), 'accountConnected' => false, 'tab' => $tab, + 'jsVariables' => [], ]); } From 6fd643437a66743531d64b19208faa0034011ac5 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Wed, 17 Apr 2024 11:43:15 +0300 Subject: [PATCH 025/114] Add actionCustomerAccountAdd hook --- src/config/front/services.yml | 6 ++- src/lib/Api.php | 9 ++-- src/smailyforprestashop.php | 73 +++++++++---------------- src/src/Controller/OptInController.php | 75 ++++++++++++++++++++++++++ 4 files changed, 110 insertions(+), 53 deletions(-) create mode 100644 src/src/Controller/OptInController.php diff --git a/src/config/front/services.yml b/src/config/front/services.yml index 73dcc4f..7933f6d 100644 --- a/src/config/front/services.yml +++ b/src/config/front/services.yml @@ -3,4 +3,8 @@ services: public: true prestashop.module.smailyforprestashop.front.rss_feed_product_repository: - class: PrestaShop\Module\SmailyForPrestaShop\Repository\RssFeedProductsRepository + class: 'PrestaShop\Module\SmailyForPrestaShop\Repository\RssFeedProductsRepository' + + prestashop.module.smailyforprestashop.controller.opt_in_controller: + class: 'PrestaShop\Module\SmailyForPrestaShop\Controller\OptInController' + arguments: ['@prestashop.adapter.legacy.configuration'] diff --git a/src/lib/Api.php b/src/lib/Api.php index 941a382..9863434 100644 --- a/src/lib/Api.php +++ b/src/lib/Api.php @@ -5,6 +5,7 @@ namespace PrestaShop\Module\SmailyForPrestaShop\Lib; use GuzzleHttp\Client; +use GuzzleHttp\RequestOptions; use Psr\Http\Message\ResponseInterface; class Api @@ -56,11 +57,9 @@ public function createSubscribers(array $data): ResponseInterface public function triggerAutomation(string $autoresponder, array $addresses): ResponseInterface { return $this->client->post('/api/autoresponder.php', [ - 'headers' => [ - 'Content-Type' => 'application/json', - ], - 'body' => [ - 'addresses' => json_encode($addresses), + RequestOptions::JSON => [ + 'autoresponder' => $autoresponder, + 'addresses' => $addresses, ], ]); } diff --git a/src/smailyforprestashop.php b/src/smailyforprestashop.php index 72cccb4..66928cb 100644 --- a/src/smailyforprestashop.php +++ b/src/smailyforprestashop.php @@ -128,6 +128,14 @@ private function dropTables(): bool private function registerHooks(): bool { + if ( + !$this->registerHook('actionCustomerAccountAdd') + ) { + return false; + } + + return true; + // Check that the module can be attached to the header hook. // || !$this->registerHook('backOfficeHeader') // || !$this->registerHook('footerBefore') @@ -135,8 +143,7 @@ private function registerHooks(): bool // || !$this->registerHook('rightColumn') // Add Newsletter subscription form. // User has option to trigger opt-in when customer joins store & newsletter through sign-up. - // || !$this->registerHook('actionCustomerAccountAdd') - return true; + // || } private function addDefaultConfiguration(): bool @@ -237,53 +244,25 @@ private function removeConfiguration(): bool // } // } - // /** - // * Trigger Smaily Opt-in if customer joins with newsletter subscription. - // * - // * @param array $params array of parameters being passed to the hook function - // * - // * @return bool success of the operation - // */ - // public function hookActionCustomerAccountAdd($params) - // { - // if (empty($params['newCustomer'])) { - // return false; - // } - // $email = $params['newCustomer']->email; - // if (!Validate::isEmail($email)) { - // return false; - // } - // $is_newsletter_checked = $params['newCustomer']->newsletter === '1'; - // $is_subscription_optin_enabled = Configuration::get('SMAILY_OPTIN_ENABLED') === '1'; - // if (!$is_newsletter_checked || !$is_subscription_optin_enabled) { - // return false; - // } + /** + * Trigger Smaily Opt-in if customer joins with newsletter subscription. + * + * @param array $params array of parameters being passed to the hook function + * + * @return bool success of the operation + */ + public function hookActionCustomerAccountAdd($params) + { + if (empty($params['newCustomer'])) { + return false; + } - // $autoresponder = Configuration::get('SMAILY_OPTIN_AUTORESPONDER'); - // $autoresponder_id = empty($autoresponder) ? '' : (int) $autoresponder; - // $query = [ - // 'autoresponder' => $autoresponder_id, - // 'addresses' => [['email' => $email]], - // ]; - // $response = $this->callApi('autoresponder', $query, 'POST'); - // if (array_key_exists('success', $response) - // && isset($response['result']['code']) - // && $response['result']['code'] === 101) { - // return true; // All good. - // } else { - // // Supply query values and save log of unsuccesful operation. - // $this->logErrorWithFormatting( - // 'Failed to opt-in new customer with email: %s using autoresponder ID: %s. ' . - // 'Smaily response code: %s, message: %s.', - // $query['addresses'][0]['email'], - // $query['autoresponder'], - // $response['result']['code'], - // $response['result']['message'] - // ); + $customer = $params['newCustomer']; - // return false; - // } - // } + $controller = $this->get('prestashop.module.smailyforprestashop.controller.opt_in_controller'); + + return $controller->optInCustomer($customer); + } // public function installTab($parent_class, $class_name, $name): bool // { diff --git a/src/src/Controller/OptInController.php b/src/src/Controller/OptInController.php new file mode 100644 index 0000000..61dc0ef --- /dev/null +++ b/src/src/Controller/OptInController.php @@ -0,0 +1,75 @@ +configuration = $configuration; + + $subdomain = $this->configuration->get('SMAILY_SUBDOMAIN'); + $username = $this->configuration->get('SMAILY_USERNAME'); + $password = $this->configuration->get('SMAILY_PASSWORD'); + + if (!empty($subdomain) && !empty($username) && !empty($password)) { + $this->api = new Api($subdomain, $username, $password); + } + } + + public function optInCustomer(\Customer $customer): bool + { + if ($customer->newsletter !== '1') { + return false; + } + + if (!$this->configuration->getBoolean('SMAILY_OPTIN_ENABLED')) { + return false; + } + + $autoresponder = $this->configuration->get('SMAILY_OPTIN_AUTORESPONDER'); + if (empty($this->api) || empty($autoresponder)) { + return false; + } + + $response = $this->api->triggerAutomation($autoresponder, [ + ['email' => $customer->email], + ]); + + if ($response->getStatusCode() !== 200) { + return false; + } + + $body = json_decode($response->getBody()->getContents(), true); + + if (isset($body['code']) && $body['code'] === 101) { + return true; + } else { + Logger::logErrorWithFormatting('Failed to opt-in new customer with email: %s using autoresponder ID: %s. ' . + 'Smaily response code: %s, message: %s.', + $customer->email, + $autoresponder, + $body['code'], + $body['message'] + ); + + return false; + } + } +} From eaf4ee5f7c871cb141f141524f7e4fe773002fc4 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Wed, 17 Apr 2024 12:38:34 +0300 Subject: [PATCH 026/114] Move module installing logic to separate class --- src/smailyforprestashop.php | 210 ++++------------------------------ src/src/Install/Installer.php | 131 +++++++++++++++++++++ 2 files changed, 155 insertions(+), 186 deletions(-) create mode 100644 src/src/Install/Installer.php diff --git a/src/smailyforprestashop.php b/src/smailyforprestashop.php index 66928cb..80d68bd 100644 --- a/src/smailyforprestashop.php +++ b/src/smailyforprestashop.php @@ -27,32 +27,12 @@ exit; } +require_once __DIR__ . '/vendor/autoload.php'; + +use PrestaShop\Module\SmailyForPrestaShop\Install\Installer; + class SmailyForPrestaShop extends Module { - private const CONFIGURATION_KEYS = [ - // Account - 'SMAILY_SUBDOMAIN', - 'SMAILY_USERNAME', - 'SMAILY_PASSWORD', - // Customer Sync - 'SMAILY_ENABLE_CUSTOMER_SYNC', - 'SMAILY_CUSTOMER_CRON_TOKEN', - 'SMAILY_SYNCRONIZE_ADDITIONAL', - 'SMAILY_OPTIN_ENABLED', - 'SMAILY_OPTIN_AUTORESPONDER', - // Abandoned Cart - 'SMAILY_ENABLE_ABANDONED_CART', - 'SMAILY_CART_CRON_TOKEN', - 'SMAILY_CART_AUTORESPONDER', - 'SMAILY_ABANDONED_CART_TIME', - 'SMAILY_CART_SYNCRONIZE_ADDITIONAL', - // RSS - 'SMAILY_RSS_CATEGORY_ID', - 'SMAILY_RSS_LIMIT', - 'SMAILY_RSS_SORT_BY', - 'SMAILY_RSS_SORT_ORDER', - ]; - public function __construct() { $this->name = 'smailyforprestashop'; @@ -76,32 +56,25 @@ public function __construct() public function install(): bool { + if (!parent::install()) { + return false; + } + // Check if multistore is enabled if (Shop::isFeatureActive()) { Shop::setContext(Shop::CONTEXT_ALL); } - if (!parent::install() - || !$this->addDefaultConfiguration() - || !$this->createTables() - || !$this->registerHooks() - ) { - return false; - } + $installer = new Installer(); - return true; + return $installer->install($this); } public function uninstall(): bool { - if (!parent::uninstall() - || !$this->removeConfiguration() - || !$this->dropTables() - ) { - return false; - } + $installer = new Installer(); - return true; + return $installer->uninstall() && parent::uninstall(); } public function getContent(): void @@ -110,140 +83,31 @@ public function getContent(): void Tools::redirectAdmin($route); } - private function createTables(): bool + // Display Block Newsletter in footer. + public function hookDisplayFooterBefore($params) { - $sql = 'CREATE TABLE IF NOT EXISTS ' . _DB_PREFIX_ . 'smaily_cart ( - `id_smaily_cart` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , - `id_customer` INT UNSIGNED NULL , - `id_cart` INT UNSIGNED NULL , - `date_sent` DATETIME NOT NULL) ENGINE=' . _MYSQL_ENGINE_; - - return DB::getInstance()->execute($sql); + return $this->renderBlockNewsLetter(); } - private function dropTables(): bool + // Display Block Newsletter in left column. + public function hookDisplayLeftColumn($params) { - return Db::getInstance()->execute('DROP TABLE IF EXISTS ' . _DB_PREFIX_ . 'smaily_cart'); + return $this->renderBlockNewsLetter(); } - private function registerHooks(): bool + // Display Block Newsletter in right column. + public function hookDisplayRightColumn($params) { - if ( - !$this->registerHook('actionCustomerAccountAdd') - ) { - return false; - } - - return true; - - // Check that the module can be attached to the header hook. - // || !$this->registerHook('backOfficeHeader') - // || !$this->registerHook('footerBefore') - // || !$this->registerHook('leftColumn') - // || !$this->registerHook('rightColumn') - // Add Newsletter subscription form. - // User has option to trigger opt-in when customer joins store & newsletter through sign-up. - // || + return $this->renderBlockNewsLetter(); } - private function addDefaultConfiguration(): bool + public function renderBlockNewsLetter() { - $defaults = [ - // Account - 'SMAILY_SUBDOMAIN' => '', - 'SMAILY_USERNAME' => '', - 'SMAILY_PASSWORD' => '', - // Customer Sync - 'SMAILY_ENABLE_CUSTOMER_SYNC' => false, - 'SMAILY_CUSTOMER_CRON_TOKEN' => bin2hex(random_bytes(6)), - 'SMAILY_SYNCRONIZE_ADDITIONAL' => serialize([]), - 'SMAILY_OPTIN_ENABLED' => false, - 'SMAILY_OPTIN_AUTORESPONDER' => '', - // Abandoned Cart - 'SMAILY_ENABLE_ABANDONED_CART' => 0, - 'SMAILY_CART_CRON_TOKEN' => bin2hex(random_bytes(6)), - 'SMAILY_CART_AUTORESPONDER' => '', - 'SMAILY_ABANDONED_CART_TIME' => 15, - 'SMAILY_CART_SYNCRONIZE_ADDITIONAL' => serialize([]), - // RSS - 'SMAILY_RSS_CATEGORY_ID' => '', - 'SMAILY_RSS_LIMIT' => 50, - 'SMAILY_RSS_SORT_BY' => 'date_upd', - 'SMAILY_RSS_SORT_ORDER' => 'desc', - ]; + $controller = $this->get('prestashop.module.smailyforprestashop.controller.block_newsletter_controller'); - foreach (self::CONFIGURATION_KEYS as $key) { - if (!Configuration::updateValue($key, $defaults[$key])) { - return false; - } - } - - return true; - } - - private function removeConfiguration(): bool - { - foreach (self::CONFIGURATION_KEYS as $key) { - if (!Configuration::deleteByName($key)) { - return false; - } - } - - return true; + return $controller->render(); } - // // Display Block Newsletter in footer. - // public function hookDisplayFooterBefore($params) - // { - // // Add subdomain to template. - // $this->context->smarty->assign([ - // 'smaily_subdomain' => pSQL(Configuration::get('SMAILY_SUBDOMAIN')), - // ]); - - // return $this->display(__FILE__, 'smaily_blocknewsletter.tpl'); - // } - - // // Display Block Newsletter in left column. - // public function hookDisplayLeftColumn($params) - // { - // // Add subdomain to template. - // $this->context->smarty->assign([ - // 'smaily_subdomain' => pSQL(Configuration::get('SMAILY_SUBDOMAIN')), - // ]); - - // return $this->display(__FILE__, 'smaily_blocknewsletter_column.tpl'); - // } - - // // Display Block Newsletter in right column. - // public function hookDisplayRightColumn($params) - // { - // return $this->hookDisplayLeftColumn($params); - // } - - // // Add JQuerry and module javascript. - // public function hookDisplayBackOfficeHeader() - // { - // // Add module javascript. - // if (Tools::getValue('configure') === $this->name) { - // // Add JQuerry before module javascript. - // $this->context->controller->addJquery(); - // $this->context->controller->addJS([$this->_path . 'views/js/smaily_module.js']); - // // Add variables for js. - // $rss_url = Context::getContext()->link->getModuleLink('smailyforprestashop', 'SmailyRssFeed'); - // Media::addJsDef( - // [ - // 'controller_url' => $this->context->link->getAdminLink($this->controllerAdmin), - // 'smaily_rss_url' => $rss_url, - // 'smailymessages' => [ - // 'no_autoresponders' => $this->trans('No autoresponders created in Smaily!'), - // 'no_connection' => $this->trans('There seems to be some problem with connecting to Smaily!'), - // 'credentials_validated' => $this->trans('Smaily credentials validated!'), - // ], - // ] - // ); - // } - // } - /** * Trigger Smaily Opt-in if customer joins with newsletter subscription. * @@ -263,30 +127,4 @@ public function hookActionCustomerAccountAdd($params) return $controller->optInCustomer($customer); } - - // public function installTab($parent_class, $class_name, $name): bool - // { - // $tab = new Tab(); - // $tab->id_parent = (int) Tab::getIdFromClassName($parent_class); - // $tab->name = []; - // foreach (Language::getLanguages(true) as $lang) { - // $tab->name[$lang['id_lang']] = $name; - // } - // $tab->class_name = $class_name; - // $tab->module = $this->name; - // $tab->active = 0; - - // return $tab->add(); - // } - - // public function uninstallTab($class_name): bool - // { - // // Retrieve Tab ID - // $id_tab = (int) Tab::getIdFromClassName($class_name); - // // Load tab - // $tab = new Tab((int) $id_tab); - - // // Delete it - // return $tab->delete(); - // } } diff --git a/src/src/Install/Installer.php b/src/src/Install/Installer.php new file mode 100644 index 0000000..16f0a58 --- /dev/null +++ b/src/src/Install/Installer.php @@ -0,0 +1,131 @@ +createTables() + || !$this->addDefaultConfiguration() + || !$this->registerHooks($module) + ) { + return false; + } + + return true; + } + + public function uninstall(): bool + { + if (!$this->removeTables() + || !$this->removeConfiguration() + ) { + return false; + } + + return true; + } + + private function createTables(): bool + { + $sql = 'CREATE TABLE IF NOT EXISTS ' . _DB_PREFIX_ . 'smaily_cart ( + `id_smaily_cart` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , + `id_customer` INT UNSIGNED NULL , + `id_cart` INT UNSIGNED NULL , + `date_sent` DATETIME NOT NULL) ENGINE=' . _MYSQL_ENGINE_; + + return \Db::getInstance()->execute($sql); + } + + private function removeTables(): bool + { + $sql = 'DROP TABLE IF EXISTS ' . _DB_PREFIX_ . 'smaily_cart'; + + return \Db::getInstance()->execute($sql); + } + + private function registerHooks(\Module $module): bool + { + $hooks = [ + 'actionCustomerAccountAdd', + 'displayFooterBefore', + 'displayLeftColumn', + 'displayRightColumn', + ]; + + return (bool) $module->registerHook($hooks); + } + + private function addDefaultConfiguration(): bool + { + $defaults = [ + // Account + 'SMAILY_SUBDOMAIN' => '', + 'SMAILY_USERNAME' => '', + 'SMAILY_PASSWORD' => '', + // Customer Sync + 'SMAILY_ENABLE_CUSTOMER_SYNC' => false, + 'SMAILY_CUSTOMER_CRON_TOKEN' => bin2hex(random_bytes(6)), + 'SMAILY_SYNCRONIZE_ADDITIONAL' => serialize([]), + 'SMAILY_OPTIN_ENABLED' => false, + 'SMAILY_OPTIN_AUTORESPONDER' => '', + // Abandoned Cart + 'SMAILY_ENABLE_ABANDONED_CART' => 0, + 'SMAILY_CART_CRON_TOKEN' => bin2hex(random_bytes(6)), + 'SMAILY_CART_AUTORESPONDER' => '', + 'SMAILY_ABANDONED_CART_TIME' => 15, + 'SMAILY_CART_SYNCRONIZE_ADDITIONAL' => serialize([]), + // RSS + 'SMAILY_RSS_CATEGORY_ID' => '', + 'SMAILY_RSS_LIMIT' => 50, + 'SMAILY_RSS_SORT_BY' => 'date_upd', + 'SMAILY_RSS_SORT_ORDER' => 'desc', + ]; + + foreach (self::CONFIGURATION_KEYS as $key) { + if (!\Configuration::updateValue($key, $defaults[$key])) { + return false; + } + } + + return true; + } + + private function removeConfiguration(): bool + { + foreach (self::CONFIGURATION_KEYS as $key) { + if (!\Configuration::deleteByName($key)) { + return false; + } + } + + return true; + } +} From 3b3ef85bcb822e547a12976b80de533efb9ce201 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Fri, 19 Apr 2024 10:49:16 +0300 Subject: [PATCH 027/114] Add xdebug support --- docker-compose.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index 37262ef..b1b6ba2 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -3,13 +3,14 @@ version: '3.7' services: prestashop: container_name: prestashop - image: prestashop/prestashop-flashlight:latest + image: prestashop/prestashop-flashlight:nightly depends_on: mysql: condition: service_healthy environment: - PS_DOMAIN=localhost:8080 - DEBUG_MODE=true + - XDEBUG_ENABLED=true ports: - 8080:80 volumes: From ec6bf6d4d49d1e1a4a01c617b23285b426530655 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Fri, 19 Apr 2024 12:25:48 +0300 Subject: [PATCH 028/114] Add opt in trigger for subscription form registration --- src/config/admin/services.yml | 4 +- src/config/front/services.yml | 6 +- src/smailyforprestashop.php | 36 +- src/src/Controller/OptInController.php | 36 ++ src/src/Install/Installer.php | 5 +- src/views/templates/admin/index.php | 4 +- .../templates/admin/smaily_configure.tpl | 438 ------------------ src/views/templates/hook/index.php | 30 -- .../templates/hook/smaily_blocknewsletter.tpl | 57 --- .../hook/smaily_blocknewsletter_column.tpl | 57 --- src/views/templates/index.php | 4 +- 11 files changed, 62 insertions(+), 615 deletions(-) delete mode 100644 src/views/templates/admin/smaily_configure.tpl delete mode 100644 src/views/templates/hook/index.php delete mode 100644 src/views/templates/hook/smaily_blocknewsletter.tpl delete mode 100644 src/views/templates/hook/smaily_blocknewsletter_column.tpl diff --git a/src/config/admin/services.yml b/src/config/admin/services.yml index fb1d883..d742dc8 100644 --- a/src/config/admin/services.yml +++ b/src/config/admin/services.yml @@ -5,13 +5,13 @@ services: # Choice providers prestashop.module.smailyforprestashop.choice_provider.autoresponders: class: 'PrestaShop\Module\SmailyForPrestaShop\Form\ChoiceProvider\Autoresponder' - arguments: + arguments: - '@translator' - '@prestashop.adapter.legacy.configuration' prestashop.module.smailyforprestashop.choice_provider.product_categories: class: 'PrestaShop\Module\SmailyForPrestaShop\Form\ChoiceProvider\ProductCategory' - arguments: + arguments: - '@translator' - '@prestashop.adapter.data_provider.category' diff --git a/src/config/front/services.yml b/src/config/front/services.yml index 7933f6d..cf2e4b1 100644 --- a/src/config/front/services.yml +++ b/src/config/front/services.yml @@ -3,8 +3,8 @@ services: public: true prestashop.module.smailyforprestashop.front.rss_feed_product_repository: - class: 'PrestaShop\Module\SmailyForPrestaShop\Repository\RssFeedProductsRepository' + class: PrestaShop\Module\SmailyForPrestaShop\Repository\RssFeedProductsRepository prestashop.module.smailyforprestashop.controller.opt_in_controller: - class: 'PrestaShop\Module\SmailyForPrestaShop\Controller\OptInController' - arguments: ['@prestashop.adapter.legacy.configuration'] + class: PrestaShop\Module\SmailyForPrestaShop\Controller\OptInController + arguments: ["@prestashop.adapter.legacy.configuration"] diff --git a/src/smailyforprestashop.php b/src/smailyforprestashop.php index 80d68bd..7f1b71d 100644 --- a/src/smailyforprestashop.php +++ b/src/smailyforprestashop.php @@ -29,6 +29,7 @@ require_once __DIR__ . '/vendor/autoload.php'; +use PrestaShop\Module\SmailyForPrestaShop\Controller\OptInController; use PrestaShop\Module\SmailyForPrestaShop\Install\Installer; class SmailyForPrestaShop extends Module @@ -43,7 +44,7 @@ public function __construct() $this->need_instance = 0; $this->ps_versions_compliancy = [ 'min' => '8.0.0', - 'max' => '8.99.99', + 'max' => '9.99.99', ]; $this->bootstrap = true; @@ -83,29 +84,21 @@ public function getContent(): void Tools::redirectAdmin($route); } - // Display Block Newsletter in footer. - public function hookDisplayFooterBefore($params) + public function hookActionNewsletterRegistrationAfter($params) { - return $this->renderBlockNewsLetter(); - } - - // Display Block Newsletter in left column. - public function hookDisplayLeftColumn($params) - { - return $this->renderBlockNewsLetter(); - } - - // Display Block Newsletter in right column. - public function hookDisplayRightColumn($params) - { - return $this->renderBlockNewsLetter(); + if (isset($params['email'], $params['module']) && $params['module'] === 'ps_emailsubscription') { + /** @var OptInController */ + $controller = $this->get('prestashop.module.smailyforprestashop.controller.opt_in_controller'); + $controller->optInSubscriber($params['email']); + } } - public function renderBlockNewsLetter() + public function hookActionEmailSendBefore($params) { - $controller = $this->get('prestashop.module.smailyforprestashop.controller.block_newsletter_controller'); - - return $controller->render(); + // TODO: Disable mail sending on + // - newsletter_conf + // - newsletter_verif + // Return null to cancel sending email. } /** @@ -115,7 +108,7 @@ public function renderBlockNewsLetter() * * @return bool success of the operation */ - public function hookActionCustomerAccountAdd($params) + public function hookActionCustomerAccountAdd($params): bool { if (empty($params['newCustomer'])) { return false; @@ -123,6 +116,7 @@ public function hookActionCustomerAccountAdd($params) $customer = $params['newCustomer']; + /** @var OptInController */ $controller = $this->get('prestashop.module.smailyforprestashop.controller.opt_in_controller'); return $controller->optInCustomer($customer); diff --git a/src/src/Controller/OptInController.php b/src/src/Controller/OptInController.php index 61dc0ef..a17aead 100644 --- a/src/src/Controller/OptInController.php +++ b/src/src/Controller/OptInController.php @@ -72,4 +72,40 @@ public function optInCustomer(\Customer $customer): bool return false; } } + + public function optInSubscriber(string $email): bool + { + if (!$this->configuration->getBoolean('SMAILY_OPTIN_ENABLED')) { + return false; + } + + $autoresponder = $this->configuration->get('SMAILY_OPTIN_AUTORESPONDER'); + if (empty($this->api) || empty($autoresponder)) { + return false; + } + + $response = $this->api->triggerAutomation($autoresponder, [ + ['email' => $email], + ]); + + if ($response->getStatusCode() !== 200) { + return false; + } + + $body = json_decode($response->getBody()->getContents(), true); + + if (isset($body['code']) && $body['code'] === 101) { + return true; + } else { + Logger::logErrorWithFormatting('Failed to opt-in new customer with email: %s using autoresponder ID: %s. ' . + 'Smaily response code: %s, message: %s.', + $email, + $autoresponder, + $body['code'], + $body['message'] + ); + + return false; + } + } } diff --git a/src/src/Install/Installer.php b/src/src/Install/Installer.php index 16f0a58..41fa8fe 100644 --- a/src/src/Install/Installer.php +++ b/src/src/Install/Installer.php @@ -75,9 +75,8 @@ private function registerHooks(\Module $module): bool { $hooks = [ 'actionCustomerAccountAdd', - 'displayFooterBefore', - 'displayLeftColumn', - 'displayRightColumn', + 'actionNewsletterRegistrationAfter', + 'actionEmailSendBefore', ]; return (bool) $module->registerHook($hooks); diff --git a/src/views/templates/admin/index.php b/src/views/templates/admin/index.php index 691f051..778ada9 100644 --- a/src/views/templates/admin/index.php +++ b/src/views/templates/admin/index.php @@ -1,6 +1,6 @@ . * * @author Smaily - * @copyright 2018 Smaily + * @copyright 2024 Smaily * @license GPL3 */ header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); diff --git a/src/views/templates/admin/smaily_configure.tpl b/src/views/templates/admin/smaily_configure.tpl deleted file mode 100644 index 6299f18..0000000 --- a/src/views/templates/admin/smaily_configure.tpl +++ /dev/null @@ -1,438 +0,0 @@ -{* - * 2018 Smaily - * - * NOTICE OF LICENSE - * - * Smaily for PrestaShop is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * Smaily for PrestaShop is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Smaily for PrestaShop. If not, see . - * - * @author Smaily - * @copyright 2018 Smaily - * @license GPL3 - *} - -{*Error messages*} -
-
-
-
-{* Panel for form *} -
-
- {l s="Smaily Module Settings" mod='smailyforprestashop'} - -
- {*Navigation links*} - - {* Form content *} -
-
- {* General settings and credentials validation *} -
-
-
-
- -
- -

- {l s="For example demo from https://demo.sendsmaily.net/" mod='smailyforprestashop'} -

-
-
-
- -
- -
-
-
- - -
-
- -
-
- {* Customer sync settings *} -
-
-
-
- -
- - - - - - - -
-
-
- -
-
- -
-
- -
-
- -
-
- -
-

- {l s="Select additional fields to syncronize" mod='smailyforprestashop'} -

-
-
-
- -
- -

- {l s="Token is required for cron security. Use this auto generated one or replace with your own." mod='smailyforprestashop'} -

-
-
-
- -
-

{$smaily_customer_cron_url}

-

- {l s="To schedule automatic sync, set up CRON in your hosting and use this URL." mod='smailyforprestashop'} -

-
-
-
- -
- - - - - - - -

- {l s="Opt-in will only be triggered when customer creates an account & signs-up for newsletter. Changes to newsletter subscription in admin won't trigger an opt-in." mod='smailyforprestashop'} -

-
-
-
- -
- -
-
-
- -
-
- {* Abandoned cart settings *} -
-
-
-
- -
- - - - - - - -
-
-
- -
- -
-
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-

- {l s="Select additional fields to send to abandoned cart template." mod='smailyforprestashop'} -

-
-
-
- -
-
- - - {l s="Minutes" mod='smailyforprestashop'} - -
-

- {l s="Time after cart is considered abandoned after last cart edit from customer. Minimum 15 minutes." mod='smailyforprestashop'} -

-
-
-
- -
- -

- {l s="Token is required for cron security. Use this auto generated one or replace with your own." mod='smailyforprestashop'} -

-
-
-
- -
-

{$smaily_cart_cron_url}

-

- {l s="To schedule automatic sync, set up CRON in your hosting and use this URL." mod='smailyforprestashop'} -

-
-
-
- -
-
- {* RSS feed settings *} -
-
-
-
- -
- -

- {l s="Show products only from this category." mod='smailyforprestashop'} -

-
-
-
- -
-
- -
-

- {l s="Limit how many products you will add to your feed. Maximum 250." mod='smailyforprestashop'} -

-
-
-
- -
- -
-
-
- -
- -
-
-
- -
-

{$smaily_rssfeed_url}

-

{l s="Copy this URL into your template editor's RSS block" mod='smailyforprestashop'}

-
-
-
- -
-
-
-
diff --git a/src/views/templates/hook/index.php b/src/views/templates/hook/index.php deleted file mode 100644 index 691f051..0000000 --- a/src/views/templates/hook/index.php +++ /dev/null @@ -1,30 +0,0 @@ -. - * - * @author Smaily - * @copyright 2018 Smaily - * @license GPL3 - */ -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; diff --git a/src/views/templates/hook/smaily_blocknewsletter.tpl b/src/views/templates/hook/smaily_blocknewsletter.tpl deleted file mode 100644 index d9a69cd..0000000 --- a/src/views/templates/hook/smaily_blocknewsletter.tpl +++ /dev/null @@ -1,57 +0,0 @@ -{* - * 2018 Smaily - * - * NOTICE OF LICENSE - * - * Smaily for PrestaShop is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * Smaily for PrestaShop is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Smaily for PrestaShop. If not, see . - * - * @author Smaily - * @copyright 2018 Smaily - * @license GPL3 - *} - {if !empty($smaily_subdomain)} -
-
-

{l s="Get our latest news and special sales" mod='smailyforprestashop'}

-
-
-
-
- - - - -
- -
-
-
-
-

{l s="You may unsubscribe at any moment." mod='smailyforprestashop'}

- {if isset($smarty.get.message)} -

- {if $smarty.get.code == 101} - {l s="Thank you for your subscription!" mod='smailyforprestashop'} - {else} - {l s="Something went wrong with subscription, please try again!" mod='smailyforprestashop'} - {/if} -

- {/if} -
-
-
-
-
-
-{/if} diff --git a/src/views/templates/hook/smaily_blocknewsletter_column.tpl b/src/views/templates/hook/smaily_blocknewsletter_column.tpl deleted file mode 100644 index 708e0cd..0000000 --- a/src/views/templates/hook/smaily_blocknewsletter_column.tpl +++ /dev/null @@ -1,57 +0,0 @@ -{* - * 2018 Smaily - * - * NOTICE OF LICENSE - * - * Smaily for PrestaShop is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * Smaily for PrestaShop is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Smaily for PrestaShop. If not, see . - * - * @author Smaily - * @copyright 2018 Smaily - * @license GPL3 - *} - {if !empty($smaily_subdomain)} -
-
-

{l s="Get our latest news and special sales" mod='smailyforprestashop'}

-
-
-
-
- - - - -
- -
-
-
-
-

{l s="You may unsubscribe at any moment." mod='smailyforprestashop'}

- {if isset($smarty.get.message)} -

- {if $smarty.get.code == 101} - {l s="Thank you for your subscription!" mod='smailyforprestashop'} - {else} - {l s="Something went wrong with subscription, please try again!" mod='smailyforprestashop'} - {/if} -

- {/if} -
-
-
-
-
-
-{/if} diff --git a/src/views/templates/index.php b/src/views/templates/index.php index 691f051..778ada9 100644 --- a/src/views/templates/index.php +++ b/src/views/templates/index.php @@ -1,6 +1,6 @@ . * * @author Smaily - * @copyright 2018 Smaily + * @copyright 2024 Smaily * @license GPL3 */ header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); From f8c910ffbae5d150d7d0be953700c97fdaf0f011 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Mon, 22 Apr 2024 11:12:14 +0300 Subject: [PATCH 029/114] Disable newsletter subscriptions plugin mail sending --- src/smailyforprestashop.php | 8 ----- .../ModuleConfigurationController.php | 12 ++++++- .../CustomerSyncFormDataConfiguration.php | 34 +++++++++++++++---- src/src/Install/Installer.php | 1 - 4 files changed, 38 insertions(+), 17 deletions(-) diff --git a/src/smailyforprestashop.php b/src/smailyforprestashop.php index 7f1b71d..556b554 100644 --- a/src/smailyforprestashop.php +++ b/src/smailyforprestashop.php @@ -93,14 +93,6 @@ public function hookActionNewsletterRegistrationAfter($params) } } - public function hookActionEmailSendBefore($params) - { - // TODO: Disable mail sending on - // - newsletter_conf - // - newsletter_verif - // Return null to cancel sending email. - } - /** * Trigger Smaily Opt-in if customer joins with newsletter subscription. * diff --git a/src/src/Controller/ModuleConfigurationController.php b/src/src/Controller/ModuleConfigurationController.php index fb01583..1d53e41 100644 --- a/src/src/Controller/ModuleConfigurationController.php +++ b/src/src/Controller/ModuleConfigurationController.php @@ -55,10 +55,20 @@ public function index(Request $request): Response } if ($customerSyncFormClicked && $customerSyncForm->isValid()) { - $errors = $customerSyncFormDataHandler->save($customerSyncForm->getData()); + $formData = $customerSyncForm->getData(); + $errors = $customerSyncFormDataHandler->save($formData); if (empty($errors)) { $this->addFlash('success', $this->trans('Configuration saved.', 'Modules.Smailyforprestashop.Admin')); + if ($formData['optin_enabled']) { + $this->addFlash( + 'success', + $this->trans( + 'You have selected an automation to trigger opt-in email sending. We have disabled Newsletter Subscription plugins verification, confirmation and voucher email sending in order to avoid duplicate emails!', + 'Modules.Smailyforprestashop.Admin', + ) + ); + } return $this->redirectToRoute('smailyforprestashop_module_configuration', ['tab' => $tab]); } diff --git a/src/src/Form/CustomerSyncFormDataConfiguration.php b/src/src/Form/CustomerSyncFormDataConfiguration.php index ceb0856..ae20bc8 100644 --- a/src/src/Form/CustomerSyncFormDataConfiguration.php +++ b/src/src/Form/CustomerSyncFormDataConfiguration.php @@ -37,7 +37,13 @@ public function updateConfiguration(array $formData): array { $errors = []; - if (empty($formData['cron_token'])) { + $syncEnabled = $formData['enabled']; + $additionalFields = $formData['sync_additional']; + $optInEnabled = $formData['optin_enabled']; + $cronToken = $formData['cron_token']; + $autoresponder = $formData['autoresponder']; + + if (empty($cronToken)) { $errors[] = [ 'key' => 'Please provide a cron token for customer synchronization.', 'domain' => 'Modules.Smailyforprestashop.Admin', @@ -45,7 +51,7 @@ public function updateConfiguration(array $formData): array ]; } - if ($formData['optin_enabled'] && empty($formData['autoresponder'])) { + if ($optInEnabled && empty($autoresponder)) { $errors[] = [ 'key' => 'Please select an automation workflow for customer Opt-In trigger.', 'domain' => 'Modules.Smailyforprestashop.Admin', @@ -53,12 +59,26 @@ public function updateConfiguration(array $formData): array ]; } + // Clear autoresponder when disabling customer sign-up; + if (!$optInEnabled) { + $autoresponder = null; + } + if ($this->validateConfiguration($formData) && empty($errors)) { - $this->configuration->set('SMAILY_ENABLE_CUSTOMER_SYNC', $formData['enabled']); - $this->configuration->set('SMAILY_SYNCRONIZE_ADDITIONAL', serialize($formData['sync_additional'])); - $this->configuration->set('SMAILY_CUSTOMER_CRON_TOKEN', $formData['cron_token']); - $this->configuration->set('SMAILY_OPTIN_ENABLED', $formData['optin_enabled']); - $this->configuration->set('SMAILY_OPTIN_AUTORESPONDER', $formData['autoresponder']); + $this->configuration->set('SMAILY_ENABLE_CUSTOMER_SYNC', $syncEnabled); + $this->configuration->set('SMAILY_SYNCRONIZE_ADDITIONAL', serialize($additionalFields)); + $this->configuration->set('SMAILY_CUSTOMER_CRON_TOKEN', $cronToken); + $this->configuration->set('SMAILY_OPTIN_ENABLED', $optInEnabled); + $this->configuration->set('SMAILY_OPTIN_AUTORESPONDER', $autoresponder); + + if ($optInEnabled) { + // We disable ps_emailsubscription plugin mail sending in order provide a place + // for sending opt-in emails and to avoid sending duplicate emails to customers. + // These emails can and should be implemented as a part of the automation workflow. + $this->configuration->set('NW_VERIFICATION_EMAIL', 0); + $this->configuration->set('NW_CONFIRMATION_EMAIL', 0); + $this->configuration->set('NW_VOUCHER_CODE', null); + } } return $errors; diff --git a/src/src/Install/Installer.php b/src/src/Install/Installer.php index 41fa8fe..299c88f 100644 --- a/src/src/Install/Installer.php +++ b/src/src/Install/Installer.php @@ -76,7 +76,6 @@ private function registerHooks(\Module $module): bool $hooks = [ 'actionCustomerAccountAdd', 'actionNewsletterRegistrationAfter', - 'actionEmailSendBefore', ]; return (bool) $module->registerHook($hooks); From 5adb77a4ad437af5e78f39b0b3a1d563718989f2 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Mon, 22 Apr 2024 12:19:34 +0300 Subject: [PATCH 030/114] Add mailhog as a service --- docker-compose.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docker-compose.yaml b/docker-compose.yaml index b1b6ba2..4f552a5 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -63,6 +63,12 @@ services: ports: - 8888:80 + mailhog: + image: mailhog/mailhog:latest + container_name: mailhog + ports: + - 8025:8025 + volumes: prestashop-data: prestashop-db-data: From 030d26aeeae04f20cbed5f2dcba8d4f53a82e323 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Mon, 22 Apr 2024 12:21:38 +0300 Subject: [PATCH 031/114] Add notice to newsletter subscriptions module settings page --- src/overrides/ps_emailsubscription.php | 27 +++++++++++++++++++ src/src/Install/Installer.php | 37 ++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 src/overrides/ps_emailsubscription.php diff --git a/src/overrides/ps_emailsubscription.php b/src/overrides/ps_emailsubscription.php new file mode 100644 index 0000000..a3d3103 --- /dev/null +++ b/src/overrides/ps_emailsubscription.php @@ -0,0 +1,27 @@ +get('prestashop.adapter.legacy.configuration'); + $optInEnabled = $configuration->getBoolean('SMAILY_OPTIN_ENABLED'); + + if ($optInEnabled) { + $notice = '
' . + $this->trans('Smaily for PrestaShop modules opt-in automation trigger is active. Set up verification, confirmation and voucher sending in Smaily to avoid sending double emails.', [], 'Modules.Smailyforprestashop.Admin') . + '' . + ' ' . + $this->trans('How to set up automation flow?', [], 'Modules.Smailyforprestashop.Admin') . + '' . + '
'; + } + + return $notice . $html; + } +} diff --git a/src/src/Install/Installer.php b/src/src/Install/Installer.php index 299c88f..159a8f8 100644 --- a/src/src/Install/Installer.php +++ b/src/src/Install/Installer.php @@ -35,6 +35,7 @@ public function install(\Module $module): bool if (!$this->createTables() || !$this->addDefaultConfiguration() || !$this->registerHooks($module) + || !$this->copyOverrides() ) { return false; } @@ -46,6 +47,7 @@ public function uninstall(): bool { if (!$this->removeTables() || !$this->removeConfiguration() + || !$this->deleteOverrides() ) { return false; } @@ -126,4 +128,39 @@ private function removeConfiguration(): bool return true; } + + private function copyOverrides(): bool + { + $from = _PS_MODULE_DIR_ . join(DIRECTORY_SEPARATOR, ['smailyforprestashop', 'overrides', 'ps_emailsubscription.php']); + $to = _PS_OVERRIDE_DIR_ . join(DIRECTORY_SEPARATOR, ['modules', 'ps_emailsubscription', 'ps_emailsubscription.php']); + + // We add only notice that is not critical for module operation. + // Skip overriding if other modules have already registered an override. + if (!file_exists($to)) { + $overrideModulesDir = _PS_OVERRIDE_DIR_ . join(DIRECTORY_SEPARATOR, ['modules']); + $overridePsEmailsubscriptionDir = _PS_OVERRIDE_DIR_ . join(DIRECTORY_SEPARATOR, ['modules', 'ps_emailsubscription']); + if (!file_exists($overrideModulesDir)) { + mkdir($overrideModulesDir, 0755); + } + + if (!file_exists($overridePsEmailsubscriptionDir)) { + mkdir($overridePsEmailsubscriptionDir, 0755); + } + + copy($from, $to); + } + + return true; + } + + private function deleteOverrides(): bool + { + $psEmailSubscriptionOverride = _PS_OVERRIDE_DIR_ . join(DIRECTORY_SEPARATOR, ['modules', 'ps_emailsubscription', 'ps_emailsubscription.php']); + + if (file_exists($psEmailSubscriptionOverride)) { + unlink($psEmailSubscriptionOverride); + } + + return true; + } } From 4729da4bcd7ff4164ea97a2563c101843a3037ba Mon Sep 17 00:00:00 2001 From: Kaarel Date: Tue, 23 Apr 2024 11:40:16 +0300 Subject: [PATCH 032/114] Refactor abandoned cart controller --- src/config/front/services.yml | 5 + src/controllers/front/SmailyCartCron.php | 192 +-------------- .../Controller/AbandonedCartController.php | 225 ++++++++++++++++++ src/src/Install/Installer.php | 2 +- src/src/Model/AbandonedCart.php | 39 +++ src/src/Model/AbandonedCartCollection.php | 69 ++++++ src/src/Model/SentCart.php | 39 +++ 7 files changed, 389 insertions(+), 182 deletions(-) create mode 100644 src/src/Controller/AbandonedCartController.php create mode 100644 src/src/Model/AbandonedCart.php create mode 100644 src/src/Model/AbandonedCartCollection.php create mode 100644 src/src/Model/SentCart.php diff --git a/src/config/front/services.yml b/src/config/front/services.yml index cf2e4b1..1bfc51d 100644 --- a/src/config/front/services.yml +++ b/src/config/front/services.yml @@ -8,3 +8,8 @@ services: prestashop.module.smailyforprestashop.controller.opt_in_controller: class: PrestaShop\Module\SmailyForPrestaShop\Controller\OptInController arguments: ["@prestashop.adapter.legacy.configuration"] + + prestashop.module.smailyforprestashop.controller.abandoned_cart_controller: + class: PrestaShop\Module\SmailyForPrestaShop\Controller\AbandonedCartController + arguments: + - '@prestashop.adapter.legacy.configuration' diff --git a/src/controllers/front/SmailyCartCron.php b/src/controllers/front/SmailyCartCron.php index 5618257..476d547 100644 --- a/src/controllers/front/SmailyCartCron.php +++ b/src/controllers/front/SmailyCartCron.php @@ -23,196 +23,26 @@ */ declare(strict_types=1); +require_once _PS_MODULE_DIR_ . join(DIRECTORY_SEPARATOR, ['smailyforprestashop', 'vendor', 'autoload.php']); + class SmailyforprestashopSmailyCartCronModuleFrontController extends ModuleFrontController { - public function init() + public function __construct() { - parent::init(); - header('Content-Type: text/plain'); - if (Tools::getValue('token') == Configuration::get('SMAILY_CART_CRON_TOKEN')) { - $this->abandonedCart(); - exit; - } else { - echo 'Access denied!'; - exit(1); - } + parent::__construct(); } - /** - * Send abandoned cart emails to customers. - * - * @return void - */ - private function abandonedCart() + public function initContent() { - if (Configuration::get('SMAILY_ENABLE_ABANDONED_CART') !== '1') { - echo 'Abandoned cart disabled!'; - exit(1); - } - - // Settings. - $autoresponder_id = pSQL(Configuration::get('SMAILY_CART_AUTORESPONDER')); - $delay = pSQL(Configuration::get('SMAILY_ABANDONED_CART_TIME')); - $sync_fields = unserialize(Configuration::get('SMAILY_CART_SYNCRONIZE_ADDITIONAL')); - - $abandoned_carts = $this->getAbandonedCarts(); - foreach ($abandoned_carts as $abandoned_cart) { - $cart_updated_time = strtotime($abandoned_cart['date_upd']); - $reminder_time = strtotime('+' . $delay . ' minutes', $cart_updated_time); - $current_time = strtotime(date('Y-m-d H:i') . ':00'); - // Don't continue if cart delay time has not passed. - if ($current_time < $reminder_time) { - continue; - } - - // Get cart by id. - $id_customer = (int) $abandoned_cart['id_customer']; - $id_cart = (int) $abandoned_cart['id_cart']; - $cart = new Cart($abandoned_cart['id_cart']); - - // Get cart products. - $products = $cart->getProducts(); - // Don't continue if no products in cart. - if (empty($products)) { - continue; - } - - // Initialize Smaily query. - $adresses = [ - 'email' => $abandoned_cart['email'], - ]; - - if (in_array('first_name', $sync_fields)) { - $adresses['first_name'] = $abandoned_cart['firstname']; - } - - if (in_array('last_name', $sync_fields)) { - $adresses['last_name'] = $abandoned_cart['lastname']; - } - - // Populate abandoned cart with empty values for legacy api. - $fields_available = [ - 'name', - 'description', - 'sku', - 'price', - 'quantity', - 'base_price', - ]; - foreach ($fields_available as $field) { - for ($i = 1; $i <= 10; ++$i) { - $adresses['product_' . $field . '_' . $i] = ''; - } - } + parent::initContent(); + header('Content-Type: text/plain'); - $selected_fields = array_intersect($fields_available, $sync_fields); - // Collect products of abandoned cart. - $count = 1; - foreach ($products as $product) { - // Get only 10 products. - if ($count > 10) { - $adresses['over_10_products'] = 'true'; - break; - } - // Standardize template parameters across integrations. - foreach ($selected_fields as $sync_field) { - switch ($sync_field) { - case 'base_price': - $adresses['product_base_price_' . $count] = Tools::displayPrice( - $product['price_without_reduction'] - ); - break; - case 'price': - $adresses['product_price_' . $count] = Tools::displayPrice( - $product['price_with_reduction'] - ); - break; - case 'sku': - $adresses['product_sku_' . $count] = $product['reference']; - break; - case 'description': - $adresses['product_description_' . $count] = htmlspecialchars( - $product['description_short'] - ); - break; - default: - $adresses['product_' . $sync_field . '_' . $count] = $product[$sync_field]; - break; - } - } - ++$count; - } + $controller = $this->get('prestashop.module.smailyforprestashop.controller.abandoned_cart_controller'); - // Smaily api query. - $query = [ - 'autoresponder' => $autoresponder_id, - 'addresses' => [$adresses], - ]; - // Send cart data to smaily api. - $response = $this->module->callApi('autoresponder', $query, 'POST'); - // If email sent successfully update sent status in database. - if (array_key_exists('success', $response) - && isset($response['result']['code']) - && $response['result']['code'] === 101) { - $this->updateSentStatus($id_customer, $id_cart); - } else { - $this->module->logErrorWithFormatting( - 'Failed sending out abandoned cart email for email: %s, cart_id: %s. ' . - 'Smaily response code: %s, message: %s.', - $abandoned_cart['email'], - $abandoned_cart['id_cart'], - $response['result']['code'], - $response['result']['message'] - ); - } + if (!$controller->sync(Tools::getValue('token'))) { + exit(1); } - echo 'Abandoned carts emails sent!'; - } - /** - * Gets abandoned cart data from DB. - * - * @return array Abandoned carts array - */ - private function getAbandonedCarts() - { - // Select all carts where cart_id is not on orders table and exclude if exist in smaily_cart table. - // Gather customer data also. - $sql = 'SELECT c.id_cart, - c.id_customer, - c.date_upd, - cu.firstname, - cu.lastname, - cu.email - FROM ' . _DB_PREFIX_ . 'cart c - LEFT JOIN ' . _DB_PREFIX_ . 'orders o - ON (o.id_cart = c.id_cart) - RIGHT JOIN ' . _DB_PREFIX_ . 'customer cu - ON (cu.id_customer = c.id_customer) - LEFT OUTER JOIN ' . _DB_PREFIX_ . 'smaily_cart sc - ON (c.id_cart = sc.id_cart) - WHERE sc.id_cart IS NULL - AND DATE_SUB(CURDATE(),INTERVAL 10 DAY) <= c.date_add - AND o.id_order IS NULL'; - - $sql .= Shop::addSqlRestriction(Shop::SHARE_CUSTOMER, 'c'); - $sql .= ' GROUP BY cu.id_customer'; - - return Db::getInstance()->executeS($sql); - } - - /** - * Updates Sent email status in smaily cart table. - * - * @param int $id_customer Customer ID - * @param int $id_cart Cart ID - * - * @return void - */ - private function updateSentStatus($id_customer, $id_cart) - { - $sql = 'INSERT INTO ' . _DB_PREFIX_ . 'smaily_cart (id_customer, id_cart, date_sent) - VALUES (' . $id_customer . ', ' . $id_cart . ', CURRENT_TIMESTAMP)'; - Db::getInstance()->execute($sql); + exit; } } diff --git a/src/src/Controller/AbandonedCartController.php b/src/src/Controller/AbandonedCartController.php new file mode 100644 index 0000000..a24dd35 --- /dev/null +++ b/src/src/Controller/AbandonedCartController.php @@ -0,0 +1,225 @@ +configuration = $configuration; + + $subdomain = $configuration->get('SMAILY_SUBDOMAIN'); + $username = $configuration->get('SMAILY_USERNAME'); + $password = $configuration->get('SMAILY_PASSWORD'); + + if (!empty($subdomain) && !empty($username) && !empty($password)) { + $this->api = new Api($subdomain, $username, $password); + } + } + + public function sync(string $token): bool + { + if ($this->configuration->get('SMAILY_CART_CRON_TOKEN') !== $token) { + echo 'Access denied!'; + + return false; + } + + if (!$this->configuration->getBoolean('SMAILY_ENABLE_ABANDONED_CART')) { + echo 'Abandoned cart disabled!'; + + return false; + } + + if (empty($this->api)) { + echo 'Account setup not finished!'; + + return false; + } + + $count = 0; + $failCount = 0; + $success = true; + + $abandonedCartsCollection = new AbandonedCartCollection(); + foreach ($abandonedCartsCollection->carts as $cart) { + // Notice! + // When running cron job in the same browser the session is shared + // and the abandoned cart `date_upd` time is renewed on each request. + // This doesn't allow the check to pass. I recommend running in the cron job + // in private window to avoid this. + if (!$this->isDelayTimePassed($cart)) { + break; + } + + if (!$this->send($cart)) { + ++$failCount; + $success = false; + } + + ++$count; + } + + echo sprintf("%s abandoned cart email(s) sent!\r\n", $count); + if (!$success) { + echo sprintf("%s failed cart(s), check logs!\r\n", $failCount); + } + + return $success; + } + + private function isDelayTimePassed(AbandonedCart $cart): bool + { + $cart_updated_time = strtotime($cart->dateUpdated); + $syncInterval = $this->configuration->get('SMAILY_ABANDONED_CART_TIME'); + + $reminder_time = strtotime('+' . $syncInterval . ' minutes', $cart_updated_time); + $current_time = strtotime(date('Y-m-d H:i') . ':00'); + // Don't continue if cart delay time has not passed. + if ($current_time < $reminder_time) { + return false; + } + + return true; + } + + /** + * Send abandoned cart emails to customers. + * + * @return void + */ + private function send(AbandonedCart $cart): bool + { + $response = $this->api->triggerAutomation( + $this->configuration->get('SMAILY_CART_AUTORESPONDER'), + [$this->generatePayload($cart)], + ); + + if ($response->getStatusCode() !== 200) { + Logger::logErrorWithFormatting( + 'Failed sending out abandoned cart email for email: %s, cart_id: %s. ' . + 'Smaily response HTTP response code: %s.', + $cart->email, + $cart->cartID, + $response->getStatusCode() + ); + + return false; + } + + $body = json_decode($response->getBody()->getContents(), true); + if (!isset($body['code']) || $body['code'] !== 101) { + Logger::logErrorWithFormatting( + 'Failed sending out abandoned cart email for email: %s, cart_id: %s. ' . + 'Smaily response code: %s, message: %s.', + $cart->email, + $cart->cartID, + $body['code'], + $body['message'] + ); + + return false; + } + + $sentCart = new SentCart(); + $sentCart->id_customer = $cart->customerID; + $sentCart->id_cart = $cart->cartID; + $sentCart->save(); + + return true; + } + + private function generatePayload(AbandonedCart $cart): array + { + $payload = [ + 'email' => $cart->email, + ]; + + $syncAdditional = unserialize($this->configuration->get('SMAILY_CART_SYNCRONIZE_ADDITIONAL')); + if (in_array('first_name', $syncAdditional)) { + $payload['first_name'] = $cart->firstName; + } + + if (in_array('last_name', $syncAdditional)) { + $payload['last_name'] = $cart->lastName; + } + + // Populate abandoned cart with empty values for legacy api. + $fields_available = [ + 'name', + 'description', + 'sku', + 'price', + 'quantity', + 'base_price', + ]; + foreach ($fields_available as $field) { + for ($i = 1; $i <= 10; ++$i) { + $payload['product_' . $field . '_' . $i] = ''; + } + } + + $selected_fields = array_intersect($fields_available, array_keys(array_filter($syncAdditional))); + + // Collect products of abandoned cart. + $count = 1; + $currency = \Context::getContext()->currency->iso_code; + foreach ($cart->products as $product) { + // Get only 10 products. + if ($count > 10) { + $payload['over_10_products'] = 'true'; + break; + } + // Standardize template parameters across integrations. + foreach ($selected_fields as $sync_field) { + switch ($sync_field) { + case 'base_price': + $payload['product_base_price_' . $count] = \Context::getContext()->currentLocale->formatPrice( + $product['price_without_reduction'], + $currency + ); + break; + case 'price': + $payload['product_price_' . $count] = \Context::getContext()->currentLocale->formatPrice( + $product['price_with_reduction'], + $currency + ); + break; + case 'sku': + $payload['product_sku_' . $count] = $product['reference']; + break; + case 'description': + $payload['product_description_' . $count] = htmlspecialchars( + $product['description_short'] + ); + break; + default: + $payload['product_' . $sync_field . '_' . $count] = $product[$sync_field]; + break; + } + } + ++$count; + } + + return $payload; + } +} diff --git a/src/src/Install/Installer.php b/src/src/Install/Installer.php index 159a8f8..3f20bb5 100644 --- a/src/src/Install/Installer.php +++ b/src/src/Install/Installer.php @@ -61,7 +61,7 @@ private function createTables(): bool `id_smaily_cart` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , `id_customer` INT UNSIGNED NULL , `id_cart` INT UNSIGNED NULL , - `date_sent` DATETIME NOT NULL) ENGINE=' . _MYSQL_ENGINE_; + `date_upd` DATETIME NOT NULL) ENGINE=' . _MYSQL_ENGINE_; return \Db::getInstance()->execute($sql); } diff --git a/src/src/Model/AbandonedCart.php b/src/src/Model/AbandonedCart.php new file mode 100644 index 0000000..b17e01d --- /dev/null +++ b/src/src/Model/AbandonedCart.php @@ -0,0 +1,39 @@ +db = \Db::getInstance(); + $this->carts = $this->getCarts(); + } + + /** + * Gets abandoned cart data from DB. + * + * @return AbandonedCart[] Abandoned carts array + */ + private function getCarts() + { + $sql = new \DbQuery(); + $sql->select('c.`id_cart`, c.`id_customer`, c.`date_upd`, cu.`firstname`, cu.`lastname`, cu.`email`'); + $sql->from('cart', 'c'); + $sql->leftJoin('orders', 'o', 'o.`id_cart` = c.`id_cart`'); + $sql->rightJoin('customer', 'cu', 'cu.`id_customer` = c.`id_customer`'); + $sql->leftOuterJoin('smaily_cart', 'sc', 'c.`id_cart` = sc.`id_cart`'); + $sql->where('sc.`id_cart` IS NULL'); + $sql->where('DATE_SUB(CURDATE(),INTERVAL 10 DAY) <= c.date_add'); + $sql->where('o.`id_order` IS NULL'); + $sql->groupBy('cu.`id_customer`'); + $sql .= \Shop::addSqlRestriction(\Shop::SHARE_CUSTOMER, 'c'); + + $carts = $this->db->executeS($sql); + + $result = []; + foreach ($carts as $abandoned_cart) { + $prestaCart = new \Cart($abandoned_cart['id_cart']); + $products = $prestaCart->getProducts(); + // Don't continue if no products in cart. + if (empty($products)) { + continue; + } + + $cart = new AbandonedCart(); + $cart->cartID = (int) $abandoned_cart['id_cart']; + $cart->customerID = (int) $abandoned_cart['id_customer']; + $cart->dateUpdated = $abandoned_cart['date_upd']; + $cart->email = $abandoned_cart['email']; + $cart->firstName = $abandoned_cart['firstname']; + $cart->lastName = $abandoned_cart['lastname']; + $cart->products = $products; + + $result[] = $cart; + } + + return $result; + } +} diff --git a/src/src/Model/SentCart.php b/src/src/Model/SentCart.php new file mode 100644 index 0000000..54d68e8 --- /dev/null +++ b/src/src/Model/SentCart.php @@ -0,0 +1,39 @@ + 'smaily_cart', + 'primary' => 'id_smaily_cart', + 'multilang' => false, + 'fields' => [ + 'id_customer' => ['type' => self::TYPE_INT], + 'id_cart' => ['type' => self::TYPE_INT], + 'date_upd' => ['type' => self::TYPE_DATE, 'shop' => true, 'validate' => 'isDate'], + ], + ]; +} From ef038e52e98d5e2376f242427c75357dea39cdc4 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Tue, 23 Apr 2024 12:14:37 +0300 Subject: [PATCH 033/114] Add date_add field to SentCart for automatic timestamp management --- src/src/Install/Installer.php | 1 + src/src/Model/SentCart.php | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/src/src/Install/Installer.php b/src/src/Install/Installer.php index 3f20bb5..39cc37c 100644 --- a/src/src/Install/Installer.php +++ b/src/src/Install/Installer.php @@ -61,6 +61,7 @@ private function createTables(): bool `id_smaily_cart` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , `id_customer` INT UNSIGNED NULL , `id_cart` INT UNSIGNED NULL , + `date_add` DATETIME NOT NULL, `date_upd` DATETIME NOT NULL) ENGINE=' . _MYSQL_ENGINE_; return \Db::getInstance()->execute($sql); diff --git a/src/src/Model/SentCart.php b/src/src/Model/SentCart.php index 54d68e8..61d09c6 100644 --- a/src/src/Model/SentCart.php +++ b/src/src/Model/SentCart.php @@ -21,6 +21,11 @@ class SentCart extends \ObjectModel */ public $id_cart; + /** + * @var string; + */ + public $date_add; + /** * @var string */ @@ -33,6 +38,7 @@ class SentCart extends \ObjectModel 'fields' => [ 'id_customer' => ['type' => self::TYPE_INT], 'id_cart' => ['type' => self::TYPE_INT], + 'date_add' => ['type' => self::TYPE_DATE, 'shop' => true, 'validate' => 'isDate'], 'date_upd' => ['type' => self::TYPE_DATE, 'shop' => true, 'validate' => 'isDate'], ], ]; From 7492a8d7dd2f68e5d98f9f99f14f4cfd667fd505 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Tue, 23 Apr 2024 15:16:15 +0300 Subject: [PATCH 034/114] Refactor subscriber sync controller --- src/config/front/services.yml | 5 + ...AdminSmailyforprestashopAjaxController.php | 188 -------------- src/controllers/admin/index.php | 30 --- src/controllers/front/SmailyCustomerCron.php | 198 +------------- src/controllers/front/index.php | 30 --- src/controllers/index.php | 30 --- src/lib/Api.php | 5 +- src/src/Controller/CustomerSyncController.php | 241 ++++++++++++++++++ .../CustomerSyncFormDataConfiguration.php | 1 - src/src/Form/CustomerSyncFormType.php | 1 - src/src/Model/Subscriber.php | 29 +++ src/src/Model/SubscriberCollection.php | 54 ++++ 12 files changed, 341 insertions(+), 471 deletions(-) delete mode 100644 src/controllers/admin/AdminSmailyforprestashopAjaxController.php delete mode 100644 src/controllers/admin/index.php delete mode 100644 src/controllers/front/index.php delete mode 100644 src/controllers/index.php create mode 100644 src/src/Controller/CustomerSyncController.php create mode 100644 src/src/Model/Subscriber.php create mode 100644 src/src/Model/SubscriberCollection.php diff --git a/src/config/front/services.yml b/src/config/front/services.yml index 1bfc51d..106e28b 100644 --- a/src/config/front/services.yml +++ b/src/config/front/services.yml @@ -13,3 +13,8 @@ services: class: PrestaShop\Module\SmailyForPrestaShop\Controller\AbandonedCartController arguments: - '@prestashop.adapter.legacy.configuration' + + prestashop.module.smailyforprestashop.controller.customer_sync_controller: + class: PrestaShop\Module\SmailyForPrestaShop\Controller\CustomerSyncController + arguments: + - '@prestashop.adapter.legacy.configuration' diff --git a/src/controllers/admin/AdminSmailyforprestashopAjaxController.php b/src/controllers/admin/AdminSmailyforprestashopAjaxController.php deleted file mode 100644 index 49ce5c7..0000000 --- a/src/controllers/admin/AdminSmailyforprestashopAjaxController.php +++ /dev/null @@ -1,188 +0,0 @@ -. - * - * @author Smaily - * @copyright 2018 Smaily - * @license GPL3 - */ -declare(strict_types=1); - -class AdminSmailyforprestashopAjaxController extends ModuleAdminController -{ - public function initContent() - { - $this->ajax = true; - parent::initContent(); - } - - /** - * Receives information from settings form and returns autoresponders as - * Select Autoresponder options. - * - * @return void - */ - public function ajaxProcessSmailyValidate() - { - $response = null; - // Validate token and if request is ajax call. - if (Tools::getValue('ajax') - && Tools::getValue('token') === Tools::getAdminTokenLite('AdminSmailyforprestashopAjax') - ) { - // If no subdomain entered display error message. - if (!Tools::getValue('subdomain') - || empty(trim(Tools::getValue('subdomain')))) { - $response = ['error' => $this->l('Please enter subdomain!')]; - exit(Tools::jsonEncode($response)); - } - // If no username entered display error message. - if (!Tools::getValue('username') - || empty(trim(Tools::getValue('subdomain')))) { - $response = ['error' => $this->l('Please enter username!')]; - exit(Tools::jsonEncode($response)); - } - // If no pasword entered display error message. - if (!Tools::getValue('password') - || empty(trim(Tools::getValue('password')))) { - $response = ['error' => $this->l('Please enter password!')]; - exit(Tools::jsonEncode($response)); - } - - $subdomain = Tools::getValue('subdomain'); - // Normalize subdomain. - // First, try to parse as full URL. If that fails, try to parse as subdomain.sendsmaily.net, and - // if all else fails, then clean up subdomain and pass as is. - if (filter_var($subdomain, FILTER_VALIDATE_URL)) { - $url = parse_url($subdomain); - $parts = explode('.', $url['host']); - $subdomain = count($parts) >= 3 ? $parts[0] : ''; - } elseif (preg_match('/^[^\.]+\.sendsmaily\.net$/', $subdomain)) { - $parts = explode('.', $subdomain); - $subdomain = $parts[0]; - } - $subdomain = preg_replace('/[^a-zA-Z0-9]+/', '', $subdomain); - - // Clean user entered subdomain. - $subdomain = pSQL($subdomain); - // Clean user entered username - $username = pSQL(Tools::getValue('username')); - $username = trim(Tools::stripslashes($username)); - // Clean user entered password. - $password = pSQL(Tools::getValue('password')); - $password = trim(Tools::stripslashes($password)); - // Make API call to Smaily to get autoresponders list. - $response = $this->callApi( - 'workflows', - $subdomain, - $username, - $password, - [ - 'trigger_type' => 'form_submitted', - ] - ); - // Failsafe for empty response. - if (!$response) { - $response = ['error' => $this->l('Invalid login details!')]; - exit(Tools::jsonEncode($response)); - } - // Add credentials to DB if successfully validated. - if (array_key_exists('success', $response)) { - Configuration::updateValue('SMAILY_SUBDOMAIN', $subdomain); - Configuration::updateValue('SMAILY_USERNAME', $username); - Configuration::updateValue('SMAILY_PASSWORD', $password); - } - exit(Tools::jsonEncode($response)); - } - } - - public function ajaxProcessGetAutoresponders() - { - $response = []; - // Validate token and if request is ajax call. - if (Tools::getValue('ajax') - && Tools::getValue('token') === Tools::getAdminTokenLite('AdminSmailyforprestashopAjax') - ) { - // Get credentials from db. - $subdomain = pSQL(Configuration::get('SMAILY_SUBDOMAIN')); - $username = pSQL(Configuration::get('SMAILY_USERNAME')); - $password = pSQL(Configuration::get('SMAILY_PASSWORD')); - // Make API call to Smaily to get autoresponders list. - $response = $this->callApi( - 'workflows', - $subdomain, - $username, - $password, - [ - 'trigger_type' => 'form_submitted', - ] - ); - exit(Tools::jsonEncode($response)); - } - } - - /** - * Makes API call to Smaily api - * - * @param string $endpoint Smaily API endpoint without .php - * @param string $subdomain Smaily account subdomain - * @param string $username Smaily username - * @param string $password Smaily password - * @param array $data Data to be sent to Smaily - * @param string $method GET or POST method - * - * @return array $result Response from Smaily - */ - public function callApi($endpoint, $subdomain, $username, $password, $data = [], $method = 'GET') - { - $apiUrl = 'https://' . $subdomain . '.sendsmaily.net/api/' . trim($endpoint, '/') . '.php'; - $data = http_build_query($data); - if ($method == 'GET') { - $apiUrl = $apiUrl . '?' . $data; - } - - $ch = curl_init(); - curl_setopt($ch, CURLOPT_URL, $apiUrl); - curl_setopt($ch, CURLOPT_HEADER, 0); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); - if ($method == 'POST') { - curl_setopt($ch, CURLOPT_POST, 1); - curl_setopt($ch, CURLOPT_POSTFIELDS, $data); - } - curl_setopt($ch, CURLOPT_USERPWD, "$username:$password"); - curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); - curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); - $result = json_decode(curl_exec($ch), true); - - $http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE); - if (!curl_errno($ch)) { - switch ((int) $http_status) { - case 200: - return ['success' => true, 'autoresponders' => $result]; - case 401: - return $result = ['error' => $this->l('Check credentials, unauthorized!')]; - case 404: - return $result = ['error' => $this->l('Check subdomain, unauthorized!')]; - default: - return $result = ['error' => $this->l('Something went wrong with request to Smaily!')]; - } - } else { - return $result = ['error' => $this->l(curl_error($ch))]; - } - curl_close($ch); - } -} diff --git a/src/controllers/admin/index.php b/src/controllers/admin/index.php deleted file mode 100644 index 691f051..0000000 --- a/src/controllers/admin/index.php +++ /dev/null @@ -1,30 +0,0 @@ -. - * - * @author Smaily - * @copyright 2018 Smaily - * @license GPL3 - */ -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; diff --git a/src/controllers/front/SmailyCustomerCron.php b/src/controllers/front/SmailyCustomerCron.php index 2aa0685..519b159 100644 --- a/src/controllers/front/SmailyCustomerCron.php +++ b/src/controllers/front/SmailyCustomerCron.php @@ -23,202 +23,26 @@ */ declare(strict_types=1); +require_once _PS_MODULE_DIR_ . 'smailyforprestashop/lib/Api.php'; + class SmailyforprestashopSmailyCustomerCronModuleFrontController extends ModuleFrontController { - /** - * Limit unsubscribers request batch size. - */ - public const UNSUBSCRIBERS_BATCH_LIMIT = 1000; - - /** - * Limit subscribers query batch size. - */ - public const SUBSCRIBERS_BATCH_LIMIT = 1000; - - public function init() - { - parent::init(); - header('Content-Type: text/plain'); - - if (Tools::getValue('token') != Configuration::get('SMAILY_CUSTOMER_CRON_TOKEN')) { - echo 'Access denied!'; - exit(1); - } - - if ((int) Configuration::get('SMAILY_ENABLE_CRON') !== 1) { - echo 'User synchronization disabled!'; - exit(1); - } - - if ($this->syncContacts()) { - exit('User synchronization done!'); - } else { - echo 'User synchronization failed!'; - exit(1); - } - } - - /** - * Synchronize prestashop contacts with Smaily database. - * - * @return bool success status - */ - private function syncContacts() + public function __construct() { - $unsubscribers_synchronized = $this->removeUnsubscribers(self::UNSUBSCRIBERS_BATCH_LIMIT); - if (!$unsubscribers_synchronized) { - $this->module->logMessageWithSeverity('Customer sync failed - unsubscribers are not removed', 1); - - return false; - } - - // Don't sync customers if failed to remove unsubscribers. - $subscribers_synchronized = $this->sendSubscribersToSmaily(self::SUBSCRIBERS_BATCH_LIMIT); - if (!$subscribers_synchronized) { - $this->module->logMessageWithSeverity('Customer sync failed - failed to send subscribers to Smaily', 1); - - return false; - } - - return true; + parent::__construct(); } - /** - * Get user data for customer based on settings for Syncronize Additional. - * - * @param array $customer customer array from Presta DB - * @param array $fields additional synchronisation fields from settings - * - * @return array $userdata customer field values based of settings in Syncronize Additional - */ - private function getUserData($customer, $fields) + public function initContent() { - $userdata = []; - - if (!empty($fields)) { - foreach ($fields as $sync_data) { - if (isset($customer[$sync_data])) { - $userdata[$sync_data] = $customer[$sync_data]; - } - } - } - - $userdata['email'] = $customer['email']; - - return $userdata; - } - - /** - * Get unsubscribers from Smaily and change subscription status to unsubscribed in store. - * - * @param int $limit limit request size - * - * @return bool success status - */ - private function removeUnsubscribers($limit = 1000) - { - $offset = 0; - - while (true) { - $unsubscribers = $this->module->callApi( - 'contact', - [ - 'list' => 2, - 'limit' => $limit, - 'offset' => $offset, - ] - ); - - // Stop if error. - if (!isset($unsubscribers['success'])) { - $this->module->logErrorWithFormatting('Failed fetching unsubscribers.'); - - return false; - } - // Stop if no more subscribers. - if (empty($unsubscribers['result'])) { - break; - } - - // Remove subscribed status for unsubscribers. - $query = 'UPDATE ' . _DB_PREFIX_ . 'customer SET newsletter=0 WHERE email IN (' . - implode( - ', ', - array_map( - function ($item) { - return "'" . pSQL($item['email']) . "'"; - }, - $unsubscribers['result'] - ) - ) . ')'; - $query_result = Db::getInstance()->execute($query); - // Stop if query fails. - if ($query_result === false) { - $this->module->logErrorWithFormatting('Failed removing subscribed status for unsubscribers.'); - - return false; - } - - // Smaily API call offset is considered as page number, not SQL offset! - ++$offset; - } - - return true; - } - - /** - * Send store subscribers data to Smaily. - * - * @param int $limit subscriber request batch limit - * - * @return bool success status - */ - public function sendSubscribersToSmaily($limit) - { - $offset = 0; - $additional_fields = unserialize(Configuration::get('SMAILY_SYNCRONIZE_ADDITIONAL')); - - while (true) { - $sql = new DbQuery(); - $sql->select('*'); - $sql->from('customer', 'c'); - $sql->where('c.newsletter = 1'); - $sql->limit((string) $limit, $offset); - - $customers = Db::getInstance()->executeS($sql); - // Stop if query fails. - if ($customers === false) { - $this->module->logErrorWithFormatting('Failed retrieving newsletter subscribers from DB.'); - - return false; - } - // Stop if no more qustomers. - if (empty($customers)) { - break; - } - - $update_data = []; - foreach ($customers as $customer) { - $userdata = $this->getUserData($customer, $additional_fields); - array_push($update_data, $userdata); - } - - // Send subscribers to Smaily. - $response = $this->module->callApi('contact', $update_data, 'POST'); - // Stop if not successful update. - if (isset($response['result']['code']) && $response['result']['code'] !== 101) { - $this->module->logErrorWithFormatting( - 'Failed sending subscribers to Smaily. Smaily response code: %s, message: %s', - $response['result']['code'], - $response['result']['message'] - ); + parent::initContent(); + header('Content-Type: text/plain'); - return false; - } + $controller = $this->get('prestashop.module.smailyforprestashop.controller.customer_sync_controller'); - $offset += $limit; + if (!$controller->sync(Tools::getValue('token'))) { + exit(1); } - return true; + exit; } } diff --git a/src/controllers/front/index.php b/src/controllers/front/index.php deleted file mode 100644 index 691f051..0000000 --- a/src/controllers/front/index.php +++ /dev/null @@ -1,30 +0,0 @@ -. - * - * @author Smaily - * @copyright 2018 Smaily - * @license GPL3 - */ -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; diff --git a/src/controllers/index.php b/src/controllers/index.php deleted file mode 100644 index 691f051..0000000 --- a/src/controllers/index.php +++ /dev/null @@ -1,30 +0,0 @@ -. - * - * @author Smaily - * @copyright 2018 Smaily - * @license GPL3 - */ -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; diff --git a/src/lib/Api.php b/src/lib/Api.php index 9863434..fea4993 100644 --- a/src/lib/Api.php +++ b/src/lib/Api.php @@ -47,10 +47,7 @@ public function listUnsubscribers(int $limit = 100, $offset = 0): ResponseInterf public function createSubscribers(array $data): ResponseInterface { return $this->client->post('api/contact.php', [ - 'headers' => [ - 'Content-Type' => 'application/json', - ], - 'body' => json_encode($data), + RequestOptions::JSON => $data, ]); } diff --git a/src/src/Controller/CustomerSyncController.php b/src/src/Controller/CustomerSyncController.php new file mode 100644 index 0000000..5cf3db5 --- /dev/null +++ b/src/src/Controller/CustomerSyncController.php @@ -0,0 +1,241 @@ +configuration = $configuration; + + $subdomain = $configuration->get('SMAILY_SUBDOMAIN'); + $username = $configuration->get('SMAILY_USERNAME'); + $password = $configuration->get('SMAILY_PASSWORD'); + + if (!empty($subdomain) && !empty($username) && !empty($password)) { + $this->api = new Api($subdomain, $username, $password); + } + } + + public function sync(string $token): bool + { + if ($token !== $this->configuration->get('SMAILY_CUSTOMER_CRON_TOKEN')) { + echo 'Access denied!'; + + return false; + } + + if (!$this->configuration->get('SMAILY_ENABLE_CUSTOMER_SYNC')) { + echo 'User synchronization disabled!'; + + return false; + } + + if (empty($this->api)) { + echo 'Account setup not finished!'; + + return false; + } + + $unsubscribers_synchronized = $this->removeUnsubscribers(self::UNSUBSCRIBERS_BATCH_LIMIT); + if (!$unsubscribers_synchronized) { + echo 'Failed to synchronize unsubscribers from Smaily!'; + + Logger::logMessageWithSeverity('Customer sync failed - unsubscribers are not removed', 1); + + return false; + } + + // Don't sync customers if failed to remove unsubscribers. + $subscribers_synchronized = $this->sendSubscribersToSmaily(self::SUBSCRIBERS_BATCH_LIMIT); + if (!$subscribers_synchronized) { + echo 'Failed to synchronize subscribers from the store!'; + + Logger::logMessageWithSeverity('Customer sync failed - failed to send subscribers to Smaily', 1); + + return false; + } + + echo 'Subscribers synchronization finished!'; + + return true; + } + + /** + * Get unsubscribers from Smaily and change the subscription status to unsubscribed in store. + * + * @param int $limit limit request size + * + * @return bool success status + */ + private function removeUnsubscribers($limit = 1000) + { + $offset = 0; + + while (true) { + $response = $this->api->listUnsubscribers($limit, $offset); + + // Stop if error. + if ($response->getStatusCode() !== 200) { + Logger::logErrorWithFormatting('Failed fetching unsubscribers.'); + + return false; + } + + $body = json_decode($response->getBody()->getContents(), true); + + // Stop if no more subscribers. + if (empty($body)) { + break; + } + + // Remove subscribed status for unsubscribers. + $subscriberCollectionModel = new SubscriberCollection(); + $result = $subscriberCollectionModel->batchUnsubscribeByEmail( + array_map( + function ($item) { + return $item['email']; + }, + $body, + ) + ); + + // Stop if query fails. + if (!$result) { + Logger::logErrorWithFormatting('Failed removing subscribed status for unsubscribers.'); + + return false; + } + + // Smaily API call offset is considered as page number, not SQL offset! + ++$offset; + } + + return true; + } + + /** + * Send store subscribers data to Smaily. + * + * @param int $limit subscriber request batch limit + * + * @return bool success status + */ + public function sendSubscribersToSmaily(int $limit): bool + { + $offset = 0; + $subscriberCollection = new SubscriberCollection(); + + $additionalFields = unserialize($this->configuration->get('SMAILY_SYNCRONIZE_ADDITIONAL')); + $selectedFields = array_keys(array_filter($additionalFields)); + + while (true) { + $subscribers = $subscriberCollection->getSubscribers($limit, $offset); + + // Stop if query fails. + if ($subscribers === false) { + Logger::logErrorWithFormatting('Failed retrieving newsletter subscribers from DB.'); + + return false; + } + // Stop if no more customers. + if (empty($subscribers)) { + break; + } + + $payload = []; + foreach ($subscribers as $subscriber) { + $payload[] = $this->generateSubscriberPayload($subscriber, $selectedFields); + } + + $this->send($payload); + + $offset += $limit; + } + + return true; + } + + private function generateSubscriberPayload(Subscriber $subscriber, array $fields): array + { + $userdata = [ + 'email' => $subscriber->email, + ]; + + foreach ($fields as $field) { + switch ($field) { + case 'first_name': + $userdata['first_name'] = $subscriber->firstName; + break; + case 'last_name': + $userdata['last_name'] = $subscriber->lastName; + break; + case 'birthday': + $userdata['birthday'] = $subscriber->birthDay; + break; + case 'website': + $userdata['website'] = $subscriber->website; + break; + default: + break; + } + } + + return $userdata; + } + + private function send(array $subscribers): bool + { + $response = $this->api->createSubscribers($subscribers); + + if ($response->getStatusCode() !== 200) { + Logger::logErrorWithFormatting( + 'Failed sending subscribers to Smaily. Smaily HTTP response code: %s', + $response->getStatusCode(), + ); + + return false; + } + + $body = json_decode($response->getBody()->getContents(), true); + if (!array_key_exists('code', $body) || $body['code'] !== 101) { + Logger::logErrorWithFormatting( + 'Failed sending subscribers to Smaily. Smaily response code: %s, message: %s', + $body['code'], + $body['message'] + ); + + return false; + } + + return true; + } +} diff --git a/src/src/Form/CustomerSyncFormDataConfiguration.php b/src/src/Form/CustomerSyncFormDataConfiguration.php index ae20bc8..03455bc 100644 --- a/src/src/Form/CustomerSyncFormDataConfiguration.php +++ b/src/src/Form/CustomerSyncFormDataConfiguration.php @@ -91,7 +91,6 @@ public function validateConfiguration(array $configuration): bool $configuration['sync_additional'], $configuration['cron_token'], $configuration['optin_enabled'], - $configuration['autoresponder'] ); } diff --git a/src/src/Form/CustomerSyncFormType.php b/src/src/Form/CustomerSyncFormType.php index 2150fe0..3531652 100644 --- a/src/src/Form/CustomerSyncFormType.php +++ b/src/src/Form/CustomerSyncFormType.php @@ -42,7 +42,6 @@ public function __construct( ) { parent::__construct($translator, $locales); $this->translator = $translator; - // TODO: Why there is extra key? $this->autoresponderChoices = $autoresponderChoices['$autoresponderChoices']; } diff --git a/src/src/Model/Subscriber.php b/src/src/Model/Subscriber.php new file mode 100644 index 0000000..d89bda3 --- /dev/null +++ b/src/src/Model/Subscriber.php @@ -0,0 +1,29 @@ +execute($query); + } + + /** + * Gets subscribers from DB. + * + * @return Subscriber[] Subscriber array + */ + public function getSubscribers(int $limit, int $offset = 0): array + { + $sql = new \DbQuery(); + $sql->select('*'); + $sql->from('customer', 'c'); + $sql->where('c.newsletter = 1'); + $sql->limit($limit, $offset); + + $result = \Db::getInstance()->executeS($sql); + + $subscribers = []; + foreach ($result as $subscriber) { + $s = new Subscriber(); + $s->email = $subscriber['email']; + $s->firstName = $subscriber['firstname']; + $s->lastName = $subscriber['lastname']; + $s->birthDay = $subscriber['birthday']; + $s->website = $subscriber['website']; + + $subscribers[] = $s; + } + + return $subscribers; + } +} From 25e2a253e1b92797729213c8724bf47e53ee982c Mon Sep 17 00:00:00 2001 From: Kaarel Date: Tue, 23 Apr 2024 15:16:38 +0300 Subject: [PATCH 035/114] Improve layout title for settings page --- src/views/templates/admin/configuration.html.twig | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/views/templates/admin/configuration.html.twig b/src/views/templates/admin/configuration.html.twig index ed70d77..7fa023b 100644 --- a/src/views/templates/admin/configuration.html.twig +++ b/src/views/templates/admin/configuration.html.twig @@ -1,13 +1,13 @@ {% extends '@PrestaShop/Admin/layout.html.twig' %} {% trans_default_domain 'Modules.Smailyforprestashop.Admin' %} +{% set layoutTitle = "Smaily for Prestashop" | trans %} -{% block content %} - {% if app.request.query.get('tab') %} - {% set tab = app.request.query.get('tab') %} - {% endif %} - +{% if app.request.query.get('tab') %} + {% set tab = app.request.query.get('tab') %} +{% endif %} +{% block content %}
- - {{ "To schedule automatic sync, set up CRON in your hosting and use this URL." | trans }} - + + {{ "To schedule automatic sync, set up CRON in your hosting and use this URL." | trans }} + diff --git a/src/views/templates/admin/customerSyncConfiguration.html.twig b/src/views/templates/admin/customerSyncConfiguration.html.twig index efd013e..63360f5 100644 --- a/src/views/templates/admin/customerSyncConfiguration.html.twig +++ b/src/views/templates/admin/customerSyncConfiguration.html.twig @@ -22,10 +22,10 @@ content_copy - - {{ "To schedule automatic sync, set up CRON in your hosting and use this URL." | trans }} - + + {{ "To schedule automatic sync, set up CRON in your hosting and use this URL." | trans }} + {{ form_row(customerSyncForm.optin_enabled) }} From 56eb2141593e7de2b146bcf694a02beb21753cc8 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Wed, 24 Apr 2024 15:04:30 +0300 Subject: [PATCH 040/114] Use 8.1.5 as current latest tested version --- docker-compose.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index 4f552a5..3356dc6 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,9 +1,8 @@ -version: '3.7' - services: prestashop: container_name: prestashop - image: prestashop/prestashop-flashlight:nightly + image: prestashop/prestashop-flashlight:8.1.5 + # image: prestashop/prestashop-flashlight:nightly # Nightly build currently has XDEBUG support depends_on: mysql: condition: service_healthy From 2d68d9d89c1cf4bb9affe6a7425a4b0c7d5d0bb5 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Wed, 24 Apr 2024 15:14:09 +0300 Subject: [PATCH 041/114] Improve contributing documentation --- CONTRIBUTING.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 269cc8d..94ba49e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,16 +1,14 @@ First off, thanks for taking the time to contribute! - # Table of contents - [Getting started](#getting-started) - [Internals](#internals) - - [Structure of the repository](#structure-of-the-repository) + - [Structure of the repository](#structure-of-the-repository) - [Deveopment](#development) - - [Starting the environement](#starting-the-environment) - - [Stopping the environment](#stopping-the-environment) - - [Resetting the environment](#resetting-the-environment) - + - [Starting the environement](#starting-the-environment) + - [Stopping the environment](#stopping-the-environment) + - [Resetting the environment](#resetting-the-environment) # Getting started @@ -32,7 +30,6 @@ You can access PrestaShop store from `http://localhost:8080` and administration > Administrator user is `admin@prestashop.com` and password `prestashop`. - # Internals ## Structure of the repository @@ -45,7 +42,6 @@ The repository is split into multiple parts: Source files must follow standard PrestaShop module structure. Learn more about it from the [Modules Folder structure](https://devdocs.prestashop-project.org/8/modules/creation/module-file-structure/) chapter in the official documentation. - # Development All written code must follow PrestaShop's [coding standards](https://devdocs.prestashop-project.org/8/development/coding-standards/) and [naming conventions](https://devdocs.prestashop-project.org/8/development/naming-conventions/). @@ -58,14 +54,18 @@ You can run the environment by executing: > **Note!** Make sure you do not have any other process(es) listening on ports 8080 and 8888. +### Developing in VsCode Remote Container + +It is advised to develop the application inside VSCode remote container. This allows to get PHP intellisense on PrestaShop classes, includes, etc and provides an debugging option when using latest version of the `prestashop/prestashop-flashlight` image. Open `/var/www/html` directory of `prestashop` container as this provides context for intellisense. + ## Stopping the environment Environment can be stopped by executing: - $ docker compose down + $ docker compose down --remove-orphans ## Resetting the environment If you need to reset the installation, just simply delete environment's Docker volumes. Easiest way to achieve this is by running: - $ docker compose down -v + $ docker compose down --remove-orphans -v From ddfc3bfbd74409dce14646ab73541388648f8711 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Wed, 24 Apr 2024 15:25:48 +0300 Subject: [PATCH 042/114] Fix linting errors --- src/lib/Api.php | 2 +- src/src/Controller/RssFeedController.php | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/lib/Api.php b/src/lib/Api.php index fea4993..fafe1f3 100644 --- a/src/lib/Api.php +++ b/src/lib/Api.php @@ -11,7 +11,7 @@ class Api { /** - * @var \GuzzleHttp\Client + * @var Client */ private $client; diff --git a/src/src/Controller/RssFeedController.php b/src/src/Controller/RssFeedController.php index 9efd127..752b568 100644 --- a/src/src/Controller/RssFeedController.php +++ b/src/src/Controller/RssFeedController.php @@ -8,7 +8,6 @@ class RssFeedController { - /** * @var RssFeedProductsCollection */ @@ -19,7 +18,7 @@ public function __construct() $this->collection = new RssFeedProductsCollection(); } - public function generateFeed(string $baseUrl,mixed $categoryId,int $limit,string $sortBy,string $sortOrder): string + public function generateFeed(string $baseUrl, mixed $categoryId, int $limit, string $sortBy, string $sortOrder): string { $rss = '' . '' . @@ -77,4 +76,4 @@ public function generateFeed(string $baseUrl,mixed $categoryId,int $limit,string return $rss; } -} \ No newline at end of file +} From e8cc1daf1dac00f3af2c2d264712b7ba1fd0de11 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Wed, 24 Apr 2024 15:26:41 +0300 Subject: [PATCH 043/114] Add a notice for php-cs-fixer not working --- CONTRIBUTING.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 94ba49e..95dd7d5 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -69,3 +69,9 @@ Environment can be stopped by executing: If you need to reset the installation, just simply delete environment's Docker volumes. Easiest way to achieve this is by running: $ docker compose down --remove-orphans -v + +## Weird behavior in different versions + +### php-cs-fixer not working + +You may notice that `php-cs-fixer` might not work for some PrestaShop image versions. `php-cs-fixer` output provides a hint that the `/var/www/html/tests` directory does not exist. This is due to the `tests` folder being included in the [PrestaShop repo](https://github.com/PrestaShop/PrestaShop) but not in the docker image. Adding an empty `/var/www/heml/tests` folder enables the `php-cs-fixer`. From 54ac8a70f55814a180e79f7c275a1614f52ab065 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Wed, 24 Apr 2024 15:51:09 +0300 Subject: [PATCH 044/114] Unify admin service naming convention --- src/config/admin/services.yml | 30 +++++++++---------- .../ModuleConfigurationController.php | 2 +- ...n.php => AccountFormDataConfiguration.php} | 2 +- 3 files changed, 17 insertions(+), 17 deletions(-) rename src/src/Form/{AccountConfigurationDataConfiguration.php => AccountFormDataConfiguration.php} (97%) diff --git a/src/config/admin/services.yml b/src/config/admin/services.yml index d742dc8..54e25d2 100644 --- a/src/config/admin/services.yml +++ b/src/config/admin/services.yml @@ -3,52 +3,52 @@ services: public: true # Choice providers - prestashop.module.smailyforprestashop.choice_provider.autoresponders: + prestashop.module.smailyforprestashop.form.choice_provider.autoresponder: class: 'PrestaShop\Module\SmailyForPrestaShop\Form\ChoiceProvider\Autoresponder' arguments: - '@translator' - '@prestashop.adapter.legacy.configuration' - prestashop.module.smailyforprestashop.choice_provider.product_categories: + prestashop.module.smailyforprestashop.form.choice_provider.product_category: class: 'PrestaShop\Module\SmailyForPrestaShop\Form\ChoiceProvider\ProductCategory' arguments: - '@translator' - '@prestashop.adapter.data_provider.category' # Account credentials form. - prestashop.module.smailyforprestashop.form.type.account_credentials: + prestashop.module.smailyforprestashop.form.account_configuration_form_type: class: 'PrestaShop\Module\SmailyForPrestaShop\Form\AccountConfigurationFormType' parent: 'form.type.translatable.aware' public: true tags: - { name: form.type } - prestashop.module.smailyforprestashop.form.account_credentials_data_configuration: - class: PrestaShop\Module\SmailyForPrestaShop\Form\AccountConfigurationDataConfiguration + prestashop.module.smailyforprestashop.form.account_form_data_configuration: + class: PrestaShop\Module\SmailyForPrestaShop\Form\AccountFormDataConfiguration arguments: ['@prestashop.adapter.legacy.configuration'] - prestashop.module.smailyforprestashop.form.account_credentials_form_data_provider: + prestashop.module.smailyforprestashop.form.account_form_data_provider: class: PrestaShop\Module\SmailyForPrestaShop\Form\FormDataProvider arguments: - - '@prestashop.module.smailyforprestashop.form.account_credentials_data_configuration' + - '@prestashop.module.smailyforprestashop.form.account_form_data_configuration' - prestashop.module.smailyforprestashop.form.account_credentials_form_handler: + prestashop.module.smailyforprestashop.form.account_form_handler: class: PrestaShop\PrestaShop\Core\Form\Handler arguments: - '@form.factory' - '@prestashop.core.hook.dispatcher' - - '@prestashop.module.smailyforprestashop.form.account_credentials_form_data_provider' + - '@prestashop.module.smailyforprestashop.form.account_form_data_provider' - PrestaShop\Module\SmailyForPrestaShop\Form\AccountConfigurationFormType - SmailyForPrestaShopAccountConfiguration - account # Customer sync form - prestashop.module.smailyforprestashop.form.type.cystomer_sync: + prestashop.module.smailyforprestashop.form.customer_sync_form_type: class: 'PrestaShop\Module\SmailyForPrestaShop\Form\CustomerSyncFormType' parent: 'form.type.translatable.aware' public: true arguments: - - $autoresponderChoices: '@=service("prestashop.module.smailyforprestashop.choice_provider.autoresponders").getChoices()' + - $autoresponderChoices: '@=service("prestashop.module.smailyforprestashop.form.choice_provider.autoresponder").getChoices()' tags: - { name: form.type } @@ -72,12 +72,12 @@ services: - customer # Abandoned cart form - prestashop.module.smailyforprestashop.form.type.abandoned_cart: + prestashop.module.smailyforprestashop.form.abandoned_cart_form_type: class: 'PrestaShop\Module\SmailyForPrestaShop\Form\AbandonedCartFormType' parent: 'form.type.translatable.aware' public: true arguments: - - $autoresponderChoices: '@=service("prestashop.module.smailyforprestashop.choice_provider.autoresponders").getChoices()' + - $autoresponderChoices: '@=service("prestashop.module.smailyforprestashop.form.choice_provider.autoresponder").getChoices()' tags: - { name: form.type } @@ -101,12 +101,12 @@ services: - cart # RSS feed form - prestashop.module.smailyforprestashop.form.type.rss_feed: + prestashop.module.smailyforprestashop.form.rss_feed_form_type: class: 'PrestaShop\Module\SmailyForPrestaShop\Form\RssFeedFormType' parent: 'form.type.translatable.aware' public: true arguments: - - $productCategoryChoices: '@=service("prestashop.module.smailyforprestashop.choice_provider.product_categories").getChoices()' + - $productCategoryChoices: '@=service("prestashop.module.smailyforprestashop.form.choice_provider.product_category").getChoices()' tags: - { name: form.type } diff --git a/src/src/Controller/ModuleConfigurationController.php b/src/src/Controller/ModuleConfigurationController.php index 1d53e41..65ee358 100644 --- a/src/src/Controller/ModuleConfigurationController.php +++ b/src/src/Controller/ModuleConfigurationController.php @@ -17,7 +17,7 @@ public function index(Request $request): Response $tab = 'account'; // Account - $accountFormDataHandler = $this->get('prestashop.module.smailyforprestashop.form.account_credentials_form_handler'); + $accountFormDataHandler = $this->get('prestashop.module.smailyforprestashop.form.account_form_handler'); $accountForm = $accountFormDataHandler->getForm(); $accountForm->handleRequest($request); diff --git a/src/src/Form/AccountConfigurationDataConfiguration.php b/src/src/Form/AccountFormDataConfiguration.php similarity index 97% rename from src/src/Form/AccountConfigurationDataConfiguration.php rename to src/src/Form/AccountFormDataConfiguration.php index 5bd7fd7..636af6d 100644 --- a/src/src/Form/AccountConfigurationDataConfiguration.php +++ b/src/src/Form/AccountFormDataConfiguration.php @@ -8,7 +8,7 @@ use PrestaShop\PrestaShop\Core\Configuration\DataConfigurationInterface; use PrestaShop\PrestaShop\Core\ConfigurationInterface; -final class AccountConfigurationDataConfiguration implements DataConfigurationInterface +final class AccountFormDataConfiguration implements DataConfigurationInterface { /** * @var ConfigurationInterface From 65b5cd051f2dc957b90d5e2089e2450d915d15c7 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Wed, 24 Apr 2024 15:51:38 +0300 Subject: [PATCH 045/114] Add cache invalidation section to contributing.md --- CONTRIBUTING.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 95dd7d5..91405f3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -75,3 +75,7 @@ If you need to reset the installation, just simply delete environment's Docker v ### php-cs-fixer not working You may notice that `php-cs-fixer` might not work for some PrestaShop image versions. `php-cs-fixer` output provides a hint that the `/var/www/html/tests` directory does not exist. This is due to the `tests` folder being included in the [PrestaShop repo](https://github.com/PrestaShop/PrestaShop) but not in the docker image. Adding an empty `/var/www/heml/tests` folder enables the `php-cs-fixer`. + +## cache invalidation + +There seems to be lot of issues related to cache being invalid. Sometimes the module routes are not found or services configuration is missing etc. Most of them can be fixed by pruning cache folder located in `/var/www/html/var/cache/dev`. Some versions use `admin-dev` folder. From 767ffe83e6283b5540f7f7b073704a9c8cafddf1 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Wed, 24 Apr 2024 15:55:36 +0300 Subject: [PATCH 046/114] Remove imports from legacy front controllers --- src/controllers/front/SmailyCartCron.php | 2 -- src/controllers/front/SmailyCustomerCron.php | 2 -- src/controllers/front/SmailyRssFeed.php | 5 ----- 3 files changed, 9 deletions(-) diff --git a/src/controllers/front/SmailyCartCron.php b/src/controllers/front/SmailyCartCron.php index 476d547..9fd59db 100644 --- a/src/controllers/front/SmailyCartCron.php +++ b/src/controllers/front/SmailyCartCron.php @@ -23,8 +23,6 @@ */ declare(strict_types=1); -require_once _PS_MODULE_DIR_ . join(DIRECTORY_SEPARATOR, ['smailyforprestashop', 'vendor', 'autoload.php']); - class SmailyforprestashopSmailyCartCronModuleFrontController extends ModuleFrontController { public function __construct() diff --git a/src/controllers/front/SmailyCustomerCron.php b/src/controllers/front/SmailyCustomerCron.php index 519b159..3098dac 100644 --- a/src/controllers/front/SmailyCustomerCron.php +++ b/src/controllers/front/SmailyCustomerCron.php @@ -23,8 +23,6 @@ */ declare(strict_types=1); -require_once _PS_MODULE_DIR_ . 'smailyforprestashop/lib/Api.php'; - class SmailyforprestashopSmailyCustomerCronModuleFrontController extends ModuleFrontController { public function __construct() diff --git a/src/controllers/front/SmailyRssFeed.php b/src/controllers/front/SmailyRssFeed.php index 7c4431e..68bb87f 100644 --- a/src/controllers/front/SmailyRssFeed.php +++ b/src/controllers/front/SmailyRssFeed.php @@ -23,10 +23,6 @@ */ declare(strict_types=1); -require_once _PS_MODULE_DIR_ . join(DIRECTORY_SEPARATOR, ['smailyforprestashop', 'vendor', 'autoload.php']); - -use PrestaShop\Module\SmailyForPrestaShop\Controller\RssFeedController; - class SmailyForPrestaShopSmailyRssFeedModuleFrontController extends ModuleFrontController { public const ALLOWED_SORT_BY_VALUES = ['date_add', 'date_upd', 'name', 'price', 'id_product']; @@ -48,7 +44,6 @@ public function initContent() $categoryId = (int) Tools::getValue('category_id'); $categoryId = $categoryId <= 0 ? false : $categoryId; - /** @var RssFeedController */ $controller = $this->get('prestashop.module.smailyforprestashop.controller.rss_feed_controller'); header('Content-Type: application/xml'); From 9d084bcc2836c0b61f00389ec52c71fefaec9fc1 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Wed, 24 Apr 2024 16:04:49 +0300 Subject: [PATCH 047/114] Autoindex --- src/composer.json | 6 ++++-- src/composer.lock | 8 ++++--- src/{ => config/admin}/index.php | 0 src/config/front/index.php | 30 +++++++++++++++++++++++++++ src/config/index.php | 30 +++++++++++++++++++++++++++ src/controllers/front/index.php | 30 +++++++++++++++++++++++++++ src/controllers/index.php | 30 +++++++++++++++++++++++++++ src/lib/index.php | 30 +++++++++++++++++++++++++++ src/overrides/index.php | 30 +++++++++++++++++++++++++++ src/src/Controller/index.php | 30 +++++++++++++++++++++++++++ src/src/Form/ChoiceProvider/index.php | 30 +++++++++++++++++++++++++++ src/src/Form/Type/index.php | 30 +++++++++++++++++++++++++++ src/src/Form/index.php | 30 +++++++++++++++++++++++++++ src/src/Install/index.php | 30 +++++++++++++++++++++++++++ src/src/Model/index.php | 30 +++++++++++++++++++++++++++ src/src/index.php | 30 +++++++++++++++++++++++++++ src/translations/index.php | 4 ++-- src/views/js/index.php | 30 +++++++++++++++++++++++++++ 18 files changed, 431 insertions(+), 7 deletions(-) rename src/{ => config/admin}/index.php (100%) create mode 100644 src/config/front/index.php create mode 100644 src/config/index.php create mode 100644 src/controllers/front/index.php create mode 100644 src/controllers/index.php create mode 100644 src/lib/index.php create mode 100644 src/overrides/index.php create mode 100644 src/src/Controller/index.php create mode 100644 src/src/Form/ChoiceProvider/index.php create mode 100644 src/src/Form/Type/index.php create mode 100644 src/src/Form/index.php create mode 100644 src/src/Install/index.php create mode 100644 src/src/Model/index.php create mode 100644 src/src/index.php create mode 100644 src/views/js/index.php diff --git a/src/composer.json b/src/composer.json index df094e2..bb723b7 100644 --- a/src/composer.json +++ b/src/composer.json @@ -23,11 +23,13 @@ }, "type": "prestashop-module", "require-dev": { - "prestashop/php-dev-tools": "^4.3" + "prestashop/php-dev-tools": "^4.3", + "prestashop/autoindex": "^2.1" }, "scripts": { "lint": "php-cs-fixer fix --dry-run", "fix": "php-cs-fixer fix", - "phpstan": "_PS_ROOT_DIR_=/var/www/html phpstan analyse ." + "phpstan": "_PS_ROOT_DIR_=/var/www/html phpstan analyse .", + "autoindex": "php vendor/bin/autoindex prestashop:add:index ." } } \ No newline at end of file diff --git a/src/composer.lock b/src/composer.lock index 698b1a6..42fb21e 100644 --- a/src/composer.lock +++ b/src/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "adbc9bc4f87434ed23326db6fc9c80ae", + "content-hash": "e1765f078aa62628913827ce651850ac", "packages": [], "packages-dev": [ { @@ -2099,7 +2099,9 @@ "stability-flags": [], "prefer-stable": false, "prefer-lowest": false, - "platform": [], + "platform": { + "php": ">=7.2.0" + }, "platform-dev": [], - "plugin-api-version": "2.2.0" + "plugin-api-version": "2.6.0" } diff --git a/src/index.php b/src/config/admin/index.php similarity index 100% rename from src/index.php rename to src/config/admin/index.php diff --git a/src/config/front/index.php b/src/config/front/index.php new file mode 100644 index 0000000..778ada9 --- /dev/null +++ b/src/config/front/index.php @@ -0,0 +1,30 @@ +. + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ +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; diff --git a/src/config/index.php b/src/config/index.php new file mode 100644 index 0000000..778ada9 --- /dev/null +++ b/src/config/index.php @@ -0,0 +1,30 @@ +. + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ +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; diff --git a/src/controllers/front/index.php b/src/controllers/front/index.php new file mode 100644 index 0000000..778ada9 --- /dev/null +++ b/src/controllers/front/index.php @@ -0,0 +1,30 @@ +. + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ +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; diff --git a/src/controllers/index.php b/src/controllers/index.php new file mode 100644 index 0000000..778ada9 --- /dev/null +++ b/src/controllers/index.php @@ -0,0 +1,30 @@ +. + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ +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; diff --git a/src/lib/index.php b/src/lib/index.php new file mode 100644 index 0000000..778ada9 --- /dev/null +++ b/src/lib/index.php @@ -0,0 +1,30 @@ +. + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ +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; diff --git a/src/overrides/index.php b/src/overrides/index.php new file mode 100644 index 0000000..778ada9 --- /dev/null +++ b/src/overrides/index.php @@ -0,0 +1,30 @@ +. + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ +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; diff --git a/src/src/Controller/index.php b/src/src/Controller/index.php new file mode 100644 index 0000000..778ada9 --- /dev/null +++ b/src/src/Controller/index.php @@ -0,0 +1,30 @@ +. + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ +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; diff --git a/src/src/Form/ChoiceProvider/index.php b/src/src/Form/ChoiceProvider/index.php new file mode 100644 index 0000000..778ada9 --- /dev/null +++ b/src/src/Form/ChoiceProvider/index.php @@ -0,0 +1,30 @@ +. + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ +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; diff --git a/src/src/Form/Type/index.php b/src/src/Form/Type/index.php new file mode 100644 index 0000000..778ada9 --- /dev/null +++ b/src/src/Form/Type/index.php @@ -0,0 +1,30 @@ +. + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ +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; diff --git a/src/src/Form/index.php b/src/src/Form/index.php new file mode 100644 index 0000000..778ada9 --- /dev/null +++ b/src/src/Form/index.php @@ -0,0 +1,30 @@ +. + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ +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; diff --git a/src/src/Install/index.php b/src/src/Install/index.php new file mode 100644 index 0000000..778ada9 --- /dev/null +++ b/src/src/Install/index.php @@ -0,0 +1,30 @@ +. + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ +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; diff --git a/src/src/Model/index.php b/src/src/Model/index.php new file mode 100644 index 0000000..778ada9 --- /dev/null +++ b/src/src/Model/index.php @@ -0,0 +1,30 @@ +. + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ +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; diff --git a/src/src/index.php b/src/src/index.php new file mode 100644 index 0000000..778ada9 --- /dev/null +++ b/src/src/index.php @@ -0,0 +1,30 @@ +. + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ +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; diff --git a/src/translations/index.php b/src/translations/index.php index 691f051..778ada9 100644 --- a/src/translations/index.php +++ b/src/translations/index.php @@ -1,6 +1,6 @@ . * * @author Smaily - * @copyright 2018 Smaily + * @copyright 2024 Smaily * @license GPL3 */ header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); diff --git a/src/views/js/index.php b/src/views/js/index.php new file mode 100644 index 0000000..778ada9 --- /dev/null +++ b/src/views/js/index.php @@ -0,0 +1,30 @@ +. + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ +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; From bea2483a14732a607f29e6e5df9f9a21cd7d6ca9 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Wed, 24 Apr 2024 16:08:29 +0300 Subject: [PATCH 048/114] Support max version 8.99.99 --- src/smailyforprestashop.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/smailyforprestashop.php b/src/smailyforprestashop.php index 556b554..dd18913 100644 --- a/src/smailyforprestashop.php +++ b/src/smailyforprestashop.php @@ -44,7 +44,7 @@ public function __construct() $this->need_instance = 0; $this->ps_versions_compliancy = [ 'min' => '8.0.0', - 'max' => '9.99.99', + 'max' => '8.99.99', ]; $this->bootstrap = true; From 727f7d72b2c0903396b63d93fc04a00d9246ed67 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Wed, 24 Apr 2024 16:15:04 +0300 Subject: [PATCH 049/114] Add license headers --- src/controllers/front/SmailyCartCron.php | 4 ++-- src/controllers/front/SmailyCustomerCron.php | 4 ++-- src/controllers/front/SmailyRssFeed.php | 4 ++-- src/lib/Api.php | 23 ++++++++++++++++++- src/lib/Logger.php | 23 ++++++++++++++++++- src/overrides/ps_emailsubscription.php | 23 ++++++++++++++++++- .../Controller/AbandonedCartController.php | 23 ++++++++++++++++++- src/src/Controller/CustomerSyncController.php | 23 ++++++++++++++++++- .../ModuleConfigurationController.php | 23 ++++++++++++++++++- src/src/Controller/OptInController.php | 23 ++++++++++++++++++- src/src/Controller/RssFeedController.php | 23 ++++++++++++++++++- .../AbandonedCartFormDataConfiguration.php | 23 ++++++++++++++++++- src/src/Form/AbandonedCartFormType.php | 23 ++++++++++++++++++- src/src/Form/AccountConfigurationFormType.php | 23 ++++++++++++++++++- src/src/Form/AccountFormDataConfiguration.php | 23 ++++++++++++++++++- src/src/Form/ChoiceProvider/Autoresponder.php | 23 +++++++++++++++++++ .../Form/ChoiceProvider/ProductCategory.php | 23 +++++++++++++++++++ .../CustomerSyncFormDataConfiguration.php | 23 ++++++++++++++++++- src/src/Form/CustomerSyncFormType.php | 23 ++++++++++++++++++- src/src/Form/FormDataProvider.php | 23 ++++++++++++++++++- src/src/Form/RssFeedFormDataConfiguration.php | 23 ++++++++++++++++++- src/src/Form/RssFeedFormType.php | 23 ++++++++++++++++++- src/src/Install/Installer.php | 23 ++++++++++++++++++- src/src/Model/AbandonedCart.php | 23 ++++++++++++++++++- src/src/Model/AbandonedCartCollection.php | 23 ++++++++++++++++++- src/src/Model/RssFeedProductsCollection.php | 23 +++++++++++++++++++ src/src/Model/SentCart.php | 23 ++++++++++++++++++- src/src/Model/Subscriber.php | 23 ++++++++++++++++++- src/src/Model/SubscriberCollection.php | 23 ++++++++++++++++++- 29 files changed, 581 insertions(+), 29 deletions(-) diff --git a/src/controllers/front/SmailyCartCron.php b/src/controllers/front/SmailyCartCron.php index 9fd59db..c4b44fc 100644 --- a/src/controllers/front/SmailyCartCron.php +++ b/src/controllers/front/SmailyCartCron.php @@ -1,6 +1,6 @@ . * * @author Smaily - * @copyright 2018 Smaily + * @copyright 2024 Smaily * @license GPL3 */ declare(strict_types=1); diff --git a/src/controllers/front/SmailyCustomerCron.php b/src/controllers/front/SmailyCustomerCron.php index 3098dac..6a8cc54 100644 --- a/src/controllers/front/SmailyCustomerCron.php +++ b/src/controllers/front/SmailyCustomerCron.php @@ -1,6 +1,6 @@ . * * @author Smaily - * @copyright 2018 Smaily + * @copyright 2024 Smaily * @license GPL3 */ declare(strict_types=1); diff --git a/src/controllers/front/SmailyRssFeed.php b/src/controllers/front/SmailyRssFeed.php index 68bb87f..e385b47 100644 --- a/src/controllers/front/SmailyRssFeed.php +++ b/src/controllers/front/SmailyRssFeed.php @@ -1,6 +1,6 @@ . * * @author Smaily - * @copyright 2018 Smaily + * @copyright 2024 Smaily * @license GPL3 */ declare(strict_types=1); diff --git a/src/lib/Api.php b/src/lib/Api.php index fafe1f3..50901a7 100644 --- a/src/lib/Api.php +++ b/src/lib/Api.php @@ -1,5 +1,26 @@ . + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ declare(strict_types=1); namespace PrestaShop\Module\SmailyForPrestaShop\Lib; diff --git a/src/lib/Logger.php b/src/lib/Logger.php index 6208df5..e0f0ea1 100644 --- a/src/lib/Logger.php +++ b/src/lib/Logger.php @@ -1,5 +1,26 @@ . + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ declare(strict_types=1); namespace PrestaShop\Module\SmailyForPrestaShop\Lib; diff --git a/src/overrides/ps_emailsubscription.php b/src/overrides/ps_emailsubscription.php index a3d3103..ffaaa95 100644 --- a/src/overrides/ps_emailsubscription.php +++ b/src/overrides/ps_emailsubscription.php @@ -1,5 +1,26 @@ . + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ declare(strict_types=1); class Ps_EmailsubscriptionOverRide extends Ps_Emailsubscription diff --git a/src/src/Controller/AbandonedCartController.php b/src/src/Controller/AbandonedCartController.php index a24dd35..f44ecf3 100644 --- a/src/src/Controller/AbandonedCartController.php +++ b/src/src/Controller/AbandonedCartController.php @@ -1,5 +1,26 @@ . + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ declare(strict_types=1); namespace PrestaShop\Module\SmailyForPrestaShop\Controller; diff --git a/src/src/Controller/CustomerSyncController.php b/src/src/Controller/CustomerSyncController.php index 5cf3db5..ccd8ec5 100644 --- a/src/src/Controller/CustomerSyncController.php +++ b/src/src/Controller/CustomerSyncController.php @@ -1,5 +1,26 @@ . + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ declare(strict_types=1); namespace PrestaShop\Module\SmailyForPrestaShop\Controller; diff --git a/src/src/Controller/ModuleConfigurationController.php b/src/src/Controller/ModuleConfigurationController.php index 65ee358..313a307 100644 --- a/src/src/Controller/ModuleConfigurationController.php +++ b/src/src/Controller/ModuleConfigurationController.php @@ -1,5 +1,26 @@ . + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ declare(strict_types=1); namespace PrestaShop\Module\SmailyForPrestaShop\Controller; diff --git a/src/src/Controller/OptInController.php b/src/src/Controller/OptInController.php index a17aead..225a5cd 100644 --- a/src/src/Controller/OptInController.php +++ b/src/src/Controller/OptInController.php @@ -1,5 +1,26 @@ . + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ declare(strict_types=1); namespace PrestaShop\Module\SmailyForPrestaShop\Controller; diff --git a/src/src/Controller/RssFeedController.php b/src/src/Controller/RssFeedController.php index 752b568..64f9285 100644 --- a/src/src/Controller/RssFeedController.php +++ b/src/src/Controller/RssFeedController.php @@ -1,5 +1,26 @@ . + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ declare(strict_types=1); namespace PrestaShop\Module\SmailyForPrestaShop\Controller; diff --git a/src/src/Form/AbandonedCartFormDataConfiguration.php b/src/src/Form/AbandonedCartFormDataConfiguration.php index 1aa532a..dfca1bb 100644 --- a/src/src/Form/AbandonedCartFormDataConfiguration.php +++ b/src/src/Form/AbandonedCartFormDataConfiguration.php @@ -1,5 +1,26 @@ . + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ declare(strict_types=1); namespace PrestaShop\Module\SmailyForPrestaShop\Form; diff --git a/src/src/Form/AbandonedCartFormType.php b/src/src/Form/AbandonedCartFormType.php index cdf671a..22b35c0 100644 --- a/src/src/Form/AbandonedCartFormType.php +++ b/src/src/Form/AbandonedCartFormType.php @@ -1,5 +1,26 @@ . + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ declare(strict_types=1); namespace PrestaShop\Module\SmailyForPrestaShop\Form; diff --git a/src/src/Form/AccountConfigurationFormType.php b/src/src/Form/AccountConfigurationFormType.php index 0999c5d..1291720 100644 --- a/src/src/Form/AccountConfigurationFormType.php +++ b/src/src/Form/AccountConfigurationFormType.php @@ -1,5 +1,26 @@ . + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ declare(strict_types=1); namespace PrestaShop\Module\SmailyForPrestaShop\Form; diff --git a/src/src/Form/AccountFormDataConfiguration.php b/src/src/Form/AccountFormDataConfiguration.php index 636af6d..8bc19f3 100644 --- a/src/src/Form/AccountFormDataConfiguration.php +++ b/src/src/Form/AccountFormDataConfiguration.php @@ -1,5 +1,26 @@ . + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ declare(strict_types=1); namespace PrestaShop\Module\SmailyForPrestaShop\Form; diff --git a/src/src/Form/ChoiceProvider/Autoresponder.php b/src/src/Form/ChoiceProvider/Autoresponder.php index f7c4323..43a840a 100644 --- a/src/src/Form/ChoiceProvider/Autoresponder.php +++ b/src/src/Form/ChoiceProvider/Autoresponder.php @@ -1,4 +1,27 @@ . + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ +declare(strict_types=1); namespace PrestaShop\Module\SmailyForPrestaShop\Form\ChoiceProvider; diff --git a/src/src/Form/ChoiceProvider/ProductCategory.php b/src/src/Form/ChoiceProvider/ProductCategory.php index 4e65252..3ef9396 100644 --- a/src/src/Form/ChoiceProvider/ProductCategory.php +++ b/src/src/Form/ChoiceProvider/ProductCategory.php @@ -1,4 +1,27 @@ . + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ +declare(strict_types=1); namespace PrestaShop\Module\SmailyForPrestaShop\Form\ChoiceProvider; diff --git a/src/src/Form/CustomerSyncFormDataConfiguration.php b/src/src/Form/CustomerSyncFormDataConfiguration.php index c4a25e3..60ad426 100644 --- a/src/src/Form/CustomerSyncFormDataConfiguration.php +++ b/src/src/Form/CustomerSyncFormDataConfiguration.php @@ -1,5 +1,26 @@ . + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ declare(strict_types=1); namespace PrestaShop\Module\SmailyForPrestaShop\Form; diff --git a/src/src/Form/CustomerSyncFormType.php b/src/src/Form/CustomerSyncFormType.php index 3531652..87460f3 100644 --- a/src/src/Form/CustomerSyncFormType.php +++ b/src/src/Form/CustomerSyncFormType.php @@ -1,5 +1,26 @@ . + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ declare(strict_types=1); namespace PrestaShop\Module\SmailyForPrestaShop\Form; diff --git a/src/src/Form/FormDataProvider.php b/src/src/Form/FormDataProvider.php index bc3a2ba..ffe62f8 100644 --- a/src/src/Form/FormDataProvider.php +++ b/src/src/Form/FormDataProvider.php @@ -1,5 +1,26 @@ . + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ declare(strict_types=1); namespace PrestaShop\Module\SmailyForPrestaShop\Form; diff --git a/src/src/Form/RssFeedFormDataConfiguration.php b/src/src/Form/RssFeedFormDataConfiguration.php index b248926..5e6f3a9 100644 --- a/src/src/Form/RssFeedFormDataConfiguration.php +++ b/src/src/Form/RssFeedFormDataConfiguration.php @@ -1,5 +1,26 @@ . + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ declare(strict_types=1); namespace PrestaShop\Module\SmailyForPrestaShop\Form; diff --git a/src/src/Form/RssFeedFormType.php b/src/src/Form/RssFeedFormType.php index 2b20599..2f7c397 100644 --- a/src/src/Form/RssFeedFormType.php +++ b/src/src/Form/RssFeedFormType.php @@ -1,5 +1,26 @@ . + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ declare(strict_types=1); namespace PrestaShop\Module\SmailyForPrestaShop\Form; diff --git a/src/src/Install/Installer.php b/src/src/Install/Installer.php index 39cc37c..11da5bd 100644 --- a/src/src/Install/Installer.php +++ b/src/src/Install/Installer.php @@ -1,5 +1,26 @@ . + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ declare(strict_types=1); namespace PrestaShop\Module\SmailyForPrestaShop\Install; diff --git a/src/src/Model/AbandonedCart.php b/src/src/Model/AbandonedCart.php index b17e01d..2c9b15a 100644 --- a/src/src/Model/AbandonedCart.php +++ b/src/src/Model/AbandonedCart.php @@ -1,5 +1,26 @@ . + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ declare(strict_types=1); namespace PrestaShop\Module\SmailyForPrestaShop\Model; diff --git a/src/src/Model/AbandonedCartCollection.php b/src/src/Model/AbandonedCartCollection.php index fd132e2..aab355c 100644 --- a/src/src/Model/AbandonedCartCollection.php +++ b/src/src/Model/AbandonedCartCollection.php @@ -1,5 +1,26 @@ . + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ declare(strict_types=1); namespace PrestaShop\Module\SmailyForPrestaShop\Model; diff --git a/src/src/Model/RssFeedProductsCollection.php b/src/src/Model/RssFeedProductsCollection.php index 51c1cb7..53b9e07 100644 --- a/src/src/Model/RssFeedProductsCollection.php +++ b/src/src/Model/RssFeedProductsCollection.php @@ -1,4 +1,27 @@ . + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ +declare(strict_types=1); namespace PrestaShop\Module\SmailyForPrestaShop\Model; diff --git a/src/src/Model/SentCart.php b/src/src/Model/SentCart.php index 61d09c6..8a1bb31 100644 --- a/src/src/Model/SentCart.php +++ b/src/src/Model/SentCart.php @@ -1,5 +1,26 @@ . + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ declare(strict_types=1); namespace PrestaShop\Module\SmailyForPrestaShop\Model; diff --git a/src/src/Model/Subscriber.php b/src/src/Model/Subscriber.php index d89bda3..400b8a3 100644 --- a/src/src/Model/Subscriber.php +++ b/src/src/Model/Subscriber.php @@ -1,5 +1,26 @@ . + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ declare(strict_types=1); namespace PrestaShop\Module\SmailyForPrestaShop\Model; diff --git a/src/src/Model/SubscriberCollection.php b/src/src/Model/SubscriberCollection.php index ff47355..3eb68f7 100644 --- a/src/src/Model/SubscriberCollection.php +++ b/src/src/Model/SubscriberCollection.php @@ -1,5 +1,26 @@ . + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ declare(strict_types=1); namespace PrestaShop\Module\SmailyForPrestaShop\Model; From 80e332b2c0fff55f9dbb61d9543757ac9bb748d1 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Wed, 24 Apr 2024 16:19:58 +0300 Subject: [PATCH 050/114] Improve comment wording --- src/src/Controller/AbandonedCartController.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/src/Controller/AbandonedCartController.php b/src/src/Controller/AbandonedCartController.php index f44ecf3..d3cbf55 100644 --- a/src/src/Controller/AbandonedCartController.php +++ b/src/src/Controller/AbandonedCartController.php @@ -86,8 +86,8 @@ public function sync(string $token): bool // Notice! // When running cron job in the same browser the session is shared // and the abandoned cart `date_upd` time is renewed on each request. - // This doesn't allow the check to pass. I recommend running in the cron job - // in private window to avoid this. + // This doesn't allow the check to pass. I recommend running the cron job + // in a private window to avoid this. if (!$this->isDelayTimePassed($cart)) { break; } From 921324d4fe5c6e1a453fa48ddb5a74c3989234a7 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Wed, 24 Apr 2024 17:21:27 +0300 Subject: [PATCH 051/114] Add new translations --- .../ModulesSmailyforprestashopAdmin.en-US.xlf | 377 ++++++++++++++++++ .../ModulesSmailyforprestashopAdmin.et-EE.xlf | 377 ++++++++++++++++++ src/translations/et.php | 95 ----- 3 files changed, 754 insertions(+), 95 deletions(-) create mode 100644 src/translations/en-US/ModulesSmailyforprestashopAdmin.en-US.xlf create mode 100644 src/translations/et-EE/ModulesSmailyforprestashopAdmin.et-EE.xlf delete mode 100644 src/translations/et.php diff --git a/src/translations/en-US/ModulesSmailyforprestashopAdmin.en-US.xlf b/src/translations/en-US/ModulesSmailyforprestashopAdmin.en-US.xlf new file mode 100644 index 0000000..98e4ff7 --- /dev/null +++ b/src/translations/en-US/ModulesSmailyforprestashopAdmin.en-US.xlf @@ -0,0 +1,377 @@ + + + + + + Smaily for PrestaShop + Smaily for PrestaShop + Line: + + + Smaily email marketing and automation module for PrestaShop. + Smaily email marketing and automation module for PrestaShop. + Line: + + + Are you sure you want to uninstall? + Are you sure you want to uninstall? + Line: + + + Smaily for PrestaShop modules opt-in automation trigger is active. Set up verification, confirmation and voucher sending in Smaily to avoid sending double emails. + Smaily for PrestaShop modules opt-in automation trigger is active. Set up verification, confirmation and voucher sending in Smaily to avoid sending double emails. + Line: + + + How to set up automation flow? + How to set up automation flow? + Line: + + + Connected with Smaily account. + Connected with Smaily account. + Line: + + + Configuration saved. + Configuration saved. + Line: + + + You have selected an automation to trigger opt-in email sending. We have disabled Newsletter Subscription plugins verification, confirmation and voucher email sending in order to avoid duplicate emails! + You have selected an automation to trigger opt-in email sending. We have disabled Newsletter Subscription plugins verification, confirmation and voucher email sending in order to avoid duplicate emails! + Line: + + + RSS-feed URL updated. + RSS-feed URL updated. + Line: + + + Maximum number or products is %value% + Maximum number or products is %value% + Line: + + + Product category + Product category + Line: + + + Show products only from this category. + Show products only from this category. + Line: + + + Product limit + Product limit + Line: + + + Limit how many products you will add to your feed. Maximum 250. + Limit how many products you will add to your feed. Maximum 250. + Line: + + + This value should be greater than %value% + This value should be greater than %value% + Line: + + + This value should be less than %value% + This value should be less than %value% + Line: + + + Sort by + Sort by + Line: + + + Date added + Date added + Line: + + + Date updated + Date updated + Line: + + + Product name + Product name + Line: + + + Product price + Product price + Line: + + + Product ID + Product ID + Line: + + + Sort order + Sort order + Line: + + + Descending + Descending + Line: + + + Ascending + Ascending + Line: + + + Enable Customer Synchronization + Enable Customer Synchronization + Line: + + + Synchronize Additional + Synchronize Additional + Line: + + + Select additional fields to syncronize + Select additional fields to syncronize + Line: + + + First name + First name + Line: + + + Last name + Last name + Line: + + + Birthday + Birthday + Line: + + + Website + Website + Line: + + + Cron token + Cron token + Line: + + + Token is required for cron security. Use this auto generated one or replace with your own. + Token is required for cron security. Use this auto generated one or replace with your own. + Line: + + + The field is required. + The field is required. + Line: + + + Trigger opt-in on customer sign-up + Trigger opt-in on customer sign-up + Line: + + + Automation to trigger on customer sign-up + Automation to trigger on customer sign-up + Line: + + + Subdomain + Subdomain + Line: + + + For example demo from https://demo.sendsmaily.net + For example demo from https://demo.sendsmaily.net + Line: + + + Username + Username + Line: + + + Password + Password + Line: + + + Connect + Connect + Line: + + + Please enter subdomain + Please enter subdomain + Line: + + + Please enter username + Please enter username + Line: + + + Please enter password + Please enter password + Line: + + + Unauthorized, please check credentials. + Unauthorized, please check credentials. + Line: + + + Error validating credentials, please try again. + Error validating credentials, please try again. + Line: + + + Enable Abandoed Cart + Enable Abandoed Cart + Line: + + + Autoresponder + Autoresponder + Line: + + + Select additional fields to send to abandoned cart template. + Select additional fields to send to abandoned cart template. + Line: + + + Customers first name + Customers first name + Line: + + + Customers last name + Customers last name + Line: + + + Product description + Product description + Line: + + + Product SKU + Product SKU + Line: + + + Product quantity + Product quantity + Line: + + + Abandoned Cart Delay + Abandoned Cart Delay + Line: + + + Time after cart is considered abandoned after last cart edit from customer. Minimum 15 minutes. + Time after cart is considered abandoned after last cart edit from customer. Minimum 15 minutes. + Line: + + + Please provide a cron token for customer synchronization. + Please provide a cron token for customer synchronization. + Line: + + + Please select an automation workflow for customer Opt-In trigger. + Please select an automation workflow for customer Opt-In trigger. + Line: + + + Please provide a cron token for abandoned cart synchronization. + Please provide a cron token for abandoned cart synchronization. + Line: + + + Abandoned Cart + Abandoned Cart + Line: + + + Cron URL + Cron URL + Line: + + + Copy to clipboard + Copy to clipboard + Line: + + + To schedule automatic sync, set up CRON in your hosting and use this URL. + To schedule automatic sync, set up CRON in your hosting and use this URL. + Line: + + + Smaily Account Settings + Smaily Account Settings + Line: + + + How to create API credentials? + How to create API credentials? + Line: + + + Reconnect + Reconnect + Line: + + + RSS Feed + RSS Feed + Line: + + + RSS-feed URL + RSS-feed URL + Line: + + + Customer Synchronization + Customer Synchronization + Line: + + + How to create an automation trigger? + How to create an automation trigger? + Line: + + + Smaily for Prestashop + Smaily for Prestashop + Line: + + + Account + Account + Line: + + + Customer Sync + Customer Sync + Line: + + + + diff --git a/src/translations/et-EE/ModulesSmailyforprestashopAdmin.et-EE.xlf b/src/translations/et-EE/ModulesSmailyforprestashopAdmin.et-EE.xlf new file mode 100644 index 0000000..91bd3e2 --- /dev/null +++ b/src/translations/et-EE/ModulesSmailyforprestashopAdmin.et-EE.xlf @@ -0,0 +1,377 @@ + + + + + + Smaily for PrestaShop + Smaily Moodul Prestashopile + Line: + + + Smaily email marketing and automation module for PrestaShop. + Smaily E-turunduse ja kontaktide automaatse sünkrooniseerimise moodul Prestashopile + Line: + + + Are you sure you want to uninstall? + Kas oled kindel, et tahad moodulit eemaldada? + Line: + + + Smaily for PrestaShop modules opt-in automation trigger is active. Set up verification, confirmation and voucher sending in Smaily to avoid sending double emails. + Smaily PrestaShop-i mooduli uudiskirjaga liitumise automaatika on aktiivne. Seadistage kinnituskirjade ning voucherite saatmise loogika Smaily automaatika töövoos, et vältida topelt kirjade saatmist. + Line: + + + How to set up automation flow? + Kuidas luua automaatika töövooge? + Line: + + + Connected with Smaily account. + Ühendatud Smaily kontoga. + Line: + + + Configuration saved. + Sätted salvestatud. + Line: + + + You have selected an automation to trigger opt-in email sending. We have disabled Newsletter Subscription plugins verification, confirmation and voucher email sending in order to avoid duplicate emails! + Olete aktiveerinud uudiskirjaga liitumise töövoo automaatika. Me lülitasime välja Newsletter Subscription mooduli kinnituskirjade ning voucherite saatmise, et vältida topelt kirjade saatmist! + Line: + + + RSS-feed URL updated. + RSS-voo veebiaadress uuendatud + Line: + + + Maximum number or products is %value% + Maksimaalne lubatud toodete arv on %value% + Line: + + + Product category + Toote kategooria + Line: + + + Show products only from this category. + Näita tooteid ainult sellest kategooriast + Line: + + + Product limit + Toodete limiit + Line: + + + Limit how many products you will add to your feed. Maximum 250. + Piira mitu toodet kuvatakse RSS-voos. Maksimum 250. + Line: + + + This value should be greater than %value% + See väärtus peab olema suurem kui %value% + Line: + + + This value should be less than %value% + See väärtus peab olema väiksem kui %value% + Line: + + + Sort by + Järjesta + Line: + + + Date added + Lisamise kuupäev + Line: + + + Date updated + Uuendamise kuupäev + Line: + + + Product name + Toote nimi + Line: + + + Product price + Toote hind + Line: + + + Product ID + Toote ID + Line: + + + Sort order + Järjestamise suund + Line: + + + Descending + Kahanev + Line: + + + Ascending + Kasvav + Line: + + + Enable Customer Synchronization + Aktiveeri Kasutajate Sünkroniseerimine + Line: + + + Synchronize Additional + Lisaväljad + Line: + + + Select additional fields to syncronize + Vali väljad mida soovid sünkroniseerida + Line: + + + First name + Eesnimi + Line: + + + Last name + Perenimi + Line: + + + Birthday + Sünnikuupäev + Line: + + + Website + Poe nimi + Line: + + + Cron token + Cron identifikaator + Line: + + + Token is required for cron security. Use this auto generated one or replace with your own. + Identifikaator on vajalik turvalisuse tagamiseks. Kasuta automaatselt loodud identifikaatorit või asenda enda valitud väärtusega. + Line: + + + The field is required. + Antud väli on kohustuslik + Line: + + + Trigger opt-in on customer sign-up + Käivita opt-in kasutaja registreerimisel + Line: + + + Automation to trigger on customer sign-up + Kasutaja registreerimisel käivitatav automaatika + Line: + + + Subdomain + Alamdomeen + Line: + + + For example demo from https://demo.sendsmaily.net + Näiteks demo - https://demo.sendsmaily.net/ + Line: + + + Username + Kasutajatunnus + Line: + + + Password + Salasõna + Line: + + + Connect + Ühenda + Line: + + + Please enter subdomain + Palun sisesta alamdomeen + Line: + + + Please enter username + Palun sisesta kasutajatunnus + Line: + + + Please enter password + Palun sisesta parool + Line: + + + Unauthorized, please check credentials. + Vale kasutajatunnus või parool! + Line: + + + Error validating credentials, please try again. + Ilmnes tõrge Smaily teenusega ühildumisel, proovige uuesti. + Line: + + + Enable Abandoed Cart + Aktiveeri Unustatud Ostukorvi Meeldetuletus + Line: + + + Autoresponder + Automaatika + Line: + + + Select additional fields to send to abandoned cart template. + Vali täiendavad väljad, mida soovid lisada unustaud ostukorvi kirjale. + Line: + + + Customers first name + Kliendi Eesnimi + Line: + + + Customers last name + Kliendi Perekonnanimi + Line: + + + Product description + Toote Kirjeldus + Line: + + + Product SKU + Tootekood + Line: + + + Product quantity + Toote Kogus + Line: + + + Abandoned Cart Delay + Unustatud Ostukorvi Viivitus + Line: + + + Time after cart is considered abandoned after last cart edit from customer. Minimum 15 minutes. + Aeg pärast mida loetakse ostukorv hüljatuks kui klient on lisanud viimase toote. Miinimum väärtus 15 minutit. + Line: + + + Please provide a cron token for customer synchronization. + Palun sisesta cron identifikaator kasutajate sünkroniseerimiseks + Line: + + + Please select an automation workflow for customer Opt-In trigger. + Palun sisesta opt-in töövoo automaatika + Line: + + + Please provide a cron token for abandoned cart synchronization. + Palun sisesta cron identifikaator unustatud ostukorvide sünkroniseerimiseks + Line: + + + Abandoned Cart + Unustatud Ostukorv + Line: + + + Cron URL + Cron veebiaadress + Line: + + + Copy to clipboard + Kopeeri lõikepuhverisse + Line: + + + To schedule automatic sync, set up CRON in your hosting and use this URL. + Et aktiveerida automaatne kontaktide sünkroniseerimine seadistage Cron oma teenusepakkuja juures. + Line: + + + Smaily Account Settings + Smaily Konto Sätted + Line: + + + How to create API credentials? + Kuidas luua API kasutajatunnuseid? + Line: + + + Reconnect + Ühenda uuesti + Line: + + + RSS Feed + Rss-voog + Line: + + + RSS-feed URL + RSS-voo veebiaadress + Line: + + + Customer Synchronization + Kasutajate Sünkroniseerimine + Line: + + + How to create an automation trigger? + Kuidas luua automaatika töövoogu? + Line: + + + Smaily for Prestashop + Smaily moodul Prestashopile + Line: + + + Account + Konto + Line: + + + Customer Sync + Kasutajate Sünkroniseerimine + Line: + + + + diff --git a/src/translations/et.php b/src/translations/et.php deleted file mode 100644 index 695132a..0000000 --- a/src/translations/et.php +++ /dev/null @@ -1,95 +0,0 @@ -smailyforprestashop_d51392bec6ce4585c3b03031b2197109'] = 'Smaily Moodul Prestashopile'; -$_MODULE['<{smailyforprestashop}prestashop>smailyforprestashop_3e614e6ed6a76b403e9cc5ce027ac0a9'] = 'Smaily E-turunduse ja kontaktide automaatse sünkrooniseerimise moodul Prestashopile'; -$_MODULE['<{smailyforprestashop}prestashop>smailyforprestashop_876f23178c29dc2552c0b48bf23cd9bd'] = 'Kas oled kindel, et tahad moodulit eemaldada?'; -$_MODULE['<{smailyforprestashop}prestashop>smailyforprestashop_d5bec2f567bdc848c592895659d5c32e'] = 'Sisselogimisandmed eemaldatud!'; -$_MODULE['<{smailyforprestashop}prestashop>smailyforprestashop_6439004ba361747ed7f2d96474a8a051'] = 'Tõrge sisselogimisandmete eemaldamisel'; -$_MODULE['<{smailyforprestashop}prestashop>smailyforprestashop_6464751d51688e4b41837605fff13a95'] = 'Palun valideeri sisselogimisandmed enne salvestamist.'; -$_MODULE['<{smailyforprestashop}prestashop>smailyforprestashop_c888438d14855d7d96a2724ee9c306bd'] = 'Seaded uuendatud'; -$_MODULE['<{smailyforprestashop}prestashop>smailyforprestashop_8ec70278e10dea192b0a722461e8ee46'] = 'Unustatud ostukorvi viivitus peab olema vähemalt 15 minutit.'; -$_MODULE['<{smailyforprestashop}prestashop>smailyforprestashop_62a01c1290186dbd91f4d4602c476f58'] = 'Vali unustatud ostukorvi automaatvastaja'; -$_MODULE['<{smailyforprestashop}prestashop>smailyforprestashop_daa6895e7a9ba2ad71b8e8094df4556b'] = 'Unustatud ostukorvi sätted salvestatud'; -$_MODULE['<{smailyforprestashop}prestashop>smailyforprestashop_2988d551644f4f8352bcbef773f9596b'] = 'RSS seaded uuendatud'; -$_MODULE['<{smailyforprestashop}prestashop>smailyforprestashop_d4fd3bc1732761a4497d35898051f6b3'] = 'Puuduvad Smaily automaatvastajad!'; -$_MODULE['<{smailyforprestashop}prestashop>smailyforprestashop_3bd9a770a0cdadf35e95645048e5fd23'] = 'Ilmnes tõrge Smaily teenusega ühildumisel!'; -$_MODULE['<{smailyforprestashop}prestashop>smailyforprestashop_95e979b91ee119662cd5ee6b85ee07e6'] = 'Sisselogimisandmed kinnitatud!'; -$_MODULE['<{smailyforprestashop}prestashop>smailyforprestashop_b55a2b2d84680417f12898a11647a1cb'] = 'Vale kasutajatunnus või parool!'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_05118375527d94e35408da46efdce0e5'] = 'Smaily Mooduli Sätted'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_0db377921f4ce762c62526131097968f'] = 'Üldsätted'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_fec6b1393cb5a616a7b19766d1c612c4'] = 'Kasutajate Sünkroniseerimine'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_7b02e2dc3e9cead891aa9c8f2421cf5a'] = 'Unustatud Ostukorv'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_7eca39de358415bfb69b727a9557cd1c'] = 'RSS-voog'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_beed05bccb8b6f21466910eb4a4f142b'] = 'Alamdomeen'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_e253c20d41b297237f90aa77a1ee1ae9'] = 'Näiteks demo - https://demo.sendsmaily.net/'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_f6039d44b29456b20f8f373155ae4973'] = 'Kasutajatunnus'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_dc647eb65e6711e155375218212b3964'] = 'Salasõna'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_d40b78b04f3f55d880966542e877bb50'] = 'Kuidas luua API kasutajatunnuseid?'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_ad3d06d03d94223fa652babc913de686'] = 'Kontrolli'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_2786289770be4b468adfc0bdb2f67b91'] = 'Klõpsa, et eemaldada sisselogimisanded'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_1063e38cb53d94d386f21227fcd84717'] = 'Eemalda'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_a69d72ba4abe9915e183bcd00d8fcc42'] = 'Aktiveeri Kasutajate Sünkroniseerimine'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_93cba07454f06a4a960172bbd6e2a435'] = 'Jah'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_bafd7322c6e97d25b6299b5d6fe8920b'] = 'Ei'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_c453535704cee5f76534f9feee2ad0d0'] = 'Lisa väljad sünkroniseerimiseks'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_04176f095283bc729f1e3926967e7034'] = 'Eesnimi'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_dff4bf10409100d989495c6d5486035e'] = 'Perekonnanimi'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_aac772216aecbeca0e86d06671fe985a'] = 'Sünnipäev'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_15bbb9d0bbf25e8d2978de1168c749dc'] = 'Veebileht'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_700712b0f6c113d523b2194a96a2b278'] = 'Vali lisa väljad, mida soovid sünkroniseerida'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_d0970ede0a15189ccf60baf5761f665f'] = 'Cron identifikaator'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_bb7b3c6261b41de1bd1fefa377a75f43'] = 'Identifikaator on vajalik turvalisuse tagamiseks. Kasuta automaatselt loodud identifikaatorit või asenda enda valitud väärtusega. '; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_5588ea18ef47155105d7d11abcb7e4e1'] = 'Croni URL'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_9cc2022eb76bc383c713c406b6ae96f2'] = 'Et aktiveerida automaatne kontaktide sünkroniseerimine seadistage Cron oma teenusepakkuja juures.'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_daf2a96781f203ddd0e0c8ba8fa25a2f'] = 'Käivita opt-in kasutaja registreerimisel'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_dc7361b8c5d6e2b9f95b8968533d7b14'] = 'Opt-in käivitatakse ainult siis, kui kasutaja loob konto ja liitub uudiskirjaga. Muutused uudiskirja sätetele adminpaneelis ei käivita opt-in\'i.'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_f31fe73b24620e23d03fd55013e1bf87'] = 'Kasutaja registreerimisel käivitatav automaatika'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_faa5e8094afca015fa4b4a702ed57645'] = 'Käivita iga opt-in automaatika'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_c9cc8cce247e49bae79f15173ce97354'] = 'Salvesta'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_a27d20b558af715c91592bcee1019dee'] = 'Aktiveeri Unustatud Ostukorvi Meeldetuletus'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_872bc575218e7dd2c749633da28c24ab'] = 'Automaatvastaja'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_3c6afc2203f77fb15d7b584e12960540'] = 'Vali Automaatvastaja'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_99770d280600b3c7ecc14faec49165ed'] = '(valitud)'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_52339dda9ea5970e03abacc8b3f5a5f0'] = 'Kliendi Eesnimi'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_b6268115ade98379fb5a25df9c8a796e'] = 'Kliendi Perekonnanimi'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_b9aefa40a54680bb258f9f9569290fae'] = 'Toote Nimi'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_854ee576475a63775d79cbfd6e4b13b6'] = 'Toote Kirjeldus'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_730939345d9af3700fe74821313c93e3'] = 'Tootekood'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_e4cc585947db6303293acd6e50e23abd'] = 'Toote Hind'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_232d65b71857a36cf90c20c3538e29e1'] = 'Toote Baashind'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_608315af4932b03356df72ac18092446'] = 'Toote Kogus'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_922f7a964e2f5dd5984c08ea9af64bbe'] = 'Vali täiendavad väljad, mida soovid lisada unustaud ostukorvi kirjale.'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_361a2e0648660de5428f5dc6c8ea4e51'] = 'Unustatud Ostukorvi Viivitus'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_f670ea66cfb0e90bd6090472ad692694'] = 'Minutit'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_e553d7a992213a4c4421d425404d5b61'] = 'Aeg pärast mida loetakse ostukorv hüljatuks kui klient on lisanud viimase toote. Miinimum väärtus 15 minutit.'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_d4647e3ff0ce2748179d79283d78efe4'] = 'Toodete kategooria'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_40dec546414c1ebdfde8d9858f0938c3'] = 'Kõik tooted'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_7f9e6d9931f9be51b9684d397eebd595'] = 'Näita üksnes selle kategooria tooteid'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_c1983ca83a423f06a8fa9d48b504d661'] = 'Toodete limiit'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_1aaf8fdbe2c4146c0f428a8c2bce3cf9'] = 'Piira mitu toodet kuvatakse RSS-voos. Maksimum 250.'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_01fda57aa6c7e9f07f5aa36b108e95cb'] = 'Järjesta tooteid'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_93a524d9a34a84b2c8b9f0575c08b6c8'] = 'Loomisaeg'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_9c34a97f10f573b8d1cc54832a13da30'] = 'Viimati uuendatud'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_49ee3087348e8d44e1feda1917443987'] = 'Nimi'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_3601146c4e948c32b6424d2c0a7f0118'] = 'Hind'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_97f08a40f22a625d0cbfe03db3349108'] = 'Toote ID'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_1ef176547b783195eb9c06166dba55e6'] = 'Järjestamise suund'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_cf3fb1ff52ea1eed3347ac5401ee7f0c'] = 'Kasvav'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_e3cf5ac19407b1a62c6fccaff675a53b'] = 'Kahanev'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_fe760630d69004060a872c86c116d120'] = 'RSS-voog'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_configure_e046e1a272245a642b1a3ee0b7b45e1d'] = 'Kopeeri see URL oma kirjapõhja väljale'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_blocknewsletter_3805f49499fa5010c394e219aa1fe7a0'] = 'Saage meie värskeimaid uudiseid ja eripakkumisi'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_blocknewsletter_a4d3b161ce1309df1c4e25df28694b7b'] = 'Telli'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_blocknewsletter_198584454b0ce1101ff5b50323325aa8'] = 'Teie e-posti aadress'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_blocknewsletter_e3bf47a46c6efd3bb53fedb5136bdf1c'] = 'Te võite igal ajal oma uudiskirja tellimuse tühistada.'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_blocknewsletter_cbef6aeeb39bd1078e8869492fd83f1c'] = 'Täname uudiskirjaga liitumise eest!'; -$_MODULE['<{smailyforprestashop}prestashop>smaily_blocknewsletter_e3678541149247bb751545e796269b8f'] = 'Midagi läks valesti uudiskirjaga liitumisel, palun proovi uuesti!'; -$_MODULE['<{smailyforprestashop}prestashop>adminsmailyforprestashopajaxcontroller_04ce02c2ca2327bc6651fd8359e29959'] = 'Palun sisesta alamdomeen!'; -$_MODULE['<{smailyforprestashop}prestashop>adminsmailyforprestashopajaxcontroller_544373e5036db114055a7273925d383d'] = 'Palun sisesta kasutajatunnus!'; -$_MODULE['<{smailyforprestashop}prestashop>adminsmailyforprestashopajaxcontroller_afa29ddf9281626cc3c38c6916fc85f8'] = 'Palun sisesta parool!'; -$_MODULE['<{smailyforprestashop}prestashop>adminsmailyforprestashopajaxcontroller_df512a7db3e4bf5e63c9ea0b21382b5b'] = 'Viga sisestatud andmetes!'; -$_MODULE['<{smailyforprestashop}prestashop>adminsmailyforprestashopajaxcontroller_b55a2b2d84680417f12898a11647a1cb'] = 'Vale kasutajatunnus või parool!'; -$_MODULE['<{smailyforprestashop}prestashop>adminsmailyforprestashopajaxcontroller_8806bbf77c1a0da89c5235fa868bc3cf'] = 'Vale alamdomeen!'; -$_MODULE['<{smailyforprestashop}prestashop>adminsmailyforprestashopajaxcontroller_e57cbdfe3a6c5715d95e860754b4101a'] = 'Ilmnes tõrge Smaily teenusega ühildumisel!'; From 4fbb30ec96ddb40f976d0ac67844bb7f2fafa490 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Thu, 25 Apr 2024 10:58:00 +0300 Subject: [PATCH 052/114] Add section about mailhog --- CONTRIBUTING.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 91405f3..459a56c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -70,7 +70,7 @@ If you need to reset the installation, just simply delete environment's Docker v $ docker compose down --remove-orphans -v -## Weird behavior in different versions +## Helpful notices for development ### php-cs-fixer not working @@ -79,3 +79,7 @@ You may notice that `php-cs-fixer` might not work for some PrestaShop image vers ## cache invalidation There seems to be lot of issues related to cache being invalid. Sometimes the module routes are not found or services configuration is missing etc. Most of them can be fixed by pruning cache folder located in `/var/www/html/var/cache/dev`. Some versions use `admin-dev` folder. + +## catching shop sent emails + +The development environment is configured with mailhog that is accessible from `localhost:8025`. You need to configure the shop to use this SMTP server. Navigate from the side menu to `CONFIGURE` -> `Advanced Parameters` -> `E-mail`. Select `Set my own SMTP parameters (for advanced users ONLY)` and use `mailhog` as SMTP server and `1025` as the port. Sending a test email should result a test message arriving to the inbox of mailhog client on `localhost:8025`. From 0e25c0eae2f1373d324fc5df971f77a380b5d32a Mon Sep 17 00:00:00 2001 From: Kaarel Date: Thu, 25 Apr 2024 12:17:46 +0300 Subject: [PATCH 053/114] Add abandoned cart product model Version 8 has changed product field names --- .../Controller/AbandonedCartController.php | 25 +++++---- src/src/Form/AbandonedCartFormType.php | 10 ++++ src/src/Model/AbandonedCart.php | 2 +- src/src/Model/AbandonedCartCollection.php | 29 +++++++--- src/src/Model/AbandonedCartProduct.php | 55 +++++++++++++++++++ 5 files changed, 100 insertions(+), 21 deletions(-) create mode 100644 src/src/Model/AbandonedCartProduct.php diff --git a/src/src/Controller/AbandonedCartController.php b/src/src/Controller/AbandonedCartController.php index d3cbf55..8288c2c 100644 --- a/src/src/Controller/AbandonedCartController.php +++ b/src/src/Controller/AbandonedCartController.php @@ -186,12 +186,12 @@ private function generatePayload(AbandonedCart $cart): array // Populate abandoned cart with empty values for legacy api. $fields_available = [ - 'name', + 'base_price', 'description', - 'sku', + 'name', 'price', 'quantity', - 'base_price', + 'sku', ]; foreach ($fields_available as $field) { for ($i = 1; $i <= 10; ++$i) { @@ -215,26 +215,29 @@ private function generatePayload(AbandonedCart $cart): array switch ($sync_field) { case 'base_price': $payload['product_base_price_' . $count] = \Context::getContext()->currentLocale->formatPrice( - $product['price_without_reduction'], + $product->basePrice, $currency ); break; + case 'description': + $payload['product_description_' . $count] = $product->description; + break; + case 'name': + $payload['product_name_' . $count] = $product->name; + break; case 'price': $payload['product_price_' . $count] = \Context::getContext()->currentLocale->formatPrice( - $product['price_with_reduction'], + $product->price, $currency ); break; case 'sku': - $payload['product_sku_' . $count] = $product['reference']; + $payload['product_sku_' . $count] = $product->sku; break; - case 'description': - $payload['product_description_' . $count] = htmlspecialchars( - $product['description_short'] - ); + case 'quantity': + $payload['product_quantity_' . $count] = $product->quantity; break; default: - $payload['product_' . $sync_field . '_' . $count] = $product[$sync_field]; break; } } diff --git a/src/src/Form/AbandonedCartFormType.php b/src/src/Form/AbandonedCartFormType.php index 22b35c0..0a017b3 100644 --- a/src/src/Form/AbandonedCartFormType.php +++ b/src/src/Form/AbandonedCartFormType.php @@ -148,6 +148,16 @@ public function buildForm(FormBuilderInterface $builder, array $options) 'material_design' => true, ], ] + )->add( + 'base_price', + CheckboxType::class, + [ + 'label' => $this->trans('Product base price', 'Modules.Smailyforprestashop.Admin'), + 'required' => false, + 'attr' => [ + 'material_design' => true, + ], + ] )->add( 'quantity', CheckboxType::class, diff --git a/src/src/Model/AbandonedCart.php b/src/src/Model/AbandonedCart.php index 2c9b15a..ecbb8a2 100644 --- a/src/src/Model/AbandonedCart.php +++ b/src/src/Model/AbandonedCart.php @@ -54,7 +54,7 @@ class AbandonedCart public $email; /** - * @var array; + * @var AbandonedCartProduct[]; */ public $products; } diff --git a/src/src/Model/AbandonedCartCollection.php b/src/src/Model/AbandonedCartCollection.php index aab355c..6cc90bc 100644 --- a/src/src/Model/AbandonedCartCollection.php +++ b/src/src/Model/AbandonedCartCollection.php @@ -65,8 +65,8 @@ private function getCarts() $carts = $this->db->executeS($sql); $result = []; - foreach ($carts as $abandoned_cart) { - $prestaCart = new \Cart($abandoned_cart['id_cart']); + foreach ($carts as $abandonedCart) { + $prestaCart = new \Cart($abandonedCart['id_cart']); $products = $prestaCart->getProducts(); // Don't continue if no products in cart. if (empty($products)) { @@ -74,13 +74,24 @@ private function getCarts() } $cart = new AbandonedCart(); - $cart->cartID = (int) $abandoned_cart['id_cart']; - $cart->customerID = (int) $abandoned_cart['id_customer']; - $cart->dateUpdated = $abandoned_cart['date_upd']; - $cart->email = $abandoned_cart['email']; - $cart->firstName = $abandoned_cart['firstname']; - $cart->lastName = $abandoned_cart['lastname']; - $cart->products = $products; + $cart->cartID = (int) $abandonedCart['id_cart']; + $cart->customerID = (int) $abandonedCart['id_customer']; + $cart->dateUpdated = $abandonedCart['date_upd']; + $cart->email = $abandonedCart['email']; + $cart->firstName = $abandonedCart['firstname']; + $cart->lastName = $abandonedCart['lastname']; + + foreach ($products as $product) { + $abandonedCartProduct = new AbandonedCartProduct(); + $abandonedCartProduct->name = $product['name']; + $abandonedCartProduct->description = $product['description_short']; + $abandonedCartProduct->sku = $product['reference']; + $abandonedCartProduct->price = $product['price_with_reduction']; + $abandonedCartProduct->basePrice = $product['price_without_reduction']; + $abandonedCartProduct->quantity = $product['quantity']; + + $cart->products[] = $abandonedCartProduct; + } $result[] = $cart; } diff --git a/src/src/Model/AbandonedCartProduct.php b/src/src/Model/AbandonedCartProduct.php new file mode 100644 index 0000000..1e33dd2 --- /dev/null +++ b/src/src/Model/AbandonedCartProduct.php @@ -0,0 +1,55 @@ +. + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ +declare(strict_types=1); + +namespace PrestaShop\Module\SmailyForPrestaShop\Model; + +class AbandonedCartProduct +{ + /** + * @var string + */ + public $name; + /** + * @var string + */ + public $description; + + /** + * @var string + */ + public $sku; + /** + * @var string + */ + public $price; + /** + * @var string + */ + public $quantity; + /** + * @var string + */ + public $basePrice; +} From 06c9784d0476ddc52a5aea66d78faa2131deedc7 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Thu, 25 Apr 2024 12:19:49 +0300 Subject: [PATCH 054/114] Improve readme wordings --- README.md | 53 ++++++++++++++++++++++++++--------------------------- 1 file changed, 26 insertions(+), 27 deletions(-) diff --git a/README.md b/README.md index 2c3925d..4573135 100644 --- a/README.md +++ b/README.md @@ -4,35 +4,35 @@ Smaily email marketing and automation extension module for PrestaShop. -Automatically subscribe newsletter subscribers to a Smaily subscribers list, generate rss-feed based on products for easy template import and add Newsletter Subscribtion form for opt-in sign-up form. +Automatically subscribe newsletter subscribers to a Smaily subscribers list, generate an RSS feed based on products for easy template import and add a Newsletter Subscription form for an opt-in sign-up form. ## Features ### PrestaShop Newsletter Subscribers -- Add subscribers to Smaily subscribers list -- Add new Subscribe Newsletter form to send subscribers directly to Smaily subscribers list +- Add subscribers to the Smaily subscribers list +- Use the Subscribe Newsletter modules form to send subscribers directly to the Smaily subscribers list - Subscribe Newsletter form with CAPTCHA support ### PrestaShop Products RSS-feed -- Generate RSS-feed with 50 latest updated active products for easy import to Smaily template +Generate an RSS feed with the 50 latest updated active products for easy import to the Smaily template ### Two-way synchronization between Smaily and PrestaShop -- Get unsubscribers from Smaily unsubscribed list +- Remove Store subscribers based on the Smaily unsubscribed list - Update unsubscribed status in PrestaShop users database -- Collect new user data for subscribed users +- Collect and send new user data to Smaily for subscribers in the Store - Generate data log for each update ### Abandoned cart - Get customer abandoned cart info and send recovery e-mails with Smaily templates. -- Set prefered delay time when cart is considered abandoned. +- Set preferred delay time when the cart is considered abandoned. ## Requirements -Smaily for Prestashop requires PHP 5.6+ (PHP 7.0+ recommended). You'll also need to be running Prestashop 1.7+. +Smaily for Prestashop requires PHP 7.2+ (PHP 8.1+ recommended). You'll also need to be running Prestashop 8.0+. ## Documentation & Support @@ -50,42 +50,41 @@ All development for Smaily for Prestashop is [handled via GitHub](https://github ## Usage 1. Go to Modules -> Module Manager -> Smaily for Prestashop and click Configure -2. Insert your Smaily API authentication information and click **Validate** to get started. -3. Under **Customer Synchronization** tab select if you want to enable customer synchronization. -4. Select additional fields you want to synchronize (email is automatic), change cron token if you like your own. -5. New customers who sign up with newsletter enabled can be added to Smaily by enabling trigger opt-in on customer signup. +2. Insert your Smaily API authentication information and click **Connect** to get started. +3. Under the **Customer Sync** tab select if you want to enable customer synchronization. +4. Select additional fields you want to synchronize (email is automatic) and change the cron token if you like your own. +5. New customers who sign up with the newsletter enabled can be added to Smaily by enabling trigger opt-in on customer signup. 6. An autoresponder can be selected for "opt-in on customer sign-up", this will only be triggered if the previous option is enabled. 7. Click **Save** to save customer synchronization settings. -8. Under **Abandoned Cart** tab select if you want to enable abandoned cart synchronization. +8. Under the **Abandoned Cart** tab select if you want to enable abandoned cart synchronization. 9. Select autoresponder for abandoned cart. -10. Select additional fields to send to abandoned cart template. Firstname, lastname and store-url are always added. -11. Add delay time when cart is considered abandoned. Minimum time 15 minutes. Change cron token if you like your own. +10. Select additional fields to send to the abandoned cart template. Firstname, lastname and store-url are always added. +11. Add delay time when the cart is considered abandoned. Minimum time 15 minutes. Change the cron token if you like your own. 12. Click **Save** to save abandoned cart settings. -13. Cron is set up to synchronize contacts when CRON-url is visited. Use host Cpanel, PrestaShop Cron tasks manager or external cron service to automate process. -14. That's it, your PrestaShop store is now integrated with Smaily Plugin! +13. Cron is set up to synchronize contacts when CRON-URL is visited. Use host Cpanel, PrestaShop Cron tasks manager or external cron service to automate the process. +14. That's it, your PrestaShop store is now integrated with the Smaily Plugin! -## Using Newsletter Subscription form +## Using the Newsletter Subscription form 1. Navigate to Design -> Positions -> Transplant a Module section. -2. Select **Smaily for Prestashop** module in Module field. -3. Select hook where you would like to transplant newsletter form. You can chose FooterBefore / LeftColumn / RightColumn. -4. New form is displayed when you have validated your credentials in Smaily for Opencart module settings. +2. Select the **Newsletter subscription** module in the Module field. +3. Select a hook where you would like to transplant the newsletter form. ## Frequently Asked Questions -### Where I can find data-log for Cron? +### Where I can find the data log for Cron? -Cron update data-log is stored in the root folder of Smaily plugin, inside "smaily-cron.txt" file. +The Cron update data log is stored in the root folder of the Smaily plugin, inside the "smaily-cron.txt" file. -### How can I access additional Abandoned cart parameters in Smaily template editor? +### How can I access additional Abandoned cart parameters in the Smaily template editor? -Here is a list of all the parameters available in Smaily email templating engine: +Here is a list of all the parameters available in the Smaily email templating engine: Customer first name: `{{ first_name }}`. Customer last name: `{{ last_name }}`. -Up to 10 products can be received in Smaily templating engine. You can reference each product with number 1-10 behind parameter name. +Up to 10 products can be received in the Smaily templating engine. You can reference each product with a number 1-10 behind the parameter name. Product name: `{{ product_name_[1-10] }}`. @@ -99,6 +98,6 @@ Product price: `{{ product_price_[1-10] }}`. Product base price : `{{ product_base_price_[1-10] }}`. -Also you can determine if customer had more than 10 items in cart +Also, you can determine if a customer had more than 10 items in the cart More than 10 items: `{{ over_10_products }}`. From 2432aebe1e5f8d68fa2125580afa0c7308d1ff8b Mon Sep 17 00:00:00 2001 From: Kaarel Date: Thu, 25 Apr 2024 12:54:21 +0300 Subject: [PATCH 055/114] Add form listener for connection error messages --- src/src/Form/AccountConfigurationFormType.php | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/src/Form/AccountConfigurationFormType.php b/src/src/Form/AccountConfigurationFormType.php index 1291720..6ca023e 100644 --- a/src/src/Form/AccountConfigurationFormType.php +++ b/src/src/Form/AccountConfigurationFormType.php @@ -25,11 +25,15 @@ namespace PrestaShop\Module\SmailyForPrestaShop\Form; +use PrestaShop\Module\SmailyForPrestaShop\Lib\Api; use PrestaShopBundle\Form\Admin\Type\TranslatorAwareType; +use Symfony\Component\Form\Event\PostSetDataEvent; use Symfony\Component\Form\Extension\Core\Type\PasswordType; use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\FormBuilderInterface; +use Symfony\Component\Form\FormError; +use Symfony\Component\Form\FormEvents; class AccountConfigurationFormType extends TranslatorAwareType { @@ -51,6 +55,25 @@ public function buildForm(FormBuilderInterface $builder, array $options): void 'attr' => [ 'class' => 'btn-primary', ], - ]); + ])->addEventListener( + FormEvents::POST_SET_DATA, + [$this, 'connectionChecker'] + ); + } + + public function connectionChecker(PostSetDataEvent $event): void + { + $form = $event->getForm(); + + $credentials = $event->getData(); + + if (!empty($credentials['subdomain'] && !empty($credentials['username']) && !empty($credentials['password']))) { + $api = new Api($credentials['subdomain'], $credentials['username'], $credentials['password']); + + $resp = $api->listAutoresponders(); + if ($resp->getStatusCode() !== 200) { + $form->get('password')->addError(new FormError($this->trans('Failed to establish connection with Smaily. Please check credentials and reconnect!', 'Modules.Smailyforprestashiop.Admin'))); + } + } } } From 26e60a78fc8f9ef8601ada369e35942f3cf54ea0 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Thu, 25 Apr 2024 12:56:52 +0300 Subject: [PATCH 056/114] Remove cron data log from readme --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index 4573135..3b0c143 100644 --- a/README.md +++ b/README.md @@ -72,10 +72,6 @@ All development for Smaily for Prestashop is [handled via GitHub](https://github ## Frequently Asked Questions -### Where I can find the data log for Cron? - -The Cron update data log is stored in the root folder of the Smaily plugin, inside the "smaily-cron.txt" file. - ### How can I access additional Abandoned cart parameters in the Smaily template editor? Here is a list of all the parameters available in the Smaily email templating engine: From bc38689549f9fb1582c25a91d3218f6e887812cf Mon Sep 17 00:00:00 2001 From: Kaarel Date: Thu, 25 Apr 2024 13:29:31 +0300 Subject: [PATCH 057/114] Revert SentCart back to sent_date --- src/src/Controller/AbandonedCartController.php | 1 + src/src/Install/Installer.php | 9 ++++----- src/src/Model/SentCart.php | 10 ++-------- 3 files changed, 7 insertions(+), 13 deletions(-) diff --git a/src/src/Controller/AbandonedCartController.php b/src/src/Controller/AbandonedCartController.php index 8288c2c..1d57603 100644 --- a/src/src/Controller/AbandonedCartController.php +++ b/src/src/Controller/AbandonedCartController.php @@ -164,6 +164,7 @@ private function send(AbandonedCart $cart): bool $sentCart = new SentCart(); $sentCart->id_customer = $cart->customerID; $sentCart->id_cart = $cart->cartID; + $sentCart->date_sent = date('Y-m-d H:i:s'); $sentCart->save(); return true; diff --git a/src/src/Install/Installer.php b/src/src/Install/Installer.php index 11da5bd..300cba0 100644 --- a/src/src/Install/Installer.php +++ b/src/src/Install/Installer.php @@ -79,11 +79,10 @@ public function uninstall(): bool private function createTables(): bool { $sql = 'CREATE TABLE IF NOT EXISTS ' . _DB_PREFIX_ . 'smaily_cart ( - `id_smaily_cart` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , - `id_customer` INT UNSIGNED NULL , - `id_cart` INT UNSIGNED NULL , - `date_add` DATETIME NOT NULL, - `date_upd` DATETIME NOT NULL) ENGINE=' . _MYSQL_ENGINE_; + `id_smaily_cart` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, + `id_customer` INT UNSIGNED NULL, + `id_cart` INT UNSIGNED NULL, + `date_sent` DATETIME NOT NULL) ENGINE=' . _MYSQL_ENGINE_; return \Db::getInstance()->execute($sql); } diff --git a/src/src/Model/SentCart.php b/src/src/Model/SentCart.php index 8a1bb31..cf6c64f 100644 --- a/src/src/Model/SentCart.php +++ b/src/src/Model/SentCart.php @@ -42,15 +42,10 @@ class SentCart extends \ObjectModel */ public $id_cart; - /** - * @var string; - */ - public $date_add; - /** * @var string */ - public $date_upd; + public $date_sent; public static $definition = [ 'table' => 'smaily_cart', @@ -59,8 +54,7 @@ class SentCart extends \ObjectModel 'fields' => [ 'id_customer' => ['type' => self::TYPE_INT], 'id_cart' => ['type' => self::TYPE_INT], - 'date_add' => ['type' => self::TYPE_DATE, 'shop' => true, 'validate' => 'isDate'], - 'date_upd' => ['type' => self::TYPE_DATE, 'shop' => true, 'validate' => 'isDate'], + 'date_sent' => ['type' => self::TYPE_DATE], ], ]; } From aec75de824a05ed108adeea46b9db4d1450dafea Mon Sep 17 00:00:00 2001 From: Kaarel Date: Thu, 25 Apr 2024 13:29:51 +0300 Subject: [PATCH 058/114] Remove autoload files from ignored files --- src/.gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/.gitignore b/src/.gitignore index cb0f60e..02653f0 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -1,2 +1,6 @@ vendor + +!vendor/composer +!vendor/autoload.php + *.cache From 2818c9127d9bab1700c5cc3cdad2495cfc397526 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Thu, 25 Apr 2024 14:00:24 +0300 Subject: [PATCH 059/114] Add autoload files to version control --- src/.gitignore | 12 +- src/vendor/autoload.php | 25 + src/vendor/composer/ClassLoader.php | 579 ++++++++++++++++++++ src/vendor/composer/autoload_classmap.php | 34 ++ src/vendor/composer/autoload_files.php | 17 + src/vendor/composer/autoload_namespaces.php | 9 + src/vendor/composer/autoload_psr4.php | 38 ++ src/vendor/composer/autoload_real.php | 50 ++ src/vendor/composer/autoload_static.php | 217 ++++++++ src/vendor/composer/platform_check.php | 26 + 10 files changed, 1003 insertions(+), 4 deletions(-) create mode 100644 src/vendor/autoload.php create mode 100644 src/vendor/composer/ClassLoader.php create mode 100644 src/vendor/composer/autoload_classmap.php create mode 100644 src/vendor/composer/autoload_files.php create mode 100644 src/vendor/composer/autoload_namespaces.php create mode 100644 src/vendor/composer/autoload_psr4.php create mode 100644 src/vendor/composer/autoload_real.php create mode 100644 src/vendor/composer/autoload_static.php create mode 100644 src/vendor/composer/platform_check.php diff --git a/src/.gitignore b/src/.gitignore index 02653f0..002ea86 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -1,6 +1,10 @@ -vendor +*.cache -!vendor/composer +# Keep only autoload files +vendor/* !vendor/autoload.php - -*.cache +!vendor/composer +vendor/composer/* +!vendor/composer/autoload* +!vendor/composer/ClassLoader.php +!vendor/composer/platform_check.php diff --git a/src/vendor/autoload.php b/src/vendor/autoload.php new file mode 100644 index 0000000..6709c11 --- /dev/null +++ b/src/vendor/autoload.php @@ -0,0 +1,25 @@ + + * Jordi Boggiano + * + * 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 + * @author Jordi Boggiano + * @see https://www.php-fig.org/psr/psr-0/ + * @see https://www.php-fig.org/psr/psr-4/ + */ +class ClassLoader +{ + /** @var \Closure(string):void */ + private static $includeFile; + + /** @var string|null */ + private $vendorDir; + + // PSR-4 + /** + * @var array> + */ + private $prefixLengthsPsr4 = array(); + /** + * @var array> + */ + private $prefixDirsPsr4 = array(); + /** + * @var list + */ + private $fallbackDirsPsr4 = array(); + + // PSR-0 + /** + * List of PSR-0 prefixes + * + * Structured as array('F (first letter)' => array('Foo\Bar (full prefix)' => array('path', 'path2'))) + * + * @var array>> + */ + private $prefixesPsr0 = array(); + /** + * @var list + */ + private $fallbackDirsPsr0 = array(); + + /** @var bool */ + private $useIncludePath = false; + + /** + * @var array + */ + private $classMap = array(); + + /** @var bool */ + private $classMapAuthoritative = false; + + /** + * @var array + */ + private $missingClasses = array(); + + /** @var string|null */ + private $apcuPrefix; + + /** + * @var array + */ + private static $registeredLoaders = array(); + + /** + * @param string|null $vendorDir + */ + public function __construct($vendorDir = null) + { + $this->vendorDir = $vendorDir; + self::initializeIncludeClosure(); + } + + /** + * @return array> + */ + public function getPrefixes() + { + if (!empty($this->prefixesPsr0)) { + return call_user_func_array('array_merge', array_values($this->prefixesPsr0)); + } + + return array(); + } + + /** + * @return array> + */ + public function getPrefixesPsr4() + { + return $this->prefixDirsPsr4; + } + + /** + * @return list + */ + public function getFallbackDirs() + { + return $this->fallbackDirsPsr0; + } + + /** + * @return list + */ + public function getFallbackDirsPsr4() + { + return $this->fallbackDirsPsr4; + } + + /** + * @return array Array of classname => path + */ + public function getClassMap() + { + return $this->classMap; + } + + /** + * @param array $classMap Class to filename map + * + * @return void + */ + 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 list|string $paths The PSR-0 root directories + * @param bool $prepend Whether to prepend the directories + * + * @return void + */ + public function add($prefix, $paths, $prepend = false) + { + $paths = (array) $paths; + if (!$prefix) { + if ($prepend) { + $this->fallbackDirsPsr0 = array_merge( + $paths, + $this->fallbackDirsPsr0 + ); + } else { + $this->fallbackDirsPsr0 = array_merge( + $this->fallbackDirsPsr0, + $paths + ); + } + + return; + } + + $first = $prefix[0]; + if (!isset($this->prefixesPsr0[$first][$prefix])) { + $this->prefixesPsr0[$first][$prefix] = $paths; + + return; + } + if ($prepend) { + $this->prefixesPsr0[$first][$prefix] = array_merge( + $paths, + $this->prefixesPsr0[$first][$prefix] + ); + } else { + $this->prefixesPsr0[$first][$prefix] = array_merge( + $this->prefixesPsr0[$first][$prefix], + $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 list|string $paths The PSR-4 base directories + * @param bool $prepend Whether to prepend the directories + * + * @throws \InvalidArgumentException + * + * @return void + */ + public function addPsr4($prefix, $paths, $prepend = false) + { + $paths = (array) $paths; + if (!$prefix) { + // Register directories for the root namespace. + if ($prepend) { + $this->fallbackDirsPsr4 = array_merge( + $paths, + $this->fallbackDirsPsr4 + ); + } else { + $this->fallbackDirsPsr4 = array_merge( + $this->fallbackDirsPsr4, + $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] = $paths; + } elseif ($prepend) { + // Prepend directories for an already registered namespace. + $this->prefixDirsPsr4[$prefix] = array_merge( + $paths, + $this->prefixDirsPsr4[$prefix] + ); + } else { + // Append directories for an already registered namespace. + $this->prefixDirsPsr4[$prefix] = array_merge( + $this->prefixDirsPsr4[$prefix], + $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 list|string $paths The PSR-0 base directories + * + * @return void + */ + 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 list|string $paths The PSR-4 base directories + * + * @throws \InvalidArgumentException + * + * @return void + */ + 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 + * + * @return void + */ + 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 + * + * @return void + */ + 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 + * + * @return void + */ + 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 + * + * @return void + */ + 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. + * + * @return void + */ + 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 true|null True if loaded, null otherwise + */ + public function loadClass($class) + { + if ($file = $this->findFile($class)) { + $includeFile = self::$includeFile; + $includeFile($file); + + return true; + } + + return null; + } + + /** + * 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 keyed by their corresponding vendor directories. + * + * @return array + */ + public static function getRegisteredLoaders() + { + return self::$registeredLoaders; + } + + /** + * @param string $class + * @param string $ext + * @return string|false + */ + 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; + } + + /** + * @return void + */ + private static function initializeIncludeClosure() + { + if (self::$includeFile !== null) { + return; + } + + /** + * Scope isolated include. + * + * Prevents access to $this/self from included files. + * + * @param string $file + * @return void + */ + self::$includeFile = \Closure::bind(static function($file) { + include $file; + }, null, null); + } +} diff --git a/src/vendor/composer/autoload_classmap.php b/src/vendor/composer/autoload_classmap.php new file mode 100644 index 0000000..1d1b834 --- /dev/null +++ b/src/vendor/composer/autoload_classmap.php @@ -0,0 +1,34 @@ + $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Attribute.php', + 'CURLStringFile' => $vendorDir . '/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php', + 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php', + 'Normalizer' => $vendorDir . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php', + 'PhpToken' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php', + 'ReturnTypeWillChange' => $vendorDir . '/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php', + 'SebastianBergmann\\Diff\\Chunk' => $vendorDir . '/sebastian/diff/src/Chunk.php', + 'SebastianBergmann\\Diff\\ConfigurationException' => $vendorDir . '/sebastian/diff/src/Exception/ConfigurationException.php', + 'SebastianBergmann\\Diff\\Diff' => $vendorDir . '/sebastian/diff/src/Diff.php', + 'SebastianBergmann\\Diff\\Differ' => $vendorDir . '/sebastian/diff/src/Differ.php', + 'SebastianBergmann\\Diff\\Exception' => $vendorDir . '/sebastian/diff/src/Exception/Exception.php', + 'SebastianBergmann\\Diff\\InvalidArgumentException' => $vendorDir . '/sebastian/diff/src/Exception/InvalidArgumentException.php', + 'SebastianBergmann\\Diff\\Line' => $vendorDir . '/sebastian/diff/src/Line.php', + 'SebastianBergmann\\Diff\\LongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/LongestCommonSubsequenceCalculator.php', + 'SebastianBergmann\\Diff\\MemoryEfficientLongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php', + 'SebastianBergmann\\Diff\\Output\\AbstractChunkOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php', + 'SebastianBergmann\\Diff\\Output\\DiffOnlyOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php', + 'SebastianBergmann\\Diff\\Output\\DiffOutputBuilderInterface' => $vendorDir . '/sebastian/diff/src/Output/DiffOutputBuilderInterface.php', + 'SebastianBergmann\\Diff\\Output\\StrictUnifiedDiffOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/StrictUnifiedDiffOutputBuilder.php', + 'SebastianBergmann\\Diff\\Output\\UnifiedDiffOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php', + 'SebastianBergmann\\Diff\\Parser' => $vendorDir . '/sebastian/diff/src/Parser.php', + 'SebastianBergmann\\Diff\\TimeEfficientLongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php', + 'Stringable' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Stringable.php', + 'UnhandledMatchError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php', + 'ValueError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/ValueError.php', +); diff --git a/src/vendor/composer/autoload_files.php b/src/vendor/composer/autoload_files.php new file mode 100644 index 0000000..dc8745d --- /dev/null +++ b/src/vendor/composer/autoload_files.php @@ -0,0 +1,17 @@ + $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php', + '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php', + '6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php', + '8825ede83f2f289127722d4e842cf7e8' => $vendorDir . '/symfony/polyfill-intl-grapheme/bootstrap.php', + 'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php', + 'b6b991a57620e2fb6b2f66f03fe9ddc2' => $vendorDir . '/symfony/string/Resources/functions.php', + 'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php', + '23c18046f52bef3eea034657bafda50f' => $vendorDir . '/symfony/polyfill-php81/bootstrap.php', +); diff --git a/src/vendor/composer/autoload_namespaces.php b/src/vendor/composer/autoload_namespaces.php new file mode 100644 index 0000000..15a2ff3 --- /dev/null +++ b/src/vendor/composer/autoload_namespaces.php @@ -0,0 +1,9 @@ + array($vendorDir . '/symfony/polyfill-php81'), + 'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'), + 'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'), + 'Symfony\\Polyfill\\Intl\\Normalizer\\' => array($vendorDir . '/symfony/polyfill-intl-normalizer'), + 'Symfony\\Polyfill\\Intl\\Grapheme\\' => array($vendorDir . '/symfony/polyfill-intl-grapheme'), + 'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'), + 'Symfony\\Contracts\\Service\\' => array($vendorDir . '/symfony/service-contracts'), + 'Symfony\\Contracts\\EventDispatcher\\' => array($vendorDir . '/symfony/event-dispatcher-contracts'), + 'Symfony\\Component\\String\\' => array($vendorDir . '/symfony/string'), + 'Symfony\\Component\\Stopwatch\\' => array($vendorDir . '/symfony/stopwatch'), + 'Symfony\\Component\\Process\\' => array($vendorDir . '/symfony/process'), + 'Symfony\\Component\\OptionsResolver\\' => array($vendorDir . '/symfony/options-resolver'), + 'Symfony\\Component\\Finder\\' => array($vendorDir . '/symfony/finder'), + 'Symfony\\Component\\Filesystem\\' => array($vendorDir . '/symfony/filesystem'), + 'Symfony\\Component\\EventDispatcher\\' => array($vendorDir . '/symfony/event-dispatcher'), + 'Symfony\\Component\\Console\\' => array($vendorDir . '/symfony/console'), + 'Psr\\Log\\' => array($vendorDir . '/psr/log/src'), + 'Psr\\EventDispatcher\\' => array($vendorDir . '/psr/event-dispatcher/src'), + 'Psr\\Container\\' => array($vendorDir . '/psr/container/src'), + 'PrestaShop\\Module\\SmailyForPrestaShop\\Lib\\' => array($baseDir . '/lib'), + 'PrestaShop\\Module\\SmailyForPrestaShop\\' => array($baseDir . '/src'), + 'PrestaShop\\HeaderStamp\\' => array($vendorDir . '/prestashop/header-stamp/src'), + 'PrestaShop\\CodingStandards\\' => array($vendorDir . '/prestashop/php-dev-tools/src'), + 'PrestaShop\\AutoIndex\\' => array($vendorDir . '/prestashop/autoindex/src'), + 'PhpParser\\' => array($vendorDir . '/nikic/php-parser/lib/PhpParser'), + 'PhpCsFixer\\' => array($vendorDir . '/friendsofphp/php-cs-fixer/src'), + 'Composer\\XdebugHandler\\' => array($vendorDir . '/composer/xdebug-handler/src'), + 'Composer\\Semver\\' => array($vendorDir . '/composer/semver/src'), + 'Composer\\Pcre\\' => array($vendorDir . '/composer/pcre/src'), +); diff --git a/src/vendor/composer/autoload_real.php b/src/vendor/composer/autoload_real.php new file mode 100644 index 0000000..952f8b0 --- /dev/null +++ b/src/vendor/composer/autoload_real.php @@ -0,0 +1,50 @@ +register(false); + + $filesToLoad = \Composer\Autoload\ComposerStaticInite1765f078aa62628913827ce651850ac::$files; + $requireFile = \Closure::bind(static function ($fileIdentifier, $file) { + if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { + $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; + + require $file; + } + }, null, null); + foreach ($filesToLoad as $fileIdentifier => $file) { + $requireFile($fileIdentifier, $file); + } + + return $loader; + } +} diff --git a/src/vendor/composer/autoload_static.php b/src/vendor/composer/autoload_static.php new file mode 100644 index 0000000..fd95cb3 --- /dev/null +++ b/src/vendor/composer/autoload_static.php @@ -0,0 +1,217 @@ + __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php', + '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php', + '6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php', + '8825ede83f2f289127722d4e842cf7e8' => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme/bootstrap.php', + 'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/bootstrap.php', + 'b6b991a57620e2fb6b2f66f03fe9ddc2' => __DIR__ . '/..' . '/symfony/string/Resources/functions.php', + 'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php', + '23c18046f52bef3eea034657bafda50f' => __DIR__ . '/..' . '/symfony/polyfill-php81/bootstrap.php', + ); + + public static $prefixLengthsPsr4 = array ( + 'S' => + array ( + 'Symfony\\Polyfill\\Php81\\' => 23, + 'Symfony\\Polyfill\\Php80\\' => 23, + 'Symfony\\Polyfill\\Mbstring\\' => 26, + 'Symfony\\Polyfill\\Intl\\Normalizer\\' => 33, + 'Symfony\\Polyfill\\Intl\\Grapheme\\' => 31, + 'Symfony\\Polyfill\\Ctype\\' => 23, + 'Symfony\\Contracts\\Service\\' => 26, + 'Symfony\\Contracts\\EventDispatcher\\' => 34, + 'Symfony\\Component\\String\\' => 25, + 'Symfony\\Component\\Stopwatch\\' => 28, + 'Symfony\\Component\\Process\\' => 26, + 'Symfony\\Component\\OptionsResolver\\' => 34, + 'Symfony\\Component\\Finder\\' => 25, + 'Symfony\\Component\\Filesystem\\' => 29, + 'Symfony\\Component\\EventDispatcher\\' => 34, + 'Symfony\\Component\\Console\\' => 26, + ), + 'P' => + array ( + 'Psr\\Log\\' => 8, + 'Psr\\EventDispatcher\\' => 20, + 'Psr\\Container\\' => 14, + 'PrestaShop\\Module\\SmailyForPrestaShop\\Lib\\' => 42, + 'PrestaShop\\Module\\SmailyForPrestaShop\\' => 38, + 'PrestaShop\\HeaderStamp\\' => 23, + 'PrestaShop\\CodingStandards\\' => 27, + 'PrestaShop\\AutoIndex\\' => 21, + 'PhpParser\\' => 10, + 'PhpCsFixer\\' => 11, + ), + 'C' => + array ( + 'Composer\\XdebugHandler\\' => 23, + 'Composer\\Semver\\' => 16, + 'Composer\\Pcre\\' => 14, + ), + ); + + public static $prefixDirsPsr4 = array ( + 'Symfony\\Polyfill\\Php81\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/polyfill-php81', + ), + 'Symfony\\Polyfill\\Php80\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/polyfill-php80', + ), + 'Symfony\\Polyfill\\Mbstring\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring', + ), + 'Symfony\\Polyfill\\Intl\\Normalizer\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer', + ), + 'Symfony\\Polyfill\\Intl\\Grapheme\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme', + ), + 'Symfony\\Polyfill\\Ctype\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/polyfill-ctype', + ), + 'Symfony\\Contracts\\Service\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/service-contracts', + ), + 'Symfony\\Contracts\\EventDispatcher\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/event-dispatcher-contracts', + ), + 'Symfony\\Component\\String\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/string', + ), + 'Symfony\\Component\\Stopwatch\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/stopwatch', + ), + 'Symfony\\Component\\Process\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/process', + ), + 'Symfony\\Component\\OptionsResolver\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/options-resolver', + ), + 'Symfony\\Component\\Finder\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/finder', + ), + 'Symfony\\Component\\Filesystem\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/filesystem', + ), + 'Symfony\\Component\\EventDispatcher\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/event-dispatcher', + ), + 'Symfony\\Component\\Console\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/console', + ), + 'Psr\\Log\\' => + array ( + 0 => __DIR__ . '/..' . '/psr/log/src', + ), + 'Psr\\EventDispatcher\\' => + array ( + 0 => __DIR__ . '/..' . '/psr/event-dispatcher/src', + ), + 'Psr\\Container\\' => + array ( + 0 => __DIR__ . '/..' . '/psr/container/src', + ), + 'PrestaShop\\Module\\SmailyForPrestaShop\\Lib\\' => + array ( + 0 => __DIR__ . '/../..' . '/lib', + ), + 'PrestaShop\\Module\\SmailyForPrestaShop\\' => + array ( + 0 => __DIR__ . '/../..' . '/src', + ), + 'PrestaShop\\HeaderStamp\\' => + array ( + 0 => __DIR__ . '/..' . '/prestashop/header-stamp/src', + ), + 'PrestaShop\\CodingStandards\\' => + array ( + 0 => __DIR__ . '/..' . '/prestashop/php-dev-tools/src', + ), + 'PrestaShop\\AutoIndex\\' => + array ( + 0 => __DIR__ . '/..' . '/prestashop/autoindex/src', + ), + 'PhpParser\\' => + array ( + 0 => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser', + ), + 'PhpCsFixer\\' => + array ( + 0 => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src', + ), + 'Composer\\XdebugHandler\\' => + array ( + 0 => __DIR__ . '/..' . '/composer/xdebug-handler/src', + ), + 'Composer\\Semver\\' => + array ( + 0 => __DIR__ . '/..' . '/composer/semver/src', + ), + 'Composer\\Pcre\\' => + array ( + 0 => __DIR__ . '/..' . '/composer/pcre/src', + ), + ); + + public static $classMap = array ( + 'Attribute' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Attribute.php', + 'CURLStringFile' => __DIR__ . '/..' . '/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php', + 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', + 'Normalizer' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php', + 'PhpToken' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php', + 'ReturnTypeWillChange' => __DIR__ . '/..' . '/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php', + 'SebastianBergmann\\Diff\\Chunk' => __DIR__ . '/..' . '/sebastian/diff/src/Chunk.php', + 'SebastianBergmann\\Diff\\ConfigurationException' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/ConfigurationException.php', + 'SebastianBergmann\\Diff\\Diff' => __DIR__ . '/..' . '/sebastian/diff/src/Diff.php', + 'SebastianBergmann\\Diff\\Differ' => __DIR__ . '/..' . '/sebastian/diff/src/Differ.php', + 'SebastianBergmann\\Diff\\Exception' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/Exception.php', + 'SebastianBergmann\\Diff\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/InvalidArgumentException.php', + 'SebastianBergmann\\Diff\\Line' => __DIR__ . '/..' . '/sebastian/diff/src/Line.php', + 'SebastianBergmann\\Diff\\LongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/LongestCommonSubsequenceCalculator.php', + 'SebastianBergmann\\Diff\\MemoryEfficientLongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php', + 'SebastianBergmann\\Diff\\Output\\AbstractChunkOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php', + 'SebastianBergmann\\Diff\\Output\\DiffOnlyOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php', + 'SebastianBergmann\\Diff\\Output\\DiffOutputBuilderInterface' => __DIR__ . '/..' . '/sebastian/diff/src/Output/DiffOutputBuilderInterface.php', + 'SebastianBergmann\\Diff\\Output\\StrictUnifiedDiffOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/StrictUnifiedDiffOutputBuilder.php', + 'SebastianBergmann\\Diff\\Output\\UnifiedDiffOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php', + 'SebastianBergmann\\Diff\\Parser' => __DIR__ . '/..' . '/sebastian/diff/src/Parser.php', + 'SebastianBergmann\\Diff\\TimeEfficientLongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php', + 'Stringable' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Stringable.php', + 'UnhandledMatchError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php', + 'ValueError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/ValueError.php', + ); + + public static function getInitializer(ClassLoader $loader) + { + return \Closure::bind(function () use ($loader) { + $loader->prefixLengthsPsr4 = ComposerStaticInite1765f078aa62628913827ce651850ac::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInite1765f078aa62628913827ce651850ac::$prefixDirsPsr4; + $loader->classMap = ComposerStaticInite1765f078aa62628913827ce651850ac::$classMap; + + }, null, ClassLoader::class); + } +} diff --git a/src/vendor/composer/platform_check.php b/src/vendor/composer/platform_check.php new file mode 100644 index 0000000..589e9e7 --- /dev/null +++ b/src/vendor/composer/platform_check.php @@ -0,0 +1,26 @@ += 70200)) { + $issues[] = 'Your Composer dependencies require a PHP version ">= 7.2.0". You are running ' . PHP_VERSION . '.'; +} + +if ($issues) { + if (!headers_sent()) { + header('HTTP/1.1 500 Internal Server Error'); + } + if (!ini_get('display_errors')) { + if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') { + fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL); + } elseif (!headers_sent()) { + echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL; + } + } + trigger_error( + 'Composer detected issues in your platform: ' . implode(' ', $issues), + E_USER_ERROR + ); +} From 63f70e90b7873c59451a97adafeb855fdf092df3 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Thu, 25 Apr 2024 14:06:03 +0300 Subject: [PATCH 060/114] Add new assets --- assets/1_module_installation.png | Bin 0 -> 45566 bytes assets/2_account_connection.png | Bin 0 -> 31669 bytes assets/3_customer_sync.png | Bin 0 -> 76893 bytes assets/4_abandoned_cart.png | Bin 0 -> 67887 bytes assets/5_rss_feed.png | Bin 0 -> 44525 bytes assets/APIcredentials.png | Bin 33487 -> 0 bytes assets/AbandonedCart.png | Bin 64340 -> 0 bytes assets/CustomerSync.png | Bin 63622 -> 0 bytes assets/Form1.png | Bin 115304 -> 0 bytes assets/Form2.png | Bin 54192 -> 0 bytes assets/Install1.png | Bin 65406 -> 0 bytes assets/Install2.png | Bin 58395 -> 0 bytes assets/RSS.png | Bin 35715 -> 0 bytes 13 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 assets/1_module_installation.png create mode 100644 assets/2_account_connection.png create mode 100644 assets/3_customer_sync.png create mode 100644 assets/4_abandoned_cart.png create mode 100644 assets/5_rss_feed.png delete mode 100644 assets/APIcredentials.png delete mode 100644 assets/AbandonedCart.png delete mode 100644 assets/CustomerSync.png delete mode 100644 assets/Form1.png delete mode 100644 assets/Form2.png delete mode 100644 assets/Install1.png delete mode 100644 assets/Install2.png delete mode 100644 assets/RSS.png diff --git a/assets/1_module_installation.png b/assets/1_module_installation.png new file mode 100644 index 0000000000000000000000000000000000000000..1fd62ce6e217ab3848e02cb702368531dad127d9 GIT binary patch literal 45566 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 z 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 literal 0 HcmV?d00001 diff --git a/assets/2_account_connection.png b/assets/2_account_connection.png new file mode 100644 index 0000000000000000000000000000000000000000..e79389acfbea64669f04ea99ecd829e106dfdcd3 GIT binary patch literal 31669 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 literal 0 HcmV?d00001 diff --git a/assets/3_customer_sync.png b/assets/3_customer_sync.png new file mode 100644 index 0000000000000000000000000000000000000000..3b76ad63823643b5324b3bfbc796549f91de1113 GIT binary patch literal 76893 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 ymCPu*``Pz`-a&1x|zCn2 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

uE_-L@hclo4>pa36 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 ^2DRn8qkyEh$7wIeFja= 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 Tfilg4vm2KM;wAawumAcF>2q%8 literal 0 HcmV?d00001 diff --git a/assets/5_rss_feed.png b/assets/5_rss_feed.png new file mode 100644 index 0000000000000000000000000000000000000000..e6a14b6e5bcac12208df5b932b59abc8fc9eb4de GIT binary patch literal 44525 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 diff --git a/assets/AbandonedCart.png b/assets/AbandonedCart.png deleted file mode 100644 index 08e2adeaae210af4d3171d3fa4d7f86d992e33a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64340 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 NiG9kn-&;`LqQj2;B zht)xskTpE4tRQTFcn_BiZ+Y|P4fwe}hlQO`L^_K1K>CQz1DQ%jN-F%teW)b}2?;%G zcL9V6s1uZpWJ5l7b}OK`_Jw~Jt2c3*V<%@_9J*d5F4% zGQlqxY^Tb~${CrN4?kH+9@|e@@WO0DMfxze5%msSYScTxQzo58wiFr%{ZRJ_piAl` z_MhxR^!uM0Xv;Frc+Ul!+=`^JH*AG8) z{O2!r^r$9{e}525Dx1rjSfFSDf$29Y?l)R122X&4g9A_pI1T5oja#!VWTd3>S&Ei2 zVyJIE^m^)u)|i`=^s(t3h+}(|yD+wZ)ULqnL4C?QiJm)#84nYs)kCW^_lcY80vy{P zTzmaxfS6%?cN_%#o3?-53vQ3&=K(fcCi>m*7zq7%u`zMv=mif5lfxz@K+6b3pgo5% zxf^vSifK|5q5Z~+8m&GfTYw22dPsXiO-)Th!{sS_2xy#O6#bM0PPys%`S6es3*4Sl zVH-X*po){*@9_#8wq}$H^`bi#z&r&)7N8+;58<|bVFJXQwE<3B*_;0nI&6mm?6Fa9oUoJp{_mtK7kjiE5P;S)gx4 zMMdCG0N?1JKd(eyK$SpVK0-EqcXJaH2S@KCSWzhX?M#4Hw2uO#0L4oDJ^}4V+4Q+B z2SAAY7E@2aOb8&QC77xf6#W`7cvr!$h0w_b_%l5%e#U|qA_Lqnh448bYFPCSPEN9f z#Xzd}_w5RY;f^bt5OBd;usT^=TTwBhR|q_b2@LvNTzgQX1Az|f`gO=W4nXr}e1Dnc?2w5auzJ*8Y=DP<`9cU-~=}ckYGqW>bLThRa5|~#Ds=I`ye=qP^>>Xx>c``pN}s~-dI`rYlohM zj12ToZoq81kDg(}a77Zh7uT|4v&|H**Pw!UBv^Y>?DVj2Sk2{dNNq(nN+nvl7g`#UlC z$HDuFX=rQ={ZLo-Alnl@e{5cp+;@i_wd(8e041NE0(t-`91iO#wg_>8sO-oR})pnNUq86QvSQGb`f4~(gI4B>HI6jR^a1RCmkkZmY{{9lMCvtPmU0hrMQ~~(2vMSiIpmIB$hI(C=JQ84r+d<{z zqXV+M;Z+#(_0dx3X9!MR2Js=BQ32)SAFl{+o4?`J0KXE5sKZU5pbZn^C`T^FQNncr zN*UU)Y^6dFBEjRpasR$29y=Jn|E2mF$TMNFD@RWV#plzVgbNe)XgCiy2nUl17k}?C zSBuW1$G~0323?r{F`FMuYuq`lVp6XGJ1dT5B8ud2?3t+RA|Ls3PTeT3ohZ^+% zriA`)s9@bg8qMtk05vrk@f%4OB#`R_TgAtIb zp*xKM5A*zVQMhoJegP$C#RGEqf12wXPOSA*<>iU+@w+qg;l4<~As~3nY&ihj1t<&A z7XF8%CFujK$Pe-P%akwMjs?{}sR2VNqwN{F@7X%7(vRd$P za&t#G#(nw13DgnXy}${<&Y+G$1kRufI_m

-n)C1gWwl zut16hvVPyg1eAF#l$lNHWv&_iY&xFd~)*k zt59!3x&8qQM3;gF+1cLy<;8u;t0}Urvs-}B?cpq-(guCT!BoO-pt1&$gX#ucNr@@q z6}`)9eoJic3G|E`8yP_@Ux{hJv@`{}5kTU#F`M2w0-l7rF<(?E05>3s5G;Y#!tffH znRRw_yiJ#b@`a3~WPqRF5y+chR91=UKs8W;q2OSg?mrEB`QlTLv3W*^~lS&&?NeH3IE+R>i_7tgXBD+cxDoKb)Xp$sKq9pAkA*H>N zP>G64>vcBQb=~(mu5~}pvF_(N);iX)`s2E0jOuru=lA@6KcDyR6J`A_IM=!am&D$m z2NK~!FN0`++8zfnE}|DPn~aT(!Awzncr5INVD}p)Lm)MGt+K6&`$NN22~(>xOj#?K z0y4*VpO!pt7DKzB=1}&bvN8^w7c3(Oq!|$_)tB*nGJ$|bp5)}*Ty+hlKUF4P5t~@g z8=&-*f6xeE@c?j97cUMLI#it8;b5}}Y3?;Y8pVx33IX){)1Gy}(`sS4c4`tgmAEaP z1J>)!&^ij!$7e@i2eu*D{Z-+cK=SmA)~p#FkU0GcZ8bb4GIM+O;}vpUm~Z zHJx&5>X&fVRYwX$-P3UY0TOqq|>(-6*q}8gCJte!*VV4s=V7#!q|3PM-Xp7bT@N z3z3+*%pwYCIU(5#Ola7V{gNuqHIKRGA$kzI$om}}Ci)ydeq7+(9#%r0!DKwW!zDNU z>J!tiY5J4LkEMUJHH|f_)e4c+TXLKy7)i6fOlsqFX`55qU0gPd#ICjIQp2dwsLgr@ z4I@XqJ5aIqm0jy;4HxVDGoDyTb$>JmaD|p5@f!Dh$lBVds3;X}kA=$TH=l~uv^m9X zDrEu591%bu`T@_*=1huK8FAlYfeYq9(>s`J%^{ca?5v_KYnSs$PA=U_g{HT)XXX1_ z`RK_lOF5WfS+_NA)wRC+(rgnnB?=nv_4vz0Xhi6bi?@Ja+9yGpaS)xpRF%V>UoEcyxVzDIu$M*(|2N9IKzTCN*cUo)@H;N39H=O6h^w%b?YjSk9D^urUIK1`^a&1>CDb2N$hB1bCwV; z26t{5*N*P(q|tcZMf!1+dXNco3tf>Tq9p0}dJl3;OZH}dQ0Pl^ulg3ldGoxASLB%5 z?OyL%mEK>^$i&1XbwR8}YMy1>r-!LM?c45%0dISWrE-$Ke{XyE{C|`=3s2R2{Ma?y zSwJUt|9)0zl2t-oHQ&sZ$gFWxmk%T$p}g)Y|52pk*1zD0Gv>m^FCy~qFvP#Amj4Ep z;oos~=xz(hUelE;qp@h1ZHb*DBcA#2;kYSNj`A@IWr#E>Lknq{ao9ss$OpMUO-!iE zIQwY+Cr`ctZgYK2%;n3{Hk0J6U_Pbh#1-4^nLV9ukJ|1=aa*;@a>{oi2V)-z)P|1d zsmy9j&sexn`0=8y^+YYKL9!uP6K{OS3oyy2Ng$b(m&{_wtk~LHR7}h?rfA>XS2s5= zTf4RlISw*eG`o%ZdEkWPN0iSYu!8d1149&xS_ltG)Cc{<0@%3KOSoxmKMU)3hO`)) zN|U($p>e_4$a2n`PVO&&-6y+{pK>YRB1<|G? zI`rw+Z^rLnG6AD!-Gb1p{m7!=l$jV=r0E>kTiQNGR>vr#YO-n0H=crJ5WSuYioD3HO5}Qeyi9H^WqUdzpb{mv<^{< z9D=`2n2=Fe*mCKE5f`+(V-RbLQj=P|Z=++$Sk;BUo_NA0{NIGGpNn&u2oNpVV(K$Dl0pSG{x&p)N14PeJ$Yc95% zwf%!2?;bc%=>G1yIjmasdh1LXK5|7bYCMTZ0%>sp*4KxIgb+hu6{RdE_xm{$NjT>A_2<7FgI6sN3v!m$UzFkeuKt3@2(WCdSclK1h>~WVs#^@bfF-2A@6p=e! zTignn!GoJ&U}pGHGkazSu=9aTpunV)s&3}T|EDvS9f&hFJ0n<-j>)c7U$#fU6&`_m z?EFn7q1S)ei{J3d?)@LIv~nmi{Pm#Yy(d&tx{?B5G~W59i4?&iLSvpx1-9y%nL^MY zC-a_1CLtVdf328OyWd!$&_>mN`{DESQ7n!Aa?t-{B_;K4u9_MTHdkV&R{Pt3Zn9V0 zzH^7?!)B+rq!dD_v-6hy8_ne2!pl-Ri%fw3M#D^grH>@7=DxK12Jh9!`q5?8&u~=#6_w< zQTm!uq^(_h#%R2tK070dNc%GZ86Zia#%i#>wcmFqCc1IeAVa2;ztXXjax`Sc|FF^h z96q5HjtT4pY0{}3qlXTSr}1Dfq30=39X(=161ei+VnJiI+ruxzIHRw$A)=_Uf|M78 zl`eptN=~lwhk_tY5lIBeILHm7@1);}Ek8`MyYuXk9=;+vGNdFItYRr13m88FG*H3?5O;KxciXFkw(t5ut^$OVH`aq_Q*`7z!@^47= zt?1}Uvu1^zS0tgDcM6pE+=r#yn%!wVP`g?f&3DCU`%ykof^pg0JlUo|K5BxlZa2Lv z_zmO&DryLSN>f}ET+HfQcFkYD2=Py|XWvJ5d*{v_THer8=PYPCK@bF1*xw%zh8AMM zqD6Glr5p!iV|I0XOyqFe^y!o|r7uS^TEBke*ic6iJzkZMZ?9uWokV}3OCQ-BF2BEHK| z)@H_N=*J@4Uk(}g4?BFG<-K&-vd~1mb0#rGPpodp+4m$d&Nh*~pWk=J246|s+yB9- zT9^6%gHg>)Qs>bX+vRNe&mEfyASKk;jN!d*n}6c7QPI<%^F$CD|1RpZZCh8agVzjR z0ycS196tcJpgjVG?xt6;7}LlTYavW8vfT-dSW8O@D`t(Muy4Qn8Hykx0@*=`aTKx$ zy@T^F3Iy8GqvL&ikOgWu`$#^c^D#HiaU}#5!B9?$Bxr=ta91@pB0CHbr3mZ0@AvUT zHmjaWYYe?dkKyT=5)omsY11Xs$-jv9Q3$HXIg#@W!a+|oAam4jwo)!G8T=7(2kA#& zm6qlt-=4ub!!ZUlVHroTm48o@b>ig7A$mQavzyEaKJ5JwLQ#76<9K&Waxl&4#v0xf)QHRIt3vxAr})S%;AKJ&iG)oga0Uuub?1m z%s+dQ&`0rCPMsP#Y}m=ur$1=PxcG`J#PH)zwiEslUPN8$Z4wfBYIOf=kV1-TIM*0) zB1Yu5Vcg=~?JozqCYaTz`fSz0!1qxad}?pqP5-D&tO2fsoCZP|{~c^D%T*E%+I4@0 zM86Vwcres%DEXF+&p^fES6n4prX#F}0V$Og`Up4{jtLk5g|1oDYE%it3?iEA_va{n zhKSftLYW(sb)m4n?0~0?GvFe(*nApuh zW2a9yxn?HO1K?6X(_H}cDNUJ@ETMtfZSUT__dWtMbY)xo_>9ScAV`9NnAg*QzD$z2&c-KF z7njZx1*>zb%?tM+4k%@9sz;kWv1CC(EFO8O0ccwA2lSU?k<$~RIi%54R}bmGbmht& zB)@>j&T!y^g@=X`L=z%PieP3n=-4L|GrX&;An@8wj>^#*yU?A32bkO0O=;N3A;w_552{iAV}We~DX=Lh6wQ^|aNWMFcjfOOw_P{= zDi#5}X26QrWSGSePya(p0KLK^LCGw*;}??(H56CHnmcV{HX=T*3Zf6%iy+hU4#wl}Rmd>%Dy+PZdFSmC@V z`7~3wz`J`sGnNQDin-Fu!onHK%1)rZ#vAnX_UfG*>+`&*h#c9bCP%%4&{Zg`A;%&- zTZ@sS;nosB)~M8h~7pk|m8l>CwvB+1cTtrOU^-(birafE-PH;~e1w&N}dq4+wSfzUcAuzCMzN&(k%H z{z#(Xc}21v3vXhTDO3!~`mTNG(&kf==L>9zNZDG*TZ`N)GE!erN^>NfA1NTI>-)>$ z9Y1@v0>jRfVKGTb-!R=;zaAYd3Rhmli>R0yi=GJBat6wdwM{9QM%o*Oa<9CaV^+a9bKZ6`#CRKZEE=Xo}SF$B~c>yAC zPzhyY5tYL)12Y01E{QzA3ocX72$Gou&%%}GOjOm>RNC}Fl~+s|rgspnPujY5@)Vtz zivo=<6xe((o6&_J!jlS>OGAjTZu)6;C&=w80>ReHcXQW`6Vaqjp9Wi+l9GZHd(IM` z#+!;!^23fW>!94Q*51yL_(|01!|^1)ty(pPk6G%XUb(x{tz_uR|Ki}|2<|WUKjld2 zT^06l{LmQI*3@7ly>Rj3x9{I^gI~gRzkmOPi4$i%+6fSfREe|sIEiJ`rFn{NzPg=z zLSHleX7!RKfhSL59HvmiBBUoe&)B%L!J>QT`{$E5gE*_wX4YW+EKk@HjG#AegKwl$ zZB8gK3Bi;(qa2be8yj_bZ_q(d3wGPLN^^DhCF5k`$B7)sCTK%cj*^yBz^hC1NXDIy z(JlIyDYtZWy(zu*lN{FHHjzR&C@A4OT2d>8WwRWK(tluvGC@B^W3@9@2t!hwnAp}k z>!XrT5Yan%P=WW`QC86OBsUi&nJ_q|F<7<+=whIvJY~mbl>CqjmB5Cd~4H) zi3kT2!BjjQGbg}mU9-D{rl1UJ|ATh7=WBaNt{}DeUxyhbo?-T74SibEnVhT@U#xZf zQ6=d~rpuNU#x#QtvkU!>ZDH}6W*ox!?jN463LjZ!b<}VJ5Z_-ugi0z+nl$31$eXTVSjU>8?(26qbjfPD-T(G+0zH}z$tB2XgQgx(PIF2x!{_)4# zclT9)T-dYo+~!l~6|pVVJ;KaFgzwcQ|0oV!A+J1b+TqWPqk2Q3+GI zfz9sdM4_vA7r=Zm)`H3GTLiYaO%{g||%4(rQswUADb=^Sep&IsmKv>fI$as;AvM>?3( z*Z{LmXx)uf*W?2gm6Zzyr$WsE^h?e8O-=1ldOGIi)7l;{tW?-cbP(@=hX)##i}FFZ zL@EdxQBdribgxLifZ{N3e%;vxorJYGHEa5pon7=c;ku{TfC2vXjQCoyBBVtwZPyb< z=`4*_RaAUzr{=p~h^qhA-Y#r7=M^U-ZDEMRM4xxA7?Jc2pJ)8TR<#mla-hi6#RbLh zLd;E5BIq=~vUKr%5O;J+YsZa6mr&C99J{As4*eJ(53~qbg)j>mB)<5ASHPWnnTK3{ z_-}CLU_kxjDWPlKkELbC@GC<@s!L7rsT>M=Mr1m*G(W0q0b4J5{hAZAE+-V|l&A8I z2gb?HZ-4yQ2>l^q4j>HW5!<(I^JE_i(E4noufMO@&WpyHq}G;=L2D;1#JSN_`RPjs z1b?a(@}e_j8DJD{ZEJJewr%68kR6p^+!SY}EbWlb_u00~=j5!k6Ufta>v-Tv*VZF)xpx&MR?;dW(b-MrJ~O&C81WO<=536FyD%?EM%!Z!BW{2$ zkpQq~gZYPPZnMRGvSmvH{~b;o{Tv1>WlXPLLF-8{<{ERF3p$$~N(e)mhAWNtVIJ2+ zsIt5S)WnC@#x9;e-@>=n> zv)v+Fy_Jx#^4bgNTtfs6!-g$7r8-GjIgW8Z%_lb7+l!;Wq|QZ)$8lYy827!)uyp(F zbDm+nL@HkXOy2AnZu2NwSw0E{`XIf7Y3pv&g0T@`=wgY+#!mZIKJ?4IBgm^s#L{8= zrAfDrPcpYpEqs!ShaWKu(27pPv|&e5l9Q3HqL&K!C3NUAAQG=phYC%%)m7v)KMHUcl7u)(RrPr2flrN% zj&J7+Zh{N~qoYBSojv40QIW9xy~auMN| zfYJ=rn=))*kaTKU?in&=&H+qg}bTpR}@2x_i1U zD%Un6R6uF~v*6e!DezIBgl?Fkpl~4RHs1Kqu61f*p$n~b&T`J_9W+t2vj67TM@I4D zo&)13Lb^~(xAi%aaY|+56QDr$B|a&V%wjto@^WC0O--Mp2Sj`aS8lGZc6l~-YO8^F%#|kksFRvl zba3#vS9TqV4{cOAoRC{GQ_A`~k|k?1GO%-!M#^0vbKD`NV5WC%LV*qBB=2lHp2=SZ zWE`KgOy-EO!cdrng$?iDTjtd;_-^Iu)g9DZtEZgYvzLKAnTP2pUQQj8BG2(hsJH+} zlK(*$Ypj@=v4`>mrP-c8>u23r8;hXPf7HaCexEugvEv>xkjJlp@}#mdt&i2Ga8}Fw zi_YMOd1HQ^F`t-`87XI0#=Okiw6is=x69nQ{E1w;om$(MFKAi*c@X4fTBZ7q3A(i5 zb6Cr{w-u$Y5J^9KMu^Ti8tnYg8JTRA8jnKyuVErz+!!1bkx|=r%|fRZ_)c=*pOD?7EjjU?{8YAD^WvDMig5h+r}oDo_s zS0)A;jT|*%y=_;qKmj^c5lRBjQcOgMo zzI>)rRl1kUQyW#@WR3Vuvd7aoNMyHl$xakc@z3&-&{fcJkvk}Koie^B_qh;sby{uf zsg@K~MjGU0hE#9ZWTs->7BqMOLi$@d}9PBYwJ z@>y9KVOSZbH@23%lU{SFP-BteXg{{Loc<>>ED0MD_S(nY+8N7ZigHd5J7;pau)aqH zbQ$)=H&yWC_%3S}UXEfrwQFXpi35AC<)7bx8pU7bDzC!Y z8Sz^}!X4DYSf{BPU#{hT*M9$9dy&k}(ZbSgu|2luO<BYDclbgZp%NNWzm!dtm5j8--@YqKwcQa{P?u^2-upWaSMz@VB#f+=L+f+=v;`R?KkXK%PY_|&77@%zS zY!Tmw%`Gi4*RE+p^Z)V32@^%~)Lgw}16f*=Co`sli_p>0;r7915#vM5Qq=6Rj;;-( z(kL;gllU(TXTjg3I%mnw6dgsygOW=vEF9vCfBNaC?+YId4x&%d8OfbZGWR0;g7c92 zjJ@#TH(wXD8UWOsjMgvi>Yc+5&Gx{r?`%u$X0qd3gxu3Jj+)|{nwr8uSkuYeM3kgv zF~Up+fZHBPDVbA&lU~Wp>LxYnqT*yU(NsLSY0WE#>Y>4=O02A}FK)Zs(5CKGQ{E6_ z_34jy+uA3cn4c*=-ba1RDt{N(x<_+mchtbM(BP-+`gQ|(H;S@qX@n@Of}F^>ka3e0 z6^)`zZ>(S#>U9dqu-sN^HE7q&w#(%X=@k#jc0ck|C=}KUq9p@eeY%eVGA#%S$RD@ z#0?R-zxe+7&EJ2o6G>HFXzCla`qHs%^KZ%h!Ug0`q_aiORG1pcJAg@uY``r=iQDJh;PryhpQ@$~GX z(f6HM+tuHz4Y2R5>Ey-|$Kc7odbgGQk@&u0^weL2Q$v!Se{Na6qq)j6yGIgs+G$Kv zd-qq1^z0)BbB8Wp{yD(=*tofmgBJfev+P|_4D~pEx{;9}|CX1N9XBdtwt)@euBb^1?ssHZVA#y8J-siS-)s6u;H5M2%F3P|CypOSk0Eqo zNm`(yZOR26d!tYoegGMPQYs(-(>8$sYUZqnJAJ*eF+BeMKeYfiRQ9DkP1G9eV_;~A zqxyK%=ELU&&Y05!g|PPcUmn~=llp|cD6Z3a5R|@WE#N9*}gNtYLAxI^0r2f-wx z9zghg#GYI78X7$+$t_z}-?S+JZdf^mZoUW-lC+Y7nL2!~rY2-quW6DwEiKUN?peCc zX6x22BCVMEYpoXc50@P00r`-dtgNPwrsRP05r#W>JdSX3sLotG7E9?z8|9H=+qTV| zd9@=29-b*+EvYLj-oM|O*(|7!D*UzI2@XMs;=}S`YJp24AOGmG`u2HkcC2|4^deFp zjKVPF0+w*o&DB*>F#nA{k^#Tjf?7ZaLdEA8Z4!qhhzc>F0=`LU?<09C3hDKCCP}~+ z^B9Eb=WO5Fa#k1y;a3Iph2BloRSA>T)!Tu6fVzs4cg%>$AES6%ACL#d-?C9(RGym2Xu2wD zXcT8>AIY%f4O*Zmh5DuKR);$oQt%-Y+Zzp4bpPsZ%Jlv7q|&G|Ibl;+rzpF3br7R9 z>`IN&Ek9TKUPztshO3;e>$jMEjSCk*MKp$iDFjJ^stJjGpFcZCDUThy``bqi6b30N zZwhuGMn{P!IRwhJwA5G>m(`Z7Tm1q8r~z-^*82KY$uq}MMaUyQ#9$ymy259R-=IOvoxNO^&LKNEUv~U)5RzG*E!r7|_j~Ua5=4IJL zGqefx7-Gk-xGdf?yP~l%KN-;`*?gPSIFdsoEmcQS*T9o`KYOR2_S}g2spX8vy*pQI zU-htw_f53=ESFGNcq27L`)=a{jzV59PjU~a?R37C7ZwVJP{C7Hy~zO?QgQJ-QPkr? z(^cs^MpO=FVn<&>SFG1!)sHEfFUqz;NG7=5V4oe#{~JG~|FQ*=dH`D2%wo)9CisZ< z`Dw2ATp2$@7of(>eTRBt2dW*_yZX98283=In<94OmjRb%?ez5ztxz?&lBZ1>4vd*) zcXj?nQuxODATqJCvYJ9BEh+=t0q@-Ami7wEedKcIl<-!Fv=!=`$ckNIQIpa`IPQir z0=Fy4Kr!C2PIcr$g`vyj)IZG=;7TUz-A3#^e0VV27KR>)A?EUd=r0RZb33IQ)t8){ ze~}%{Earqp65~C3glJ2oiW>7-A%*g2R>}X9?5viSTr%~GTNXPkncyl*+Gm#J2gQ$;~E9qjcHNtS)Oozi6 zmJ*8>?@Md?cIoG3Q3hfilEOtzmy$@UIlres6~Ta1^_MA;G>)hsNSI3oI+I>lDCoyx zQ%O3R*gb0vC__dM*uAr<9q$mdIbtv$Ny<>zmAQAZ3bHeWRv?Gn;p+NjY+cpRiHpcL zvqpr_aw{pR*fv32sDznbix=XeD9rpls%LZ9w0c+I5Sbk;Gk>Y-i@OvyQRlt(bD= zw=E~DwQgIm(I;Z8LI}l7uKvK6P{r@LBi6&t22J3I+M3FusLvF1zJY|F&Uh=FvM_1tM6) z{gu{pAh${ebX_)4Jg~G!uyH^CrM`BOsBB-_Bx2Q0W?5m2+4(d{_=fu_WSmd${M)=& zv1!2n$dy06)BKy(zO2r(@xpiRjt~=SurY3%XB6$}ndMNisUK1w54}0tZrW-t>DfO! zlh6Ls)&D;)X5Vz@mxcFJTUirO9U-&u)Xjy@RO>wphpu|Eu)de*@%V!Sp8q1bV)kI& z>vyi-Zn*xvIr7sdhoUvjW+rUB~#1>Kag zne(QtAvVfWWk!CE$C;d*8H)!L_UKi({^=oqhYN^^97y{jTo+%{#iIIE49}-Y#+xC` zmfyNHrF>&j1X^*xu14j-p~l<6(n@5R2tlXm7_eh~^-{YB(%Au$lc!9{$;-P3(e!4c zD}4QaJtw!uuB@XeYP>9n+cMp!bL%W-hRE*j??i`$jiCysSqCENRFncxXs%K7098 zfkuyzni70FuZq3pGAq zfyz|KV517axt~&)owvq3`jdPsEQ8ILjx{1p4PU^+$N8W*Kx;z2dh;~mEKpb7t}9}! z5SipY$L3!oz%pEQ^RwHVD$hno&x)t0h6)>vUw z_PRBbPY^#?wqdPJ=i!CY8@};$pp6x!4ukxntSMX{XROfD+8Sk|xIx1``N6Y|&;9%_ z50Y13qwwtI%Q_B_PoKO3CM3J*t{kp_vN|Zs;0L3u0v25wD%$6^=iF4=g-?I;%dt~q zkV9E+?jSi5Y@4T%QY`3g(GJ};YErsx>NePeC#otu(eXVQ=7+rP?d)V^WW)vxuv1*ox(Rs8BdTG3m40azbSFhlm+2gurTj}I9vQICV%_^?#l**uxyk-_*OYm%ISpu)91gkUy$ z6cAYWhh=x!mLAZwJ~azWHCVggv?Ve3Og`mygN~k2E{dmA5{S@F=c<4BG5Kt0v5xLYi@je791URWX zBy%8NK%vohpE9-xwzcKn5F3n<*tJVbPqcAT`HhVWR;~<%{}Js&_IK>d*i{LKlV3yV z;?EBX2@&S41!bkLoBq0_1biC>XhUu7c4juXyOXI2JG9C$Z}HY3*mE@GIT2qioaWhY zkwD$LwViT^bePD3V_TMvAA)}KnnmgvHnKTe!SU?ua-KXP(3{Tnu%F+A;br!T1m7En zsi8e@p*V4Obb)V#rKK=IR?H8tav6VmmYWjsDVzsrfw3(jNJg6nP4YK-0fk5u1eJud z{btc7D@MrclLtu=HDJaXx+_cE_v=jThvxq{51UEEx#z~PI!jmA== zk4RW9;OqDY&KK6*zI%C;$JUC9FRiWDuU>UE8qao#r;(%>dHDzHrZZ%a7KV-Inaxd# zdXj0OBc4UI$QUK(InpK5T!HsSk&{R7#zzI^?fF`DFaJU11oNFsUfwj``_w)5Dr zBe3Dh*|YaI8m+kYf@jIBTAWwp#b_f30K0hTx$DDJBm4P~TFAWE4bAO6JZ1%C&IrqO zf3)D9t%j?y`7axiqJSg;Nwuniv#i?1MXuW>tU_P85|a)dX{)S1Nq}M3U{)NnEP@6y z6T@uv>IJ34;#W*zFXN3S0F2!l+oSj<;mBdd^VSK7@!PkwyGPU3eZbP8tv&js+}Z@E zPZl-H3`HkN4S+zE8gS?@r+Yff&CFnNH`7@{IY7r=wL&W+uH_-3Fre(rqA6~Hy7K`o z(8ICQXIO@^DV>-Pf7%|&NI2$irxg~)6IRZ6l#o$leFR!$!v<25Q@*uWv5?62TpJOy8)1~onTE<;Aos91wxa?5j)hkzs_`o&7X(A)uuX{+q?p$jZ4jmJd zWBQfU55;!dIind?S@wHDQPG@pCQXav$WajY)nB_lLt+qJzhC>WM1aq~2&0%^%A6Uq zn9&!vp^IsnKVD~aa0b%=X%5lzQ*)7ZZ5WBkb=M0n@pj)3<68F!=VHAV;4c_*iS^`NZ{VePv`BACj8##QntZU@79G1L7{*Cxwk>+ zZix;`!*g>KhF0ESZhfi`4bu6h_QjA}m*;hwq$|d0&o`nvFd-T*_tCoPj@g9woX&W) z`e|h;3_3gfhwU8@cmP1-h8;OHK+enYU5HK2OI2r)W93!EO&ve(BZ*;wqtac^QZ3BM zN|RCc=_{Yse*xgLhQzS4V(v}lAH6@1K(E4%UUhuvkRfOm@6Fu1VE?|fjor^|6QBt* zv2LPXg!HWu)*bqeXj9wxVrs2$@qzv#o%8R15iyqf?0f!={c=Sqme2OPSmdj<$wz(8 zX;4@gw964bhWvT-NT_&dA1RVrTZhC1@LE>3lvu|{n@&zvfneUG78bzxb>1P;uw-P8 z&O9=!y!}%{gODw-mSFAudV3O;$NEq#n<%Dld^GTmjgPMdp7wwMiT!$bK5%wwGpJG4x-`zl3NGOM7^c|)YYzVwYK)52h|`Uc zU6BQfC+1_HqAvh+LDO&N`+&+pLR_4o1{V?%$h{(|C)_*+CU^ZW>ok43r!_ z+HdZ$k$!z86bx-g%Wp|GZn*J^v#VFHUg@UrmY|X32kn`?yWfPR(Nc*Y+)tG6xV^pP z%D9SIy1R4`ik7oWIut_-LKbq?i1(T;p3NG%9{JBT#M@MCr*LOIK!N>Aa_`A=-nHxC z!-JBeFLn<(?QwE#Z00o$RaJw?0w4)}yIHQ4fqFkJ9)Dr!q=Fmm$&bqRTDiaSyVMVU zhT8)>f6WXLgKtln(D9p}xdx%lxBEAZm5n`PbaCnF+u1g9!9nhaBAG8Hx?itq$40T4 z^55OgR+)`Gbw;#raMzKL;c`B#oTmJqrBUs%6BXRDXw%5&Gejzaf3E$$?mU?Umb=cH zC{i-Af14|jg6O_(e4tU&-Vu66lTTEI_wT!JJuo1fM_zyS(Bz#g0^Z@~MK)FOCcL`t zT3Tl?le19@LY(1!V-+-~kMygVs6tk&uW!Faee#u&Vxl|${Mj;Yg~5{WFC>Zj+ z&4@jNT2g)ZT{3f5C`0Y_*!~l4-KuJne|C9e@{`3k$I6bE^I^B7>inVYuNuC{cku{0 z0b0B;Ph7-##gIq8zJIi0l!4?@nscK~=jW($ z*dNsUbHk|eqYu8$UTZLB()fd2t9l-GpRn8mse2ATtfXBb%Y}vl1m@$%g%_7LmxRZz zy1l{w%knzS!1)*3`<^Pcd(_b&b7d8e2N;JBI(LFADuTcB( z`x$n&pcy!%67=$;xqVzleRWs5s2qi2Vo6rHoxai#ooT#ciT9wc zD;<7zTDjqNC&i_A&KA{?n&Ej?Do#tbs)ZHUFfcl!AIceq7A2YcOCqh5gD8b%{5zVc4A;xgUl-rgLtG9`7^&6U*J2fba&U=!i=;_|O zWlqveteHzQu`hW;rpDmU6#?dTY*6jD`s!VVyCg9n*Sh>x_YgE8>@|b+`tIvBbEfQ9 z>|&@Cg5wrmk109OroC%(#Q8;)4b;HL`B2kyT9w5nTryjEg_EVpFZ~+nOF&v#8Ewy7@0kM;3lz zP^V8x6}C5icHa7GM^8e&tmBE_R6Xr7p|^L-pY!)Zx&#`m=+R{>3@A~&7EkDY2G9n;M z2<@UQLHTGpIpfH7@us#Mt4*6&WmJ_Uh65vhLox^Qr=%nv;3uOKPjV)E_R}|S{8E#D zd03AQ3xZ>WpP^>>J;qHq8?x!aLQ`>rCJ3RLNJtkf=m49ci$y`zJp7!xsrcG+v>2J? zSER;_q1NJ#H!E{i2oXH~qX8lqdzR+bx>@ygZwakqK|#QmY{6#N&Ff8s${S!G)q0h~ zf&xyQL3rb z?+>LTh;z7XPC{&f3X9JeUridaP+{1S=H<%RKL>A~Z5&yE@e(A8pD+=F_0FQel9Amy zQ>I+Kckc)NmfpGPnwqQru0f_WUzZL}b97rW^U>?Ew$C=oy9W={W7rlf+xcUrleZO| zpM%ztVVz^gig?%OZta*RN73n<$h-}}Oc^OD5-fInu9?S}A2h1w(|und2{u^cCp$!a zZt{VJQuVje%Asc5YK9&R717yJb>KpaOIF@!mk%#*ay#Jq2PcaEnE$KuA3<#`N5AOK zmf1cGAActv2hnp7BD4U30j|aMj!)X1tj>$CX^qAEM(hOjK~;O2%S7i_>gEwewqNNl z*hEPvCkNTwOoh|s;NI?*fg-5}oMqH%;=P?j49^wT6RU9#KBZ&Lv4|tU$~59ZuOq}6Z;07NVB?E{`23T-)*;LVo9Uh zi2Jb%Q_Z8LpM7uH@kuPPV-0R}z8w2;>!iK+4frKT$ST9-cZl2eC?d`3K+hxL_!#`Z zdPhS<`u09=VzTvPmr}pmy?@rN_4aJ4SbVJD(im@3=I<>&*7NM{uQ^-Z_*3V|q`TuB z9Hb;2Q?r#%1w%zbFtxO`b=Svx!DBmY-AbsY=(#xyPHKG*%Y39ga9^5Z=eq)$kpcT} ztgns=jkoseO37Wgu)Dnc$NO5fPVZ4=9Toa&VQVZb+`iY$Ypxi(FU|a>d-IbVV;>W5 z@9wlNi%B)klTX~S{rdjqmv5qS39C{XTk>Dekr$lN_T__zj+*spQ%{iYbfT$}URzDeKGXjq{eB2h9qJ0| z_YNF*-gqw&hqSTzun6z(^K4eUDj@>VO|V0uo1vJ-Qt(ICn(u_t{sUc6(<IzNqoT2j*l|ukh)S?VOKj`7%4Qh}mWuoj0QHd~YupXBat2N#{rN z)YafUv_P$%KUR8Mq!w9YLd?2S6f;$Pj;GT(O^X_E`BwzcfE`fvT^2uX@a@%Fax zju`dkV}|aJ0xMD%uK12wxnNQGMqB1RW_x;cbbSA&(|OrD@%XB1RnAG`84DIJc&JPI z_WlF=nSOBjolW?nQBpETC96KWpOKaA8=01E9fONGMM4LJG>8=M2M_GkRE@)Q);xc) zeO>o*g-GQoTBWuL{@&q&n_lGT&=A?9F*j9@pE|6f^7P2G^UE$ht$g@SH!}?w5{1FE zIUZDkAoIM@^IP$TDmkRSwYb*m^ja#vI-@Y*(ACz?>0wl;8Scy-A z54d6qp-ZBJ22FUz5O`h3iruD@yKq2^BxC~e@5FopHv_3s2kiedB%~eNf%+6{#@jT2 z016SF%yc87K$x|5?wlO34IoR^@wxfUO45T4EMNO0D9uJpLZUnOz#zSIvBs0N-Pd(n ztle>F+?hYpSL{!;0X=s*o%H~dgpXX?v3 zh5Wn01A3%CA?nk$r5zem1MJHT>hdE;&3rl||7`cJ*I%iBXmHa@cjwqA;(E72JctZV z@0?&2pwSbiwd_k%oIDxEIDio2Ur2*UEI|m1s$j(A6RXV31Ss*%UALi!nEjvy-bCgY z^pX6JTtWiDi9e?gT?{IPe1{YWa@O{!uN^;Ry@EBzwV_~35iM^F*Ya@}c-T|`ARICwLh={pSWu0B8cn0)X2c4^V+6$v|kJ25|F zRND@%wd+idnJYlhm+jJ7WcB%YAIe(E_n+RMe`dq8nIl>mHiS&K`WM&AwYzsQr^c%+ zBlceBXNkLRca5)of8^(#(%nmsXzrZw;H!o2CH1nGUtMw2J&w|$qT;@4)4F+1gTohxn@ku=X+UsYN5IL+T9*L#|o@0r2K+1`CWbHD6(F#^*IRlk0<{3)eN15f@7|?%oaLp_DwDZ4*LobDqVJ!7`86*h zd&y%GV3U)tUcG*6m>fD%EiLWAdSqRMHhL2dDmCC@YHYrJ;y54sGP`!=X^@g~K1~it zDfCYOW$uWc)IKcpe8z%BGPA4`OC}77)3+tT&pwe+K^1OJN#EMpm;;pxCersv#Y>1GUvPx^(ggMV&v{u4x{N<52D=2!V z^ua&hebr;Uv|H`z4+qNx#f?qnk!KK>qM~v^S>po_4u(h7cfa@CwZUw$+e|&9*q3A+YHgYPI6t#(w%)@B zNBeGg`?W!6mk9*0&N;oU+VBtF4ZU{{zO@8hGIk0bsb};0OFjEsX)%{laUje^2{eYQV-v zIV+Ru@<|!H_2LDfde*Wip9A}WL*Cfh8HjG%?#kGV0FP^bA7aCAdo%@oZf;)r*Sa)Z zOSjO_!Hgh-23dIfcK`AlS>&0(tlnk7jzZ8%Q&Z>|{6=agrvTCz$kS@_n-!%X{{(6R z9PMu@3r;k5Q$I!qT3{fGlAJ1?!FDn8wpQrcl?>12chpb-R8%c4)hkZ*A zrTe8FJbd_d(w5#2_X7+QCx<9o%Pef?TzjK~?jy-{3L^i^~E&nDz(#Z}lBcdyquN_*mxH~_scgLWe`i@3T$;Y2JUla0(M0PtFq>Z|rw)hd`PhDN` z$&+ODYleTSu8t@7=bTA9`LVhP&~Qh$PuDt?$^_UG^9KzWAh ziNGA+FXYwIyGfDs#nVEJz-XGo2J$`jKpzy=eY|7En;i;R?*yoP4J+>y5PFyZ`ruL0 z(rCiKH3j{vwAiDqF0N)}uQY%AeCFPpzaykehttngOGN!W2O`y^>BIkGPqVHwX-27- zLQ7Xq3JPN^HVD5UKR;~N*yRtzdVYAt@P0q0jtr6XbiTOa+};sAEB5}hf&ZzA_}|#8 zwFTiUcpnq{$!(It3yzPCYTcQszC({>;M8A3s4pU}uE|BQ0+9^#-KCU~zZ|||)22H9 zarCTR?SC;f=+KPcM*5|G-$HPUy3m5`wzvdm1V+sEcFx2`btFgTjg14@_SB8#15pcm zWL>^^aU=F4#sIG!GJ;8d=h1l13sUgwnmW?&K$aEjKG1t510Jxk3>l(Q_H%Og!CKsp zBmExb=Q|vAAjrcKM$FY!)eG+@5mu=<&;qo#IQuV+K5lf_ad_^`KS8@NXpp@^}LxX8z%y+v~;=1s(IO$r1Kkd0+x%;k-PB6kW#`93Oe){{fp&>?->k?K{da_3)vVEdMK4}d)u&B!noR%ScCZyAS$U(%Zi{OuSV#*1&6DJ`Lrj1=LojPMyPGQw zmtzn!qeY%nHzO1(vfT#WN~gyAK}H^zPmwRF2TDbPINwF2%G+jl@o~Z^_=&>s*aPT- z%}h1Igfo zxkf`BQWq@Xd!86z!K(_>ISzZh^8{!p&9^`fbI3naJ zdJo=?YnmrhcH3#3mX^$=faoGy-;plYNBGLH#S@Y4)Wxv$r3@(|Us9^~%uHZeR4K4I zC+2U2tv4{}lSk3n0MI!f-RmTbVoN+}xVVZ)f$+pllm z8^s?8F~{l67t$<%C^RaR!9}*y%x{|zyID{$_?KViL>8QW7-Ie$Neq(|oug$ehsc>) zSVV+{l{|e~0r#yEiU8vAoNYQsl!qOaS+YT*w!q`qs%zkogm??_MYIdJqmip1GwC6( zQ0DNF5R8D44?A)(F>&VDu{`26n9u3tahh37IK4$g&PpvT70dAE!YDZ($PIj5@Rqz6 z1VoZ1j$#$|>qrLa6-5nSF}|@!^S{I@k-&@02O&O&AN3<-dkDP2K~buO$=XOIkX@pl z(O)ceBtv|O)acP~UcFKra)_50Q!vNy{Pc4z+df0xQE|U~xm-SwAURg=nY49eCPgMB z6j6pB*CF=PZP2HG3Od5M1TWI^up%HH2*`f>8P&BNQ*7s7oIn0go;`+q9xl+Ht?DWG zA@~W*z(Nl-b!x7a3Zjm*v^4&(bMt&zDPVf~z{*M|NIUjBCL_`k6Rzp3Jbnmnj zZ9trlD($6}ipJ^SrP0aw+v(RHS2u%7GX*^2_;Hx8f74hD30${v`uX#p+`EgAb0D^Fm|&f-OjFtYq0ya+ig z(6^Gsy`z#$Zu?KNnhP{aNKRzL>o5#BCzWPq5>2^@;sFI1>T+phb(Gnn8+^~hPdi7S z-teE*F0|F@=YBCilOa9uz%q&q7}^bDwI!`%QQ1tNPB%7v!=t0}w+#sbn4Rpe)?Ej+=+Lr0$%od{wd9vB!$ zdZ+Vhb&H9IR7e>^i-#AK1uUe3txB-{^7q>yyRh%jIh@@f{v&2zDr7H0v%E|Za$yWg zxB?rdY~@)X8OBgH6m@whzfT=`t5JCAbp+tcV zk;-N}cWQzKREzkoQ8Lg(4Fs2>qB2BIN>)}W(CGBgiKfe!PgGE-@|*=#`7JqWVc3C} zU$f?6S*$2N&gpnr^B>0nhT{EtX~jrlVEVzcOvI|5Kkk5-75Dn719b>7D9%Y522+Lw zxg8ul4Q=F#DUS}_w$rJaS|dXpFnhMh+N&A)De680G#2XdIdJ>0RVOhotsf>4=NoyI zOAu`_3J}4Bm?3}r`VO&tyJnG7dgnqw@YC>F|9R>Z!Yz(~X4^YBlr>xwl*H_#aHy+= zjsE2q6spmM^?iQYqpy8;%H$+dapgmjyy^c*Mv}Qc@o09u^n$d5QlAt<<~IKRuKe7Q zAEj~8O@4)8`$O!IQf)%y!PzPS<)hH zZxCNhAOvcn*<;@|G@#AG`Aa@-rrR$cwj=t?^eAPcUUcclS+hIsn@qU(5u~i2R9d)5r#( zto-z;th{`Tw6xLDH*2Ei-CveKCJ$%mt_v_!ZEcAqAJK4A>GTL%cDaaIxH!J8_$uza zl;4V(#y+unbwB#;3uoR*&bhrayzxR(@}jD#{!}59F>Fx^LDA>V?Fq?0`Ye;+jq7Q( z^3#`K-&ekeZ$CY1MYJi=ggDYD-6-J+QOEu9<0ht87;46xj2+_C-WkTi*BDq8>#C_e zZd@cw{N~N$T8l z7NJE-_O%j{wD6TQm`aKyWoHtlLP{kf5otn5l8`i16DloA64OK>WwfY7A+40w|MO#h zzjNc^1p$92q73yge%VHYEJQ4m}}3AP~VC%Bcdkaqh9-xpTr6 z!}nIZ&rk3%ikv-X4ha&JE8Q} z-5y=1oY3Fv_CSwJMtk@D`{Ts6UG48@0ap#_f5=8{u{dLCN-1Vrz-V4LZ+wm`LD%o^ zXeT2s*7gTWA~=MN<2GG&Tn>G6r=#Oyu=@UN;GNFRADv;hvAnSGn#B}&zfb!?cf~wD z_2_4tjn8IRor>h+OL0Y{Ia^!1CN;^#i%Na;bh6EDYSqqBn4!qLy-Sc*EZU_l2^B|# z(87c_N&1tA4Vuy9qBhRwiA=b**YTf}l}D08u#vqu!6$DET+ftJTQUL@-q0juE9+S!Q(I^K6f}#%{Mon<5JB{cFa{6|R?1A`SWJ z3cHV&YBZ10-saY?aoHD!%>fQEc%-`RUE$)=%$|Spuw%LU0J6}a!&daip|MZ7jo1WV zPyiwn2n*=m#tYCmzl<4|8bbryW}C_FM0^k4(Px%$$`YnTARkFd_RJkrg>LOsjClz$ z6~X^vNnY`M=@^O5BKmNM6qc*l4}L-c5M1=0Zer-rp+^^lE^Mb>=WVHSJVdsSvZ5lM zGJ^zrU@i(=2Oa^G9I)P5PNvzaFgI;FCd)e}Xh?8gynP!X6J}?8x{xcOqps5+ToOiP z)2iva_w1>3v|Awl)BHkU4hI>Z#)B8w>y-9+JTS3;h5d-37VSFpjVB*Tj$FliT)ld7 z@YA!zAZ>_0+NWw6ZjkY#`l-JE&%FkNfFYG91JbAUtxGdD_CH}Xc9nW^0~6QPtMI{* zUqH&_B)S$ARaGj4_An{DSC8j~9DWGv7^govGt4D$byGa?IzRsu-b#I#?O z_~q*S_gpn7B}Wo?KxBEf6A-EwdCESv0k^(~6 zIV6hE4yX4v8mIYvUHT3w$m-<%l2iOsCktmZDLGkC?T(hl4vgNOL6Ymy*>DKEmcX3m zmKGpr-Y54ChhAIA`&myDZ}BrYIT|;3^AChzpad2j)!vN9G!qzY4l^{45?4N8rHyNH zUEBkXCUDKlp4-~3h9S!hZ`*3p8FfyN!5kIzctS9~bG(pua}T+w)RVYbTdPo=ak@`7J-vx)A>n6`90E6BpYbklWRIm_ZA2z8%EQFB$u?@;d&SmGdm@$D<3JL$ zAY7Io?AK!r8vH;q?mvNj$lZ8-0z&-1YvBIn1ZF5rhH}m4Y)2zdiv+M4DUx z>+9@SVH1pilw8?b{Sj?yC9O*?iNF8eu5f9z%qsB+cEqfIE4)IsiB6dYJ6t{4Gt(h@ zc}eT%kDiSzeMy&|n^>FVB003(aO=Qct6{fO50Mbqq$@>2TY7Nwraf7Qc+PeHE{eE_ zts<=o?Oo^b?qFJV4_r;55X1v4woQDp87u>AknXFpNzsn-!h7ZbPkiG5b`4qy*ht*l zFn>b^RQwwtBi3t{DICxK6L)?B*Oy1X;!GeN@vtaDc!aLv#=wXs7_$b^iZSp@i;M9v z1|C1&G4QVsNb$;ZB+wQ=1NgaPy<`9W&Y913XP(q+{i>E*mCIgT&%Fi66vVo`+yI>r zcKdt7{wb~+Bupy8wi|XLP%CmM6cZ5S17?i zPv_RkYT_G|*$@x>E9Q?szHr4z_@&8&*%ps;?5H$Ptl%aD5A3;k`gBVODsX%ec*_|o z2dVQo+R6!ffI4Uv;KfFfGp0-tG9Q6*`4;aaYUwSTWM>>w6Z0g6p03h)Q*dZ#2XPmH zEzZ*@c6_SXXEc@^==}5M%};o`!d6jUs(&opIcd+2rp>-)pftWCjyxHUc#k;IbL14u zmm6O*c~!VE;Nvx*9p`=S?(L|(am~bV(qDS$@oe!3K^x7>mbK6gd3;Sv2s{JW22sRz zE_~kJ+t;suD0?|BG-<*}bu40j~I~-D+1vSk}{wuw_Yx5 z4BtY8#FXsw=i|Bl2GJcI9sCMx)_h zOoM}8Bsq+%JOWS4^!^EcCced5wT_$s)+=jM_Rv@{M1SXgL-;y%>UJO+@Q^VN_7guR z1YAVDBs9z1%nZsomXQj$xuR~vp93cZhms^2RUC9@1NvOLbkarD7F0p-Bo>dr+=YK? zsliv*otQz0!e^EYA2~9GYzKIiJeO&pSVFWLj7A_(WL*eIo2VT`10h`1!ytrD&rK%r z`gI)4KtAcfck|M;(e->6+{|QLWszxW96s2}NPg7hox+XcO!rojcoh zMO!E;E2m@N%F-*y%U}Bb{vU+eU&M;saLf;kmyl#~!~%#5u^syl7>;?9<}pX@N4;0; zyi{K#Q-Uc@X66DmEkj0XVeYXorm&l6xwU_8@;8rm*tU%h!3{G%|3K+6ayB#F>NXK_ zjR+Hnchzkh)HlRj3W+x|BF@w4F4PYr_Xqn{jIp~>0$PQ*-z+7OqxpVjNZkhL~T8mL#aaIq4)x>)A-km$6eFfz$ zcLFM!%7f^;xceR7-kYwb#%y$I%_EFSaq_;WTA_K?X$Q6fMI(-H297qofT}u=2vLeq zR#p}b8Gb5V0F;92?EQZ3I>CAeh8B4?tXe0`ovR=~{W2n;PP~I|$Hqpz?CJU3Oi&;C zG4ja~$xwe#gbNqq`nmf3jftUs?0={+qp#E-2qu?Y!?ql!VVtWa4nL$^HM;5gNtkeRkuFO8M=FeU zI*&M{x5s7s);=ya4wLiyi&}(vthJdL+Z&^u+PcFKUQwsXjsG3{wDf83E<1nyAi3(d z{i}h$O)xZPpU8BOwCU;4km%(1n#XvrPSt;%5%NCqzF`{j`V<|dbmSe5jR^^|s(0AX z>$bAw5s&Z)oLV{bz2@yp`JS_%&Jf5IDd3BRNv?m>lQpC@BTbhN3 zq|=9Cl`}8bZRBKkl4DmA`vedrE89#GE=~CI3zzm^7`rxRaiymF;wf1?|Csugy?7y- zwnd0dV*B-8Okwa5mV8uxMC39gwFfK?=hy2F#XzlzWiFOjLL4l-OaA<89)LtFIrX#* zGBbQaI6p4ofdUugqm)_6_LZ^1cFvQ4ceECZM)l4`GvHt1#PBFk=F zfyI)0nzD)$M=ar%ByjkJP%PP{iAM;*EXDDCRZj;8yHNVD>0&qo9TuWKCaMh)x!nktsGUw2miXoi zY>Z2~b1}f@cVXQ%Bs_ZQn4oQ(K|Io&KM0D1pya=|BoLC}i`t#y%>W@StZ6{b?6}gn zG&17Hcasgx(9IvqHEWKC{J|vHL$a2_iN{2S@z|#k0{!SxHUkpf6v||1II0#OFkchs zYFmunmH|v<)Tp&&c$%3VD6+%GmE4TnbsA^Y?UYB2nl2Dh=#awaINH)|agVjQdm0%X zK?fHbThCXfR2ft>-``=J6fhog3YJ7SEpAdL0=mu*@jXR;#@q64EuI||*ZScPuyerm z%U3!*zX#eY;f{2e6Amh+0Bta6(#r#C!Op_+=+v1rcr6ONt&S&nz$6ml&L`-UTtZ+Z zWh&s+ri~SvaYQ%`bgoOIxQIv41suz+L93rV4l z5ux?5d2#YI?Y%A`A=NzbJcUpg06vzRkK8y+c>Jm%53zJWXoFt9Dt{``tjZ%t9+z(C zl;`g!jhBYXDz2h%Ge(H3ZWt@edMTkL==bsAM_st73Nf^=?6cHXW6#mVpewDk#e69v z?H@5QS-UisybLb=EoZMn+SoJeu_1vp5u4gHC_OpNvt!ShCDr*y%l9`A5!DoDgE$J2Xn3vLE@OGa+`pMsa zk24yr7TeP{_Fb^4{u|89$eh42CxYFPH0fYYo)D4nvVy73Hb zMRwk!q<*t`T!=j!5g{WK6@fR7JJyf&1x^svFu6d)Zp%{XHsg_#zG5~BsF?eihhHab zCu$q<2p%+ks26?!OrCbch_N68mb99N4j#<9j}LNYGm-gg`dE&z+GyUwNBY{%Xl0~Cra}283VqQ zrH$;#hYM?IIeXSDUl(?`UU=`p=U!o|2Xo}G%X$rY$`j!ayi#h;`)W%~-Gf48GA`Jt zy9jQTxj6iK*jY#%<}PslkbykT&zCS1U}h z4t$iIEo9&Ex&@+;ICDzXTXlX#o0poJZqV_BsBkaq(bA}tF;IcPOKe4uF{F-GVpfo| z(St*+33@ga+y%1)Vd}-J2PW*Zf6g!bS**xs*PJ<%dkFH}a|=t$inx75z36 zqAdhJbox@FS53(w1hZt-MhA(1Pqp)0La6BypxE(TDagpg(2-8&@XT$Ns2_EZ^5`FOzt3LV3OVO}E{j(>oZ5 z(ppPBa-To1=gfdU+i?0iffxGNKj zB>GC9S1@uVJZ7~A7i|pS*LnPnvv&?YIm^=h3O>>t`I|(+ZuG)v0XQCp*s|G$y0#-$ z{$bU-XY<7mUsnRw1;m{EyzQ11MSRm{BF$QS! zy^56gB&Z|wUV#1km_Ei2{e|>lT%ItGzg)t)x>S9$S>t%YbqIO;I0jS@mq)p!1JZRg zG^CHkU%Ap}Pfpc016-QMj?H@hJeF#jp6*41#&Z;rlk{z+;n%x|F(JYMG9kPx;DVUc z-NRrsf7qtA1BUR`LSLQg7N3)ZJ5+V^54wLJvq^WXrkVZ1_KQIrcGZIiJyb|x{1=LS zw1qq40LSi7k?>dotPAn)%pDMN6fGH<{g90ZURVw0`8cV%_s=pGI)Vk`3o={4Ry>qHUO`;O6 zT-gAo-;lJ2s|Q^E^N%|X)vKmHPBOkH6`su1T{D;hU$5z~>{~eo1K`Mat$}yD)|5zz zwLHSPLP;`d*Td>d*&F(aiOny3Q>7*?`ar5Cp&2Qq`Ys=q1t$3FDQ^$#=r=k%ZpJ2~ z*rL#7*O9`yU921M=D^@X++T2yUM5C-ux^ta7#J^BI`@W^v)%_fc3r1; z8ORvuVY8nY;qU?Z6J(Tf@y6ju>Hf>XMS71@tA89NeKu8pS5+&OgZ3oa5G4=;~R7pz%3)=^e>K1pkcTSI>1&)*>xz3mtT=oaJ3FyZW)_`)Ez3&#;m@oZwGfHjDRw>WMH&-) zqzN?{BsELk@pWM#iy(Wi!!~N(7|?Pxh5SIc&|Hwrj+Xe^S8B4NR|0u=^svz-`cDn6 zJ7eDlM@d>7Z7+vUZTZ7@`pXBp*I&Md(ZRdhM&gZ0cD~X{)o>J96)_IX-@V7p?c5ZV z){R3}S+;gvsqcdnErX;Tj6fAEhLtQh0(+)n&}Ua2NWghXYgXKyRIXYvz{LSocQQ>!E&9c1%nWT?M4?3LhSGS{lpei3oR)ty2z!?vpb{Vd7=)ZXDL*IcG z&As|KkhYE>o)kzo9x=uWuz*pI`+daL5ReBU^&TA6mKl$ha%;Mub1qSr_B40XpKvyz zVs?S23rRSTES9RLiIv}283T7xX;esVb=9BmcD=aSu^F27iZ$)Vd0~OMV|PEMAtBE9=P^j%B}}LSc{DVSh3Idtu6LepqP?8yIZ|bL5SNJFV^JR^ zv-T6ANo)VQ@tm_iB_`%G1VuK_Os{2M^_3Iq8r$)~zwxzi)Jwb>-fgKs-f(>+1q1+l3NL)*i>FCfk(37oKT(+4;Pawk&(m+)sUYIqwV$U?`0nKc?>()YI8pTi-)XFUHsp1&R7?quKfA^a=Z%EsC!$<1!TyNFt)lVy&ZX6C|j;2_zA0jRP>!Y@_9gx-7 z3UCg9E<;+dzBS_OdgZ+lP^^er1j$iXuP0rpo$0~N}A1O zdno_{&=o2xH?+Q@-vt?g^w-OCBeN)U_`wnq@aTChFwc<~Od5tK@67uep6Bp0$+MWQnmcAgzOz$LZrwMHA0w zZ%E$#`D}-x;#V%d33-r=cD(P_;RdX57>js3x;sA_ymipheyyA`@o1E+&w^Y~B`xrz&q8+&;FndGNPq23@tL zkV!CU+BS=A`=s+sPwX)|E2O-!gcdTj*rDyW8KK+cw)(oRnSHu?An~`SKGj^Km4*Ip zxMGsa6CPTs%YR33hXQLd+2-8*8Z z7<8+=EpukgVi=vLsi{dr+GTF!DJ0cmQWdth><5D#0O<$vbnAMjcgPxu#Q#>2kd!2t z45`_x2G7={Z&rrN+a)mPAeaN+JUG{zG$)_=3tWXM6Y@9~!4D_(;8o==QACI*&+X1P ze~zCu>kf@@*|f=%e?TZ>ejPAi0An{D&`22>VI_-K3F{utdhR@oFb|7lMvT})lPusk z_>O?y0C-+A$7kFHAX=C|`U^&T^sd^of1KaNQ!Z?Si{pezN7!Ld^}TD9^a4U`-2q&H z;-S-|JQ(L|eC-8Amk*SCQ1AyN^*q@IXM!_J){9M_edj>q@6wuFVt5hs;E?kVN&g-m zE+nl{1G$BlUDR%5z1aGCdR`nZbpTl-h7ZTo=0(RTaaB6Pcg;U!EdfID_yueZO`kRg{EvLQb z^Sl7{ZFe@kCZ+5x{XE^!_Sm!!JCr0;g?v}uDi)|oNmdbNo$PzAwOdU1^}>5s9VR;1 zMHGjR-P0o*dE(u9BaHjb$x1788CzN7PQYEdjuFS6bXj$D ze_x%jg;^^GFG)&3-0wqG4JQqAU(@JGk4~eAYfD4R*(t~T-px1*168PNBaSm~qTg6* zxeFGG9_TBdB@Uge;WN_?fiGj&Gk3}qVaoxZDozZSx_!XKKpRj%05hl-Y#Om}5_r|0 zBI2aR1l2(PKYH@yk!zK!ZdvzhWpoaZ?vuN7{_J7>-^^^2bkHIHn-CJgr-X?vZ%(<= zulopCh9AVT(Z^130uplBaS2gdtU7voqQ|O zV4tT=Y)Nw`i>Lk{3X~1JY@#h59<1TJ>gh>HexzAJJIpDZy&>LgQp>K@4NtoMT-G{2 z`h@;5dAOUSBo}k4Gd^>7%NMP8RMxvq>GWz%DHlw7m0!I%lC)U z#bJ=(B6LGmZ@furR5}ab=?#hyHt%lZPbG z`@uK>lNj~ltUh6{5O(2$HFTRT4Uk5R~6*7HWeca$UU>@Ot- z4FaFyVNAC93g!vS4@=a_s#y30+&a@ZR9QB4gRo;GzcUd!+3y8CLYyzHi2aYl3>V}F zv*)};`8?u|WEH#6!0WP=GV49Q4cs?K;``*khq@0M1?hty!P0^Ic7KabNrL?D=Nm4C zdj-z9eaVZ9PE&B%76>98?UPiHr0(Ai+qV zY}8h*U$5GkDsenphZrTc0N$NB-mnGOSqgTz=rjOZ)Ix;p>060qKn4tbJle0!ZCZEJ zQ_-z>(Qbopw&pweO1pm{gO;Yhxw%>4!Aalz$hPQgOOfcI@aAi3Y1pd1*S!^Xx|Gz@ zOE$y008mrWTitRe^F!uL#>XV}tYr~W?kv|j3uC?dMLxyz6JP?^rGKCztcA;m#%XDN zCn!C#XAjZVyS6n2$8jWhKa=aaYCP_Dlz~0@$?M!NZxm`%l#^V(fnWW%tw!~=x-$Dc zMl^T+;bybz+X{{YTaUWgZ71wo#(uBzzWjac=%M~M##fXU6uqviuaBBDjvZQIx#_PK z5E5Iv4i9TjaBy$O8c$kOlQSfA!1DuG$imiafB3v?(y&48ZQ)>N=RBP3pzNkwCnVZA zFZlVz20M#&-TJq6bUdfWq`LDc@%dLf^9%(}l|{oS%an12L`t z^*`hG9r*X(6@Bvh@^5@WzPN+(=zsrew63|A@Ezi+v-*S%`1#G^5i-C_&yVmK(QX># zFJ^&RNc3>s1CIC4_4VHG_p7>kGws8h>W*+}T*rjFIpNJEvr6tJ)Y${apXB1oRK!k* zoLI@gL94$fB`kZxE^Q_DE=U1K9RHS&_u)Ta_yf9(=g&Wo<2_eNGO_^20~H+uS8h=} zC*fkmU;S|D1GEFS2fP;LjqQQCoT=>7t)_XkT>aOv7^^$Ktn<42oY8MVxAgSX3(aGr z3Cae&VXQAH&mberk8kS)g)+HB{)QqU^#im+kjx?39GAp+O1N~gjfrPAA0N9Om>bG^ ziBi}~x=Ac5ugOl~D>!EK&t6Ga$1GD?99i(jWrAUiSrbd7bs7N*GmmuJVUR=}z+(4@ zv5?V0cmHa)!1)1`mD{Q)U_CP8f}_U273TYQij2 zlL#XXDe0QEH=+OXzy-driGbAsiQX+Wudn+Brfbu!({n1E=-S$Dzc^t|f-1wli?fg^ zfqNK>Utc^ZIhc6obZHE{J(Y3~oOHrqBEX7aaoW!>i)Bb9<$H87DLBUCxQYiq_>}IP zbADONz22(hR8=c>-5scMbY;x1CMI6_rZbMsfkGJmQfst+=xeFPu|HgS-E!GK|9o;z-ja6#TK#6t)dX=c16xgd zjr;LtO$F7foNyRAY)QyFH>0njDq|ItTo`~beDW_s#Na41%lY)>ODa@xbR>nLKpD(# zU@4S&3H8*BZ9W7x(`G=(W~2pJgn4b3?7SJNFQ#hJ=9ZS@g$zm3#*+=l)YjFly|XPS za~*V#i?*>?BC`rL(<@EbY6{lOi2}z9l&<*IE7#VqYeRDHZYvn095`U#w(Z-|!r`6q z(=+$QOI-jwkivngOk|wTJSl|duy@JdZXynJHHjz{Z6%_f=geuP7_bXEa)5%A-m2>Ij760Qb{2(V81)1Y5igjBT!s^9U36C6a!U3 zpAI)VGt4kH`JRFY<2Dg$KHkE%sf6d!{nBzN&ot1`FvE{rD|EL`nAJ4&(>}_sj_XT` zi*FQt225qt_BTZE#ZRwwrEj^HmXwt9vzum!#c)0 zr3)OSiTCb-n{w6Stp1<_rc)&b(Ongr#uW;v9?&aAn3)yHf+2AG%rJ4)!7mBjjTkle zP!_m{`5!A|o^HBwL>g{CViX=%QZsn!V^=2}$x}Yx?o2>c)XQXwWJ>AIyVe6$&8DtJ z>Z|&w))m4umcWvJ380w3*if^Ukt@SpPD8*Ros}DZ=SMmI_FFP8NMKWss-4NYT`%3o z)5dRQ%;71=5%UciG)CAINsH)-*Q{Rs2GUHd89y4{#SS>L$ipuYVn6JRH8VK39Q6j> z4khGD{w;(Evf zDMW5#=E{FtT%Z%FaKe?oMw@79>$r73h4ySpELQSJvI0<%mPYxAT_FWfCk#T7U|ut( z&&_9W8M%A;q%U7yhf#{YdGk3`al6$U(2$~+g<;Shl{(xFYQTmKV+JeS-`70B;^+d* zB@tL!E*_Boh=CjB!_Avhw6w@3Wezk6*AM&WNZuC4St@(*Q$QL#Hc8~5GE`MnVS-Z? zByna2UH8fuSiu*6|J{7$%KjB%Z+Y>pFXnlCpElMN^B==8KJjz%bsLFl?WJGc{2jUwGuD9o_{Q|3PQ&gD2HZ&=uIqoLORNYfFyAx;awHy63{fpHI>= zdY=-0uk0DY6PGFdK;B#)kukQBM5D2R{xcx~LZO6Ie^NXU_~++Kr%9(~4^M4rZe~za zu6oo}GuBsHQSah~fJ?*ptEw2A#>hw>z(d&^e&D5`t<;`oH(DA@kL_KxGeZ&@9QIgH ziiH&HH?*QLg^U6W-$BxSW-5rQG8@CMfQtks0vGA$_HE0SE!eO8G+c_%Bs8=3uI0^> z!};j7LfIS6M)nLA21%9&)4iL#5Z#TB2m2d7{Mbyr|F+=fKfQO`5#$tab$Nww5-+(n z)JTlVYZ6(Iv3QfFg2jCHR}>&8Ck-J79$5_`62-;mf`e%piT=E3vK7|0-mf=TzWV2% zDI<L{2%R7`?{ZHMVnsco|7ZNv> zN|aQca(C>fJbZY+Z%efwwFH)=d4zP&@?R3geh<1Ky?ZS2rVNP}O_(PSzla1sdSdYC zEw>m<4!sX2%5<^wIjFYZFDtXy)2Mde;I;0REt@!IwrrUY`O-S3kRkzb3*A+P)8*yM zSF8v=b0+&ECe~iY#z&1JeIg@^K7-HRIi2b$F}9hGblWT@Y8erWjg9*8i5fr!hq4Cw zTTMGl`~UEl0fp|56XaT-Y`u6d{rQB)=@5Jb3ka)e+L?8GI^YW7O|LHIuA9HT^VQN; z?MAm28p;#OT2lGJq6Z5>!I2A@1xgU$?fH5mfHv==weD?ELBRs?$(G*sIx0$P+{vJ>34E+a(BO9XwPVBG5zH_4YRJ-7Fu+5NQv|pt0*fUvBqR=v|ko$7K;IMzfAZhlkjG63R)%VQN(!!sq5SB zzN|%zLn#t&?m>fw4mx~lE8ZN#2G#y%{-gfu*Xx1u5uwX(?EYvXpcsh&tXdfAt5|`v_8(>3}==<$hX!^ON5=Tu(3B5Z~})zt4OP@9s{JxYwwmG`~0}-w0~?dfx9ezsDqs zE7D@0mZNbbevY&sH^wGSl#1?3i1FjC279llOp!h9amn~uA6j$c24mG zOJ}+?oFPG8<@y|+G3uaB`qy2el7EKM^ec=1=ObQdI=Ayyp*@U1&ziZaghW)sKH^Mw zPPV~7#&)((AZW3)=!Sxy#-M%Bd{J!C7?PaBB#x8+O(kw{8tL!|xB4<1bfyr~rW0l! z?fYp9x`(N;sbF(brSZeu?ak_ga;tF{zxe`qd4XPl?RKbA7OMoAq3dPyzUS9%oFr@S zFw3*u!Nq0fxJ9PHH^<(WlUSq{qQ2%HOu)jTqO7ICPa!-E$SS8upXq&bd--B}<>1}w zPL;oNk>JF?^a6ieu|{rU`9WYm0Mxx4bh5c>yccVhumT+EaOKcxTVc*Ew%6@RZuB)Jc5x`qpU2sFQa+RLvkc6&~SYQpNMX z>bE=(D;nx)T75vR% zv~3n2roPesi7&6XnZfTde>O)q-~t&F+0 zRoR?^PbMF8ip3elo7?yziz(Fx80C^Aap4X?CVHvFYcm( z1Ix~rMn7u>$_$HT8AgWSB2Z_S0!P;Q=U=98=Do7KrWM(eyD$*vP>ILPTlYtQuK`eU!-M;LZw=Awv z>+<0;SDzi69xb0`MP$U{6$VhMN>-EFu*qp|(Wmvcq(??(IcRYgPQ%tazDPN%xau4M z;|vdC*|w`zM+#hI7n_MBG z?|^;}i4!*-kumiZ?FW{cR?}7@1W42RrEsFQ(la18(k5vUKp5~y66=!*Mj@r7t$|s4 zTbo;&t*JOhFDwJ$p|>_S19u)$v%e`fS6f?~5FHk}Y-`wwwM>z@x(BB2HS@U)V>g~= zPJ0h^6gVCdQPy{;@!$YozkIPtb=$RJLnRO;qNS1g;o)InLk`*AP<9PG)I{q*(ddmWQicMXYmg+Zd&O=gM3$NqkB1w3G-FHr(i=} z)Y<)4g%g!BL$r*CKJJ)>NYv;3u_?CY=M$}_@dR`6FrH#;X@4`oasA)MV(ss^L=Z|% zvb7?uO2(E~{r0)efz1Ou6v*|f?`)Gvizoj|HPPbeeYrm4u|oq_087ET7nlLcweKn1 zCR(*o$0(lILKp5U9dDJ&v`qNTV;gZwwtgJ?S*frAzWG(InALzz4QN-m3ob#CpYhmN zSB*XUetmDSR?{(!IbT(m)DIANyO9OrF>_JG2>VA?bOx^1!HV?W3P_W|l>Uc&6z3Q$ zX}DTF@a~W&J>CvYr#+6o=va@I**vTfzEME9&qCpN=_9EI+*Squl}DX*q5I|VBFjm` z0v3H$QEwM5GfnWDnx?YS+S;03CjP#;)#m(T`Q`cl{oa3ZsS_EQ|H5ehB2@qVpC5Yv uUjx1VANY|aEZ0)zY{oTm1srMkSTcgQDsNhAb31ONb#q&|u%0l@2E0C*)1_X+~x+12iZ{J`6P z)cgVf$dEpACsaHgGCly108(PYDsFm*OTHS)JN``fOoD2DSQHfxs8Sa1u}@KNSUmIU zuLl$ zzs95%2?`8^ee>o{2lwwQiofmaz5YJSA~9xu|F?(03d{C?1~q1Oz0)0%EG~-F+veoRY~*Y;HiYa!F*E_Ry}gQMI$J#RDBO%3j$_=;&TvI~=7fX?x4%j0}WE?t#>j zuG;3#{iQ2%8hYXCN*lxa8`bWvH!T9*B(pOJW5lD4psLVC(cejZC~dw zg7r8o!mN>`F()SC5W6_3?8LfKI!vxbmV;5X!6Kusbg!h^tpYoCYf{{1x@b)$(9>m; zSG(R>UuJ)RB2{Vh+(LC~TDl_3Ed$TK1|-vx5WI#`w}RkDdHT2JNH6t$N!(UBoM>5yna0wHZPrz*EIF!Qz!CI}gMQ-VM z=IYSxA1k!-1B=Ch?j<^s;4G)=YZdvvq+%03m&?>T3cfH|USKr;mEU8Qu9Ul>s#=lD zAlhGE8tZgEF&nII5UUt4vT%*U?qdYa*L}`doHc*5TAA^C?~AO%Cmlw+=Fe6Au*RW= zWy7`=cQ#y%kFf;JkFyS*o*QQgaTGkpA_Ka7jv$@t_Z;t+xZ3hqKj*ahwD9~ERJD|7 z$U88)*tK7dVi}&gwb+#{etQk=?DAYG?^#7)*847XWBoGZw{}UoF+#|T3@|5abY)h? zMMPlJeIqSXEPuBiyudKvKmD5-Izic`&YCLaD$m`4wvPPdhZMC98eKa@pAX;Z_V6^eQ=Ptn$cQx^z2S5 z@d;DRY5$M}I)o(rT=d2w2~C?zE32#X=3uBR@o9xW4zbfFNTik)YG#^Xs`~$=W(4d( zvxjGUuvkC2^6FAckG_HtbB22dlxnI;4g$g}s)$a;#-J%W86Lpte6Gif6;mG?PT$yr zrvQM(_-ObqOcB!_b|q}My5HdW(rxwXJWqGlN*ZB6p&sZ=m3Fb#%C)8SEj}!Gq#|zk zEAp~}j(z-bf%svS>MNvdr;>d)DooHT;ZLL-69pPYD6>wQ5;fAOuR&RWP|#IYmB~u+ z%kEPZxcRiKZwQK&a9Neagax^ro#s%0I!Q^bQaGttiP#YB*v|zuSu4m*IWF+~F<+_l zhwG_M*i3oTZJlIoXOoJd+HS&=VPwXX!Tj`JR{}oP zV$Upc@VOi>)_>ULDJGUM$$Ix~q1)Iu**_|ARsqtOzEnl5K)}=Dwq&w^t zY5}y0pLAlm`akM2!fkZcf!Q57e3Tk;WiYfEU2gTd@^j47Im4D(y9(UCu^{UTUj2(V zI$TdwahI-@m`TAS~Go(s|y04GJm@el;efD#YhNsrs>|@(BI!5*G}OvD_CkN(v6=j zxKH6ccQhp3m|J#T$7g(`#1HHu(G>7{tXgMD*$9qK{u=s-YjK>=FwaK{&^k9^1DNV& zp83>m+N>YYUBFX9Y!C8pENzE$xIlRny3lLl6(G{RG86Y&CGs>f9BRYmHCDBzm5i>c z>YIM9fzf?7^+fF93s~wJM!jkRH!#BqiflQ9=iJSEQ!VAS`2-Y8K{xO__K@x=yAnLj zRQuy3aq9G@XAwFyP|Zgwn_hse=m}=8KSVQ}QF25|bhX$zaf5wmOzgx|yO;%^W0^M4+MO{4+nwEFP>{%6Kuq9h0Z zxoV4vS7HAEcE7HvNc^AelK+_X@}GaJ^0e($15Q-Wm!tWbmX?;UU%$5TdK?A>1c-}^ zcXf7t4+wyn9us9}XD1)1%%T<*75(arq5tt?FbSNZqT;V#4~`HU&OFwD8NBS_;Q^3S zQX=@HYDh-$i!1W-@`5 zyLQ4Gxr8mM3^)J6@NNn?5hEibUteDX7=E45EZKFa+|kj|LgjqgP;`wKixXpdv&qW+ zXJBApQvWXFYvEJ34_|XH?U9g>EX@YH|^#9XnhlfrKj)tw_om*`s41C4ckU> z50Kch7;$0t4pQNF-ZUY-H+oMvBEHHu_gR&3N#wJbxt^s;SBZV8D;Kow7jONIw`b#- z@G$_h%5%^1I^0>T;_0*?yRE0O>J(I%u78p_dm?6!w^sE~O+$klk>7UFS}Wg(n)X8X|KE@gx6&!r1pBE~sCP#(X zQfM3F>R5@Ua|3$(mX{pXWsLKSH4S;6iI{y(vhy>NV$?P2*j0~~9^Jg_@tQsLjF_Gq zQRrKgMRkS~mI4X^5{?8cRcRR)70g}T2oqm*_pzB*LhG@FSj7)0hu}-_>Ed;ZP4%+d z-U2E7s6=3M9FgkT=OoatB^P5CL|SYGZ@JgN;%??MQ@;#iKBkq3-`7yzdW&>IU4H0@ z>D29O;UNF-G=}w6WS|j(J3lu8ffaQZlhMfNI|YdcTiebbO z42GY&77QD7?w=R*cv!w~Z>7hQd(T9i!xn_ndYPXZ=|eu4^fZ4CgCCpimwFW>kCS;) z>#1^4l~MeBpaIU5Z@pF^G%G_PCx32wnwqQfPSs;rK35=KynHHsnwoDqiqRi_4hr+V z#1<2H46595zkff~y_r9d@ch9w1(X62Qbdx%@TT9K_3Jo$i=v*% z+R5K)rhj}_rtuiIyN^qnjr8VpF8Ar4YO3D&he{6R`nbN>evrQOHG_RUF{|Aj)Niw(u4ghrJy*e^dsGQ}Po!jk0hB3&X&L6* z30p_TrH?Ar@=NFS;XIuc3z^1%^h~>jY3dS2@MzAFkeyt0Nd6-&IKFTf$kRy^n9d?^L4R${ZR z)a%2isqF59CB3R6=rEt7X%x1}Yv`@5t#}74ii=60`(!{eURCJ_3{X~u)dikR_OPoM z@F;?LMW25N8&sQkULF(xtvgl^!$Y5GNR5@G#G>YpuF(MNKp;b&EU8-dxr-4iGdTl)?>P+tr= zPWSwE!U`j%7OB(qTUFc5QHmW@z+iXK6?&dZ)%|o*_a@ftLGeRxYkYQaoy-DF?}}=7@cFw^5NpEKBEI+`DHyEH~#t{s#5l@ z2upPVX>Hu~_#O&a+4zDJf?A52a{9fy^PMR$r}nF6BVsCs=F)v?c?4iphfUH25v$^j%7%J)x(2HH^`~ERZxJ% zRqNe%ntKbwx;3ZolBu!TWH9jp%Yu%N28J;)v`5u@+p4}#vEy0}EYx;95ZlOu{Pp{! zC4#!|pC&MT-W$7OvIe&`l zR-COnmP@|OQ4EaYR-tPPlv-N1c9bR$*q)#(D+d~G?b_e!BHF}9{|I@G76rp${s3)tp#Mq6|i&f_hd+O*I*OUb7lX&7&eQBoYhWY25U z?q2B0x4Ny?=^r~dSIcOnFVC#DgkLXPfCfSWR zNNW*^wsVpoJW)XgStb+>tkrHmXOcnop&OR)$?ro%@9LZ;Qg>Tsc94Oe@N9ud8E4*9 zuYhZ-Z?W&Nnd{NGJ~)HgFHGUqyrkO}X9%6h&MHsxUg8B#-a(P|iCh*j6 zLtHj@)3e;mYqm+e*}aA?R>V2@Zhm?FtX2HbbvZ?MC%oj#w$E1Mm!no6tLx_(zK!bG zQ#R*hu5%v#2x$#l>jD~q!R4b0u+3964I_-deYpCjK{`& zSXy`!t**uWAqvgUV|l)^UCheeL27DF9`IwN8Zjs@tu#+;ir$~8ahO7EuV|=x&y~-Z z_)56W26>w6jr5Rd)tvRRi!sE=mNDCk$S=5(j|D!&X?#s~Oulqf1V`z20cI|iVr76qLB$sXmy+n8@R>|* z52BHr0$J~lk5-mA&9^DOo3l)o1O1-_MXKLFn~MZv+lQweKYAZa1O%9il1Av2{(AaD z`kl;xd2wv7J_nvlJaFf}XBbN5xq|Dw;DAF@H4zOhZZEq7b~ux_%p1JwuS^XdL6m(J zeS2~L{NVIV9Etl}d?ZUuB3tfuRlhhq(XC5W#MiC&T72&2*@vM17v=fm7d5+({E4P| zN=MO%>()8%#Ix&IMZ=i2=zH77-;krfoQ0EM#`xJ4%?<}d#~*QmoNsMEUomBYFW4V_ z`L{KFjioyePi&{|mPjQn$r!gR?l0J{I-;h<?-=H z5Gh%ra8GE7=CjGJia!84S0i}M6l-TwsR;KVoR7~z%Q&Cxm~c5pPrh>Q*CNXNo6!pmCEljh zy9C)?+TqYxC$VUF=cD;48g5V8@Aa2Ll!d5S88UAp7-K&z1_|`U&Hag(*>0b7eE&)$ zsI*J4w%|22V^=EPXAr*6hQZ3iL`_tfN? zckc8-_4sZ@#HZpKtx~mOENHHq6Mnr+YM0r=j+vfiqaa4{of#KveIH(Y!J7Sq&4@B9 zvN=YVUbzLmzL61MutwsdBUttFq5}*$!?Tu%$%4U@U){q{i5GChQghca)}Q+8g_WjDqKL4}D-oW~$s?g?*wetx*3OM)NQ z>tBnMj~GGPm0X}k)Wj?tExc6TCELBj!mvsKag;i~)Km(t#dI~9F!cNje53QRoz2}N zXRrXMaghI-Rfdzds&J10t8 zn6j>Lfp=(V9H9y0YBslwn04+={AG*qTN@h3XC#0-15)}w696QPk zIoCum8b{it#~2#l;~5J2G)>fX+HHxsUUXgO>o3>)K0iS?-nWiY*Rr0U?*8uAqrk@- zx0UOaPXaDRwUm<%Hf;h7;~DvTBNLZQO1RKH-#hfAk)ke1L^C&=YxN0*d z&nMGnXDQtMlbbXL z>q|ag*&akdQ4il=%z*RdCT@5}oG!2Ej%9Wh7=>-p@aooXxJFMLWM&$RQ6Bb;h4s^X zPH09TjL5DDV^aTsI-ygs9@et%TfYWe;!X9AFN2?E8&QDYr)J7{W)anI$W*)7Y_U*U z_aRzW(-qP0hAYwwBM2Z_EI~|vE?rOJbdrE)xc2rXHVQ{_);Z%wgF}VCl&ye zb@|p?DglHEIOV0qLHDH2C*EVn+Sx6tJ2Z8{v#{{z&mP{K&ecs`BqXhuw7}&J&@nh1 zl`X4Pt4rwg$JV5tcXJZ;n4jGHM_6t3d*_xvsi9?Zmd)3>IN4^6B(-?WD`@hj5w?2g z!UH6qAH0VUagO{2dR(`v3uzo`aI_a?PJSa$`Vmi`d~-53SiG_MEEarON^r+O7Vv38 zS+UiVw$l=KR1j?syef;tg&@6AL;9?fla6MH&A*)dbv_t%Puo3(aH8vX)7<_MTeF?# zO3&znLNoIB!Avwwt{HHZh0pO*J%$MSXV6&zA1m1;`}@i#GasuhXgG{orr=H-kgV@+ zV!Mc=a_4^UR~hB@9k9TcHAMvZAcrZ4SQ9kiCyk;D0;F`-c9>)Eo*?ZBy446<>=^W zKodjUBISR4e|0dCCwHFwHL8Q>Mb-%Tv&6^z6SjO{PWl^ALxaKn_OG04G|PW4DBunD zXtQiOFURj-bNZL%O_yqymX?0a{SihT`c?deLkwAxyzLwu93X!gpUI&+!NbGoA4miL=L4z#*DUjY@$j-P!K44K1^BPu+)GH9ECucZk%Ffucqo+%l45^#KuI%l z=Zk-viSx#8`E5y(m`J{?BEIjF>@woo+Cvl@B+kAO@O(m*5?!WK?|8926dfJ?`}c21 z+!oSl!~PKl9$*q>d{QW-r2N3i^4k{utj=!fVSJvI{gPPiF~5x$vW=978(dZTeJq3i&`y&5@n~NYoV#A0p?E*Q)UHN5P2-S%Fc=ru=>^mkp zIyxTSeuUYw;4AHy?C4nM9|H+?QuiH34}N52+?V_$C6~{DJiFpu5KA5_WTjc~5${cf z-*X+&RxlQ5q>_fys4=R<6G$yL8OE5(vMgyIP~jH`%=k95()>13@(_x#9<>0~1PrD9 zVDADqtT+^k%ip5(8LAI+>EoYXVHSmYn#zyI3D<)c>{@?(HeqI$&CPhaEcsrDagmzw zyP)-Hp{{Pan1jj=$xX&64~rh}-m7&I1~9DJ7G!x&?zJ$2TO{fMHB&uZnIhXkTUsZU%Q|xglNkb0mSc6H+dE}V z06(Y^1F>_A3npLJeM=#^-if&h9IDIATT$>Bfy1w_uX64k|gGc`E2i+rAkzR{CWDtcbw_YBSE&^#^?mKE}P ze>T8i%Jn5NDpGs<1{IG~9;qbbQ~T=ExmWKog@ydpLwScd0~d2x8aeq%bZ z$8-IOa(gF)>$$$8mGFgtqB;$(F_aipY#w%!7I*2?f=YTTW2*~Bo0x@xRr8{QMCb2J1RZ|NNR?l~0@Tdg39{S}MOOx$Fl&+Lo4=S==_@h)fPzSMhMowd&P-eQsqS z^{wKW;5$$pCC{+{em44m?dB8WafZ)0s}5-entvMU29kg{Rc6?A_P%A2%>Oph6&~E< zubC#gJGfac#!*tYc5^@`NOFGswjEiqtCV6=`>!ksRcGpx$EUx*UhTr>`S1J!P={s{Vb|+w{og z-DKQ8ypyj~xfXuY3d>6i>c8jGwvj??GMgHU%MDUBxo?ks=w%!B8w*&HVOkDWn{@Q6 zT7T6`enqvRpEcloB~*U&p4Ua=CW_BlU}nf2<}5~U)L9zRD4z-`x+ zzqs}l$gS}?iP;>&$A(YXzd2X{g!T^VY4M+A#McONOMew@cgE{QWs!9MHj3a8ozN28 zE-L$O_XP>KbM(G?`k{YAi<)J|NXyJ5jSU6a47RosEc;2t7U8E>kczPw^-nFx|WJ>_wK$=8S(Y(c|mbyLn+qJaJNIPggOTAOv+Bvi=B(dFsh zpFHBHPT5@b&QFFfrHa6)YyDik?PD!F+At!=$w_JC+=uNDHnWLk{)8ls)PV`HJIA4G zeh&Cl#E9&%LBkrF!aLlXM|!QBy~nHe^Pz=sG7?u;(f7gi#hDebFKU=gv^2}H6t6I5 zW}{)|V=NyyPE9wNKk_kA!b!V!lrezuw{3ePU{>pOp64z(4t$T~qFwoh9G>sII^SOK z;R37GDo=R=q+CdTsOb&8O(YD$-zT(cOrFgW*$~EGmF)+_5OSwpAJ@q0UtG_#qn&Rl zEU#2??H@TO;{p6?betvnndCwie7DPGqB!9JUx=Mt}9 z>?@z6yMzyzc?d|*63_&Hg#rhB%Pul@RB1z9Z}DyOH=CC6z3zY(!_wJgDI-w!8-Rq8 zoXX-gATqz0yzAV*+`T51+#<|6l(vJ@&90q-Wd{SaS@18VRGW*ZzzNA}e-5wJ)Osvh zJNzLoclo%|VwFb)r=R)3{g*aW=j^QCA0D7If5h|mJEmR?>`otUJA{-_b1KI%122K|XKvpPU9HTlqnz^0eeV?Nm2y5$j8n zx@z{BGpfz)fb7ZZc8zbOc|B{V*rKxDKAUK@jp^IB&tAsPTt|G9sk(KJw;nkZZqM+_ zNK*1<<ax!S6;#CVMmk z3n^IaZHo~8tI+SI1Z>(hN=`r^KyqqmCP&| z7YmbKu{VMSF0Z-4jKuSmXTdkQWQc`CFz@yh!_l{v^`2uJF}9O@YwkN^MqF%4u#iS} zc2Fdv4W-MKu_v-5^(1@DH|aWrMNj#d!~(!}g}^6|ba}Ij<%k{0{w(x+08L2tlCb*{ zqBC)3Ok1cy98)UI&ps!Cu8tV2*h3%24fciyoziN>&7LgX){Q53P4Ij=uCKWRc9Ry` zO;j%J#qhz?k)gOWtp^s7;1Mo~n-FiwP4NRq?}1z={Q|-B5ze5u!k^M?K58)6UcGDP zmnZeORQYZmLG60;iUr8(tjOnfT*7Ff!SqU=0R=rWEJzSbXtulQKY|8QoG`XI++j~Cdx<6JyXCNV@aXzIIpO}f26=QMF6K*SB}|vWGAlr>NDL$=JCtT zxBFKI+$~L~=z11$q|V?;rb3BSOH3>*LErkT*hMLaN1`9ok;9GQ$;n>Z$V{z_)I}x5 zX-0dNZC;v~+4^_??*08dTF)t$%3$~>w2|Kwi|{?Iy2od`Yp|ZrphZ@r;fk5tQ({=4 zv1Z3|^YooHYd1Da zBGn&V)^iU1kivtApsf1J+`OlQ92i$$H+f@?=*fBe+e!=ob0_Inx99Cz{+{{l0tvk~ zf5WM_K8U_EhcX0+vmK~kyDKp++oz6T;j1ZK`+cLY)8bXv!eH@du`y#SyUV%jI$$KA zHuas8zMWmY!Q*-uQwdH>L!Pv>{KGQo-5B|Exs_SY=-OVG=t^4C{Rp8U?m*^)puYG1 z6pr!4qSDfi4qYZhq53!yuz>%3sBP{NpK8I8qC0u`FUO5?XjM;P9px~#Sa(Eiemm?El?k}}emIv~_C{@bjzR2}U#=?7kp6>ChW zcaC51uUlHrbgD^xzs=P->OTGPj!%ueq(MawzdJbhrXycYjc$4Y&lkxBd0+_zvy`|s z+o$!+2GSr8Jk3wo$itv^CXpLIHN>~vrAvijBcvkt+?G4CmdyrOOL|FMxI%8myQ zJGr3*^pm3SIjiXp4T84VMc&;7SDyT;f;S^qKIKp(7S|(`JyGr`myf^Zxm?G<_v<$2T*Byr% zJxjgE3I`Ap6(ZpsQKm;nKeZ9ROwR7Wk~Ef0R=PT~1@kq)2?ydEKAq8%lYh46hwv1d z+&f667Dg;rygL#yGNd5LaW@=7Am-~v%pHuD zVzO6sl!Q@WwcR+HuemSN%t3+}av!s(`zsH1!yWAHnITi4=d%J?4#z`+-aO*?Z1q*i zJ>Ca-li3+yVraUTSt=oJeM+?HVA7gB_dOWgeDRLTn>ozudhX9x;hom!g|-O%ug*U{ z&c+q)3$h7R8HpRfye!$}f$-l2=^H2iy`hu;=E%%{Y(=Y{P^9T)nMEu`4%1h=GI?xq;&oTQXh3q83$$ItS{_&@M=#SOJ>!gu{9i?8}MuG zER*Ve7Q*_za@-VO{cyGV-tMYK2{k-`Eh!?A0(&bJc@z|F;{GtoVGUUevCplc!5%ZI z@lgL({F~P;azGpt`&pWrHGpD~d5VA5M@dg;B5)My!1ejLZkzg#$xv_mAS%V)z zjHb3vmK{+DK{iNKaXGseR7@qZ85{UC_bsv5*qcFAfY437=+*EmeP-}k&-J%(zHcmT zkJV=t#Kk4v9#(TkHea0kDmqo?^PttFKt(0ox%K!)B{^4<{2BwLDMQ4X^BO!qstnKnlofHwjgtAYDUgIzwP~XXy(GBX~x7& zC9|fqe4C;wCz@D9i7z2@1u&!TMf>08tI}=br%y%3=DY64CSR03`yES?BFWrbHaR_O zHv;gQg_HqT$o27>p){F8Atl^iY^$qWS!O=tI3(&sSfD@UUt0*(tI zDJdh?$hfG=7rr%|%7rT}>chID+AE{9J&al)Tf>rz_CMa>k(w(SRHL^eIGFUZ=zhod zN1g<@g_T#*jX%vAJnU6V)Sk0t%`kH=gFY`#t-W7n!OJA>MK4$+~297 z5`Kj5?>0g??r*)I+6!=cF1=bP`=RC@c|!k_JH@gnYSx29tZR@%A_#?QlrIjH zKCAw|>FK~)@+zZ4pYJ>W$y}CECE^TTNsBS`Pi}g!6|y#=w~&gz!=2^HuNS}d#n-iT z?hU1i8Sb&{xQT>b%F5~zAz|Kqk#>(`<2kb zTK^+IBA2yx90_$~pzcCB8NMssO~?>44m+2+Wb;$xO?}mI3|{V)!4|36F%!t78zD5i z&~m2i8_P*k5Ux583H51t*uWs$UekuELx_W}oa6}J`S#xAnbxy}fR=HjA`)Qf zEuD55@wyY*Qnv^XQ1LKEh?Hg&LLyPqXRak8nx2<6I1#aW{RGTCv8=AmzX za;Ai<*3`=Ho|suuKvc)rX4}^J9%lvO%;WynX6?w6;YRn7>J?4{7Jz45`^Vv4hYP6Y z;JCuAM0y2$r()8GCI=wCUs}$kPCQg@eIIsub330cg*ki684Wp8Ki9ouP$C-wy3en#%b!FOSSN>$Y_c2uzCDN+%gp$mNBj8?2toE%&ciAcyo)dch10CAEYi*b=M&Nof3V z8A7V=ElgGWdolp~(Iw&! zhtSnN@y@uiLqxsrgu#FUXXu!scXM_JYh@M*0&uM2qwsGJj@9DDgS(bVhKfT3yAmp% z`_?am3ABc~_uH_efWoCn?q;>z&SA7Rn6WAZ(hk+IRf7no!vLIrIn|98cRsBd&&`SHrikAiXZPxtM zVn4r~`q3@lQP4=mt-QlwL8o!^uzqbPD$Sl6h&#^f$mj2dan%#k-#bvviZzAk%*}y( zn;SG~Vu3y_Wi1sA4V6pNfF+Hj{5NlTn9QRRv9aT)=AiLCEvnSE>X73S;^N~~wXP(* z4IT-1&zCg_XEgLabEXc7o7CXsw!yxb&p+@a2dO{lTX|2#Y!hjIB{4^TJ6B#le2E0r zC6G$!`CFpT_iX2pB-&X4SvjumzOJA7J=d}X(8@UroQ@W zdXgK;5*13i%XODZs~I$4&Wbp*LrGDtlj!@q)^g&P9t=b`)9EpV6D}uDcvSLO2!DNU zl8$irGboC*)4+yPO7GRuu>I(IAg+k|<861c%`$ACD>ZTaZ}VIS^`Y)qQK>LJ{pZ7v z717oIs~QMr|0{Jf@X6)q9%aXwey*U~d~JW--q^(xHvOAqITbkR-(gA~J} zF6T80;OAqpcbuEe1SQm3=XA5a)(T39inGE=Jc0!ZkYG%FibLGEZdPm_#!Im}e2c53 ziz~glE(T3520O4`P#2XLZ53O!G{!@9l-!1wwZN^=)Vk$$z3tp_Fr<9y^}k!8OTOP< z%BF*f(B7Ilt)$@;`6|uuk0&zFC;_uxA}+vd2w`tgZ~qtc4)+4 zbN}1j?5NM0Py5B?uju^#uI;v;uKcyy-%Qwhn*Z0`86rbs@5>mqV%=J6O@prA?FVi_qwq=#ggAz7#pNdD|4rFRnB572AZ$|h{JjT7g; z*u>XuA}`y#KjV&%F&Dveg*EmALozlO)~Y6@H8Kv3Fy49&eM-#;u{C*F4TTT@TBd59 zLr8H$QAPHEl9D5dK)zdPQNy4qbFW%s&PT>S=8T;9H5(`S&1Kb6VWGG+T3WjnPTr^0bh#Jqw{^UTij++VTH*ZEK%+Wp1v6O}=6l*4 z*vb|OlN!cyG;_Ln&^qbplUmMWv|(FfrtW)1J=5uSn{uDxtYJOF=_n8} z$7=0DgW3tTjB5SMrQzkHdvIu_yJhuEyfwI*rcnINE& z#XT;D`h9H(sDt_#D^si1tXVyxz25!7Bq!r#P!>q4RP6Uu!c0BlK!3Pao1U)D7K7^E zHdfrA_LO_ArM7#ikE`MSY(zK9lh3hmv1%ADOk-I1*MB$+%WzXlcvOv9<( z$_?nbl97?F_VL8eV~woJ^qfcuot9R`>Uu*C-*l+9HyyR_x@jKGY^Ion-ZDc2uIr3(z3 zn2z7-y9nB7e#@sBf5T|}#CL|`k1n2H{7$P%LQ@)Jq2-$A#QLeQE!nAeImqfLW4&-$MnnD@x#= zy29UlEK8hz03s!`L$LIdK!!6JpG>Z%2RlP)nmPF78NGa5Lj)>bK8^sCz4`OjK%Up* zvOur=Ied3&a?MEmOaDdGh#2tq} z$xfCY7BYsPHjFYZ)Hb;y=1jSMrUstb5{SuO8VjovzXZZ zgCs5Su&hROa6x%Z*;J|q+{-FJs1k#~c8;bQGi6*tk@cHi1N2?AABsvWG8l1lWL)uOrPo-L#Rj%1Ss*Rp{r)PNwZ z>tmid97PMI3md$w05LJlW4;>D_GR=tmH(p^$JflxI_WX5Q{x$>Dk^q~6_o95;ym?DOiWL5c4wc- z(??v%<*We!RY&1)>%{ zw=w3lsZ!6Y9RU}?!I#q?vR5&Jn;6x}eT{!*1gmss85KJ^jtwrl(~^zT_l>|sz~xlT zm5SO#qKbdf^ohZ$|2qNPdsD!b(&XtHS~Y++>r_=;_v#BcUU2Eoz^g{0yj7n5J=TDH zaVTnlgqU}?Sgo>L^Hovt+9u7+$M3IMT#BUU0m!(_iA|a&x@YSWMIxj+|Xs(sd^? zb0-ia+6$tR{rUQ3lrIpPUz`*1wn=|4abd=fsGmKibLBm4j2j_SvT1&Rh=CTMW7CXA zMureVs%mLk6dL?ma^_QYG&N`z+fr~5yIf=q!VSiHJF5Ob)%SKsz19{z#`Ze3j zzX5*a9V!z4>WMP{6(GPz*8lPFzW_v80RY><*^*JAS+|h*BZV3&gI0C0$($syH+#jp z0*UDFj`TMv&4KoCxNfQ!R?6zqS7wCWB8FRhmD&LT-9rB;DwG=4PrGGkB6g(lK?$|^VTaHS3s8U!@I#DQ!_UDC&}@HE+=gEcmF z!QpwJBSKD~hBss5TTAbnb6_u5P}%Ui9P%Lt>0KpN;#AFAE6HC^mS#iC4HxPiw9U>N zkw+BCTc$J21x_`*fxRi7HLaPBAl#7ewcZ?$ zwPrU*oJ#sfWzEjp`YKu>WFjY@x-SHm%v1t&I2x~Kl5bQtuUmX(t$cm-Lo%qHR6oh* zmJY_IM>+9NJb!e~jSueiw6shA^pKsB2s$@!%9FCAhm6Xd$>2cWBWf z!QE+#1TF4R+}$levErq;7k7dN4NUm`?_GE1&iybmYd*}HdLgs`*;A0%CgeG8Sk_^&a0u-?X~THgnR_BqQWG1 zR;Z$P%N%t(?Hf%x|AXx%iJB<#W)$9A#R zLDv7?N0JB}=1^o}q9`wp<0YEoNneD|>(-#SzJbvkaz(nZ4B-Xh83t+ew8NGZlecF$* zl!Sap|M|o{;rM_1)&1nakn!2z|JeC|e-m_MGiY0C6ya=o%1#TPnr*;am0M$HFt!tN z?HBD(dgCrYDePKY*+-RO3~*=^Bv>`_SR$8Wdb0R6mLwNiN*Tz(!)&=b*~I_mU(N>m z@w{2^KdfqN%6Q#(WnEn;0r3EpZNvv~$eMR>ZriC`ge(JaLX?Y5x~vGZ^W_RPSH9C^ zIOwXyxT53!^eisJX~!*Zjm?1$vO^!OI2XBR?%#Dz?gWFs#jB^Zb{&8}!TSiipnDHG zN)ts%XNSd)28Rdg`PS2aj-L$En^6F9h0^>;{65;|D4PK9{jq4(1neXuU+dryaPyEvY8 z{#@S5IE!$X%0x^1=N2ND#)?H@u)VFL<8H%ArrZHHiR566{~~2bFrV-RhRB#Z{G7m= zo!+7>(#C5)YN8aSrtnTV_g8faeJae_-szTJy?9awG^-4v!xK$6plUA%iyzk|By3xI zUCs02Rx$Cm9{y7I5fGh^`c4vFvJp0Lt1B-c1@e_O!m3!wIA4QYT@GJDv7kShT!sb9 z2Q4Ay59{;rtBwz;x-Nr-TGm-fgx|=A`y~#y8oVs%Nm{$9h#dtQ!)%A5OdnHa7*+W= zFwM|?q*JBE&UcZ1zUv4b8N=K2m^=Ozw(4|in8$C6{6?BS?p>=uz4(*L?%g_E&N8C+ z++25LOq(9g*MM!AV9%kfGh92u)&3~?gMC?@3oK3zvwPQ*F8EHnklF?6|0}1q3W#ZJ zXMdWXnB*Ww?IB3*V1<>$JIhRTgR&gB8mXb=XYkp~r)A(@? zU8=dWYj61MuXjJMKq9*qp?p@-_L~O3$qfeLRio88?oZ+9oInM; zpjZ1TD>YmIDbs+fpN*e1ygh%qj11o;S8y8SkbM#Udk|a8zJaJ1?I?dbHOV}cY#ni* zBKvx^+G!Ys-WE$$5D}sx1~4r;x`QSxiD_KNmS%8U8H|Ac6G{$}W0f+eGU6vvFR zJ*-h^*g~(uRL)fty}ps31WgJ%+4AG=Um*q& zDHm^t4Q=4L@x+fpM(eIM?Nx`SVrkWJi-{jOG0I1q^>lbb%L!KF8)QH#tB%`N}pGmfcXZZqEA<9<}wDDA7T*Y%&e_H_ylAO)3TmHKl5yXibRIY+P`o)^ZBf4 zrlszp_Yq^h=@jWHMy6*31=W&$$hm^&aTBKMgn$>GS=^50@9w!BenUn{C@HW?g`?@$ zI|zCC82c<3S0oCD|BLO}EEqs2r&A zH_{nWuOezze-8Sq2J%|;YEvcAg=i_Ur_4PoGqZ3~O1h=`hMpc30q3!G5|IM+-aQAW z1pzw5nQ2+s?aiL~2i0x%;*LcfGXbqV_g^t|N3i3z{A})e&o?}QjQ#@`CoU+sQBurY zEp26FLrv%!gvQuc>zO&-@l-+TfuuOvVzB|1i9(gzn(>^>zp>1#RUY?Z*}@6ZNvM)A z;cZ?8~_F;ZIGWvGgnviHCH22rvX32u+=@X>++3lg*L{sYe-?gabnuP+X zf3&cnLG1M^EH}g<(&Fz8$3SI&agK|>e10tp;#pnx4l;rc5`d-BoGy@l>7V;|0B@kM z+-4{m0n#0sxO#{2+Q<*re2C$c1JR*B0|H+7e&vWV`;x@MK7fuP_8~QlP7O%#LM`!{ zPa;H%8Kg!Rhj#1&yCe2ik6+^nP84S$E8w)yTp$tQ`K#L=n+#uU<9@<7DUmcri}_ z%2zBmHKT99Rj-?e^Z3Z9kTmd7l8>-1^Cj{{zCbGYE;qh;a}31w$fHMx36(|J+EkRy zy69>14iF9)7Jc0Gg0TJp#Lk#oQl#U0joJ=@yCIS@rY38)B@$E0Hb#vVu3jQi$i~{3 zsp=<$cnyC1NpD(vJl^)ld%f8p+n(F%K+O79mxMWmgjPC>de&+$EbLkQc+U>zq420x z45gh;vEJm_U;fsUO^PUFbM`Jb-iRfe4gOW6l%>1LRK_uegnd>nQz!}<4okVnD0ew> zlSKzp2(s}n9O|)G$l?xSr`sDDnL;R<(hFY5l;PZ=38#a$)lbYBz$e{>a`!P6H=mihKnw(Gk5%tDJY;#AwYI*`U=-*!R^ z_YnFuvnBTwB|D-a3qB~@Twec1SdYYK+P$a2myQu#ef zGBQ}{ytz$ts8{4^M~W@dn4eV6Fk~h>D`i=piXhj{@1Kr+Ad7yR_>@NYTEG3jR8;+6 zmR`G;F3_+N5h6AC;t^FFq*|(oo@f}%M@Ok#Ve`H(o)em^>xpIfFnyIR!JDT0v>q)= zFC7WW$g9*nx_m~G6_wsf(rh;|%?>e%R{^$%XH{9=$6)SO)2)uhhmBON*Wv9~`|?gl zF##4zyVi&_bd0(t(BbsEMl|f)&u9H%R>SIv zbnSHxSKWm^kAB0ydV`-D1U1AT`J~b^EcsX$8M1uQxhRLfixHqoJk0EJ%aa$K_UL9O zfxA>`xggW*@9Nw`JX0JtOHnG{)`_TK06%{dZ)vg=@}Elq;b4_ z0@`{VA0GC7m1(5ws3m&VJw8w-A4M!BrdPMl8-QZ=oSBx1dHy?5+|(6-13zE z&VYh8dkP6V_R_PP&&lfCxac|Q$9)|57V zU4}Pe*d_^sGa5P%`2X8`oa4{tm=(Jkju)0#c85jwJ|Qs|De`qPq^+NLEHB9980w6e z(f+7Lp|@TZYSavctkcZhEd8s`jNvZE0W%Nh?CNp?v|`6~WJBdjnP3085WaE(auS@vTINHupgK~Z zp506?Up!^nCRWg?UAV&Z~wTMXjpGQH7!>C>4-2w4+wNW zU9A``6*)iN9pYC2GWhg`zfb@IExh4h<+4rkzkjG^j)hjP_#8@%sL}w{Idtn*ytj2{ z2W%hhQ2~G`_zZNRchPXV~DEuL_>K+$o(;0oWK@ubyMAO^(p z@WWy|2d|;$JQde6zHYr&_C2-^{&e_io)_`I{Qy8GO{EqO(?mN=pG+#U0(I#!jblW* z+ZA-;>_hP;s*~nmVK0t*6x8is(`{!ALx;7xI^#^P!UU7FTKa!~?A_JRwYqA`*1R zS|VmD>4CYfEa^8OJh;6!Haace4Qq+#)h+|t`;&!Y^`i89`8f6DU*Wz#cHaP7(=*wu z!otKi+)XHPWadh=6PZPpsVk!h*x%;LnM}S4=W1*-GlD#qm6g526<;JY5R&vLdJGCH zNY~#`)?guY53c&Wnxi@cd*}|=%#BT2me_)XDSz&pfHcVT{#JH&(k8mUgBkX zuYFV9rC=LyF6$ISFu$e28z!-vKkuz==0Wy2u;o?205;T|M7J)%&!{8&uBg@ZDj)Q9 zmVuP;+bk$)vX9eAYK|yV9b4tWy7DD8_KM#)NX4M~fjZmA^aE_otWph$J{7^mbIQMjcrY?~|%%>DBv3^7wF#orl@xVo^Z z{CT$3p}GwKobLGh(14H^onQ4&&~U5@C#k58gibqtcnieD%KN-trF4-kd0e;L&TJ(< zagU*0y<>cI5}X&|$3p=8yL2^+wH)Q(DLG-`=X*i@Gyq(XOzS^InHJZc+l%ZesHgA2 z49*RfF1@r&s4R1)Vg`9i+~Y_4Ns1`yZ3jIhRDIr{pyu=}eiyv!LP#~S>`}LV0`t-z z0WiBz4@sz9r5#Wt-XLp2*CXj2t%<8q1?*eP%yvV6!x_&WE(^XL1zgr=4jaeHVo)rC ziQzBU)XZHyHB-k%c|KmefWW8%N^ZmD6zGSSn;v`?ljuhnN0@IGgE^0UW-@a>Yfv*) zSLcE9hgbv7z9qx8I`XFKms8=NLfysy<*<`Xg;#9GV}v%>gReebE? zVHiIYImF0>byS&Nc~}OdKzX);8VZ{NZV^(x-|^*Yx6#;^X!Hm+uM8ShGiST0CaQbVy5gWt=3c2CKnNrVAoYBfPH9!mve+#ZLR% z(0WY2%caIaO&9SR*`i%Lbhq?ttlGfNrrAP{+jBL%eiKDJ;`Lq!3rHuwUf%~KwJlAn z4Y>ZsKbaNB^yIbIj%|m0pfyL?O>EKF9#mz1c~=Y6VaLWNQJt)-apQo#$Dlo=hq%9& z)_L&AHf{^_oGo*!f{Nlt;xof)9*#U%besii`%}mK9KG}!nQMri2F5nSb7Thn>ObZ5 zf5Xo^x&NOth$->M>dcR1(R4{q5`(U#@1M}Q7z@bNLnMfQj6U59N}1C83?&6?JHY61 z6_i!>uJ%7^QZmX@wI}h^&98s<5>oJVBp1e0>h$#aUn(E|mqGedl>a|VCVU6I#wkl- z07Au1P;b_4D|~IwqWgi@Efklk)b{H4BC7M+d#JJh%~rC>N@u|1FlXoe*)Ya|&sPX?ecTsbL2E(+ zHP;NDiwFCeb&Y<*FETFOs9upDod0f@C?4ffVm%WXdo@!#K+V~do^l<|`E9U=<{T|6 zU5G8{c*BkAeslPfDk2u1uB7c`yNN)RTBy%d30PQb%R-V1kIAYpvv*{C=ug{wogjBR zjf~gN>|S44b(n)ZHeyL)lt8&2pLCI0p10$Zq<4|eP_E;y>-?Xgb!B748=YM@L7t6m zjOKRuYI&O?o~K@6TrzOfTw6M7w`ES#Cq3wWsY|NTHuNyC6zs>)9V?9HT*pAzMT5td zNmf%JJ%Hvv{vXsbzzXG^xP#*n=w<%v1tWJ~Z_Cp~IoD^%Hec{tDYqv+XyC3Mf;>XM zHCb3OCNa)NU9tQl#kLk~@^C;Sp#Fi)07eoo1w+*pWBeTA;mgl&aFpq?l zIE7#WM@#xXr^}0oWN2?+d6S}oHkNkfomRt*a*7iwvQk6wQ=o~y;CLLN=5TCBg_9brnmGRhkdT-gh zTUWnydMZ;Q5M9MIv-!}4N$=8@p0!rbtr)|ZXH-%NbJv^wLqQKstM3qt_C*KZR5hII z_I_O)tuJ?4+xZW#wF}`-Sz5kM0G+)buF4Gf=zp&=-~$tuAVb^&<2jDoI0nw6J$pxE;jCwJBzWuobUPhtkdw_DSEV`;Z>a=m#k53NVQ1m)`Q5 zpz89N;`daC@%w@M&0hw!A03xPeb@_Go4 z9?}5-gFRy!gtnA|mQew_WLtk_$2zsCwUR2YnQwy4jL4sdQT*%_V%A4sESW~u#NWji4NYyyC z^V)KwB-#aLbWx_X?d4&z!iA5eF(a_&W!dL6Xl4Jjj8Xvx-YU`)#Xu@kDHxex{#S|qsC^1 zojtw*T zh8KBxs_717?9rAx%8jq#GW5aoC~tVywFSLuvL}BM!%AOt%;;Jyy&)z2HZ2%dY`aM+ z!})4r`TF4aQGjzMW~`Z@Ak`{%&$j2t%^{%lqQj-IEa1M1q)7E>uy=egtnD;$rE1G! zU(QwVp>%Di{i`%HvQLz@kKcrMI{oj+XN6F@*h5sw0)->5UM&ok$f8=gh<17+%qXze z9=30JNtFyRu?fZ%Gqfn0=a$}7Cncr1)i!m^e;5`N%VKw*Z7|%%`a9{x$$33B(*Kud zIpy3_gVW?w48`TY4zm#K=vQ!eL(8Kr)s!h`E}=IPn!t1a73vGl#cB&;MZP+}vBmk# zmx}`8mY;8;Z)ZbW)X|W2P-#Dv3q@xLo}71lbl4S!E|NC_O>opu2qqyl2++0`7dD3t zGm^rl2hXa2M74mLmcDpxeJG9J(z0)RCcCcqrF?&yHc@`dz~sceX4;^nAWBqZ@{=(V< zo7eW8LVP3)rgDd{H&Y~b3fWsOV!zLOx0IrN!h71ynf@pwr)O$bZ@t1|jp*i5taIgY zXF)Pvg)?%#9-lIj@4e`^%63itjF5eu07+h)$R`^VHVMna-38pj8fypG^r0KQ2fq3x zNxxylt~DCEPy95Atl=%95bHyut71@)+?(Ss&T@@WF{y6reId8-2xP0`qZH7Nj(o@Z z&kD+$5X4ps+c+d{C#F4ms@i*I6!qVtWS8Cy+L7;8liT6KL*&k zRJpr(S-%e0PK@sUr;e8H`I^x^k+<*CW?R^Ly)AvwYdB5zNLf040T#sW9%Q| zvPHZLY^1)w&e+{)W0zKGBcr^C=+oa!-i^2abrSxa0+t)vRBboyMq z1=8hc)Q(a63GQA;YY}PJkmP@O)rM?pXEoL)1mh7Qd}4jA<`M3YeAG|_zs}`c5;3u4 zX{nH`kkxLq?uHHE#^&{F`)VI5VJ3|v^GuuB@M%DsLld{J1M9;zPgnUk9c|M6>N4PlQYU2=gp5W3vsWclt^LkhbDb8Lf!- zGU@u!&5fCu1`>Y@;4Y8OJUUT^807Vyo0WS_vk)qRHuAMubAxkflvN>M6#``EE5K2G zUHCl(lIjt#C z{!7IT(8|?nayk56$F5u3iwbUKWh7BiyDgcnrVQHnE0m}Hv1<=I<#2eiKa}(8mUz$l zkge!6vaWGb0w$MS=cFTA8(E2K? zwq*DL!%hl}o;%W}H}NwbT<9W{W*+;rgwAj!kzC4V?Kc zJvrHX^ZV|FblNC1!7Pj>Zo2dutY+IVGM56PyA(xlX#9GiSJgW|mTTSSF;t!%j~UW$ zp$9i6Gq14Jj{8M)2&3X<=Pi-AdyRq8JdKpkY_p|ayv5J<_6LENWeqIj%1BXBz*L=s{P#>pXh6)x)eQN_(MM(`-30@4-9Xg7aLS= zF`8E2-A{|Nyt0c2XOu%CR()?)4R@WN*R|Qok3`~*ZX|~)LmSUGqKIzhD*fTnkZW5Nqz zHF|KR_1AfWj0@ZkX5zO*A=b+&B9s&VNQ|iecN8obp1lwHcCy*p-#($mJr5_~4QM>} zybF}8b8{{YzUDvk|KL#LT(dqGqDl$QHE>>)*Pv-jC{Zz?`D8NCFj%s6z8i5(ET zI((o+D9Zefftl#^Y96yel1LgjIC-FDo~pYpW~{brEp(<(7cW?`^6^vH@l1K&gc@jt z@yjH3jL7rEkK8^o1%;f)z&VFrPQ1f%7pieq+zG=N*L}1NQ zWqZ8sYZ#Iyj>v4KL+^9qFH3tTYdTAcEQ(?b(0z-gC203=n0QA#Wo7O1RkHgB-`JI} zToPq8jXVM8)%9dj>U^^!wTF24J5GuUJsV`!z{wS|r;0k^Tuww5?^VS6qwd$pm^b~H zH%T9CMX1hCg(vcB|3FWcu{c;ypo|Ppv4_;#Vwi{aT=*$Qs7Sibd4b~6pCb5kJE_m! z42c7yC8m$?|4_*0ot(v-Osp27`#v0s3=tx1@}(JZ1GBwi+>$5f@#AA*>G*tgN&FQH z_4IibrnuA3S0udJ6p-#;ErDoZ7eD>o(gDeZ0LLwZQCb!a5c2|#b^8o0_BV!U{Ly+F zl3jf>Uae!trRpAm_kDi1>xKNACLO9wgpmA+>N`Dq!-VO5h^6nF?oSG4g@WSrY*DOp zkYI?V-E6ZY|EZBM?6hq1%$3gjS;CuiDyC~R2qFbKV8{F9y)BS*f7IA%Bau#1$_5UlpS20S9Ej}hzO;=v@cSL?S7Rg7U;GAbGPhol#~g&ZJqwb$45=AS!dn&*8&|_^P$o*t}Oa(CIETbv9m`zjgo2#V}B)HTh}f4}Y5J;#Ly0PyDdxy>MEutphiFJISU z)i$GMAp;MydVNZ&%S(H9EAI6AEIvQi?O2-I&6pAn0Kn-5JY%~~7Ppags@&RZ?=_WG zgOhTF+odd|XGqLJc z{;by&1-JeFQfJjr|3;XO*RIvg4H8U`spKwXPqLlgE7t!fQjFIxisDR3+swhouR}Yz zhHYRM(7YS<*;lX-uH>yU(*kd${ni*ok+e@%A#jMdX%~*09Obo?^}aiNFbf|L`#H6v zE1>c8F#{`JGTpMK$|P~@;~$uv&4~gC+g4vIZ4`f0$TvQ{SE<5D%hP7_?LR_Sa!TF? z!Tj!C0Y-!0tr9TF1IUKGUu$1R#Z~?ugb7@u<=42^EIYiVTYEt;fHa1%-qc@5bFL~^ z4OFW-PFryUkK#--j0yS>Iq zHBV_FUdM4`du<$MfBZCdzhvN5lMH*_v4(!_eGTJmNGBuskJJ&lXpWzCOS#1i-{%ao zFs4Q`TdI7^x+4pB4byZDCxx6({m=XLhX8;)bwfhUGIsRbYvq}=5j(RJDtb;8)MfU4k8 zxLwG)M8bNdlS${Is#A6lGNJgRBTg*S(W8^hF(zM*iqf1IvKZsKF9;q=CriGrdkLTF zp`;dTEtueNwE*`2pdx&NYDb5Z}P2r!DLBU2z`IREx@ z?j}3QuJsqk@I6+AonE=F3jF4|xlMdcnZ*lce~<4McgZdlqq6&QA3!!^ts){f*y72* z&o>AIIAHGE)>WdsT=v!F9Q@0lO+^0N%%1-gdH-M6hX1##{@)js|9|4d?R;q3&}h2H z)CGM~&ywS%=JfWcLD@KC(t!L54RoQl&GaBTZG}s%7<{#jJgh00AUTz;*~SAl*XngX z6K;ef1xakG**sdIAQb5=a<<*dI;R1Om~^=kk( zK^Lgf1$AaF7?M^oh4N7Bb^fE*0p~!Iv`vnCq*F`hjaSGVq^7U-i| ztSVZoEC=uw)tg|8M)@%Y2DQQCFt0PK%6k~~+|9qp%!?xRy{LX{ix3%UBKdN~O))K> z+rM%{aqE(1{c(}K3!T`o8}wwGtybiGCE@@Y$>C!v4B7Aput`g4LE(13*_VWb5_0WD z+C`Q(_wjf6Q~9rXBTHUenD!k?`mwvY6^&oTgeeH{^LCc!o)vO*-xH!kEMD5rf(~oep%lO8lf+$K_$h!vXVA;j=nz8=*zA z494t{{+|9d5%g2DAB~JWm}}4G7cy^LGqntLemB5UNf%_#8mSkw^5x6hD?hH5EVMpd zD`9R*X|aE3sCV23rMZF26rC${)OnJ@b%v_a_K46bz{@OTVWINRuiV6%$I*cfqOsY- z1-C!kJjnkd3N9(?wusiP>l2o* zM$jLE7tcpr+>&KBhAfTx+`iwb%+xV}7Y12cwV1Sw4+=Qbw z@`-F|Eh;_p%0SHQL;# zgTwvni%gA~h-hYR9dBAOUO3lN!$Ux=3#-%AYTMw71wBw^4&xQPUbHfaC=?W%u)Tif zCY|rmaMVFW0Gu^(yH-!P)l4-ppZth~#Em;zq&)Oawb7U$f&6AGvCmXWxraXJLUAZ- zK`*I{2GeKJ#zsZtRu*X2ANT8QX!j4K$z?Tbfx`sUng3;Q6Jgq1cYE3qJp%6Z^OS(~)yLR8*FyS46@5afkR`W3;c#g|3-fa*iP?rVpR4xITX z0P3stAI5&)h!IO1s4rwMH_@69Qvq8O)E>UMAs&kq=?GLM>TWLLjzZlR+ly>)1%*OD zro3mfTAE3Emmoj>M2UCVkD3LAmyWgp+Zv&b5uER!0p=Dh%3r`oq;rvp#9E@5JEOYg z``vP@C248s1Bq%1{8hf@J{GZR#BXfoJ7M`7LrgU#0 zVz?(G=Ws*Kj1bV+mjz1E-k6mOVhvyf^kqSQ8WyX&cJJ7DFLL?6?<*l`Pe7c@!#~;R zWFReH8M1p{PKpZv7#-Pl5)IDjCa_*iN8z)3ZO)g*mH2E@2pjy8V&`utGLoXrLy8gO z)_3Q?|9Oa*^h#JDa9Cdb9dDUX$uGNIO z4IY7N!-}heUOx@=yS=i0~_@kw<@$)`Z$6M9oRSn!y?*%~3v$*0v{s`$eM%l`J z8+lBm)^g(S40@QE`Cd~WK2ZC3P)<)J9^*Z-ZqjY#(}i-QDqy19{J=7n_oGP8EnBO= z^4B_uE2+9QZs$n79O@`@*FGr6<@Ezw6=tTkdRKWIHyD+o&Rlts1)Yn;lhy9-DS?=5K`6}-n%0@@YM&dOha#vVpHK7+(p?FE786$CN z20vIZ@W~u;(a3LiP3%JrC=Q?5F1<6$igTD_4;=h+fMQO@L-x{s*4zQD>vvb!OYI`X z7n|N4xF;=!6HP*UL#4(yvpQJ<&T1Vr6QuZk@84qw8Pv7NvFnzZ2;C3mcr&JVnkkCQ zpogHUB@ShY>w+tuSvoiQ-wZ z1JBS=BgJIFqhXJ-EN=Dz5tjQQt6Wh0>S3v7j| z4_&(?@&eL3c1zfEV<8$|{|iU)a(G&0d7Ek*djecm*7O2}Y0DHPWSz>ViF`}Y&TZOd z`Q{f{gtATK{9-0emsOL9G@F6L&_r6KH~PmNhn1$P5&Twdzv3~GpL`^w>CFHGL=LU8 zx^NKpux(YtZGFF~23-bujWOjP2M*4e2tl@KSp(Vu3GarkhJ7hF?QHvVs2{z4a>1=5 z0_EAvg2(|*ON}oqdfhi#%lT8iHx(9FNSxmt9L(_vH3{&dASd6~0fMSBJh8w1`RCQe zM2LNMrKiKqHopk{fC`+{-`J*)rLiYBa;-(qWv;Ye<$MNnmKhiq$*op~s54%~nd_@ieV|0jPc z*1vjD>EbB**kbH++<}nFX=<>02zL5aQZkt^{V+3m#fNcJUCWg=ht=rIh3g8^t{s6Q z&rr6r4+f)allI`C!F;RMBeeH2YJ(S_{!K*`Pd9soJLTP61lpgkfNw_RJP;Fmq6N=7 ztnjEBJ{V|Ps`njg=G!?@Frs;Nxt*TGZUexBL8a^>E%nxS zVHkUDnUsY$#J_squ8e{lXKQi=#1svNA=+n3e5 z?TKt`MAG+3dvhdCKKn5YAbaC}*(kUun-aOce&50&i)Mw_IrGmva_eq5YPVA2UgmBj zKJdT4&=G^2RU#jUUSRh;Ug+;sFNX5BFyxVF3+m_^>JOp*8TDmVt6DW^p(kaSI7N6D zRftv>c=}BTq)GmTTPnOATBMPSxS=Dy_m+rb|hhYE7q=KL!+eGo`~?tIY}L%E3BLK)cp z(;UHL(1T;Zn1X$78E+hIn~TCkPS2H^hyN@gB+gXI$Irux@h3l+nVX55YoHJfZrO%U zm5jQuJ~YIBi*MBgof#z2qGVzX^#6(Y(YNyky>|u9i4HQ8Fp!BBi%=%wEz{t#^;KJQTH<5{Hq30X|nJLSHse={0gu;3r=4_!R`AyR(DkLMO@9JnVzPR zD^>nwl10Zo5)>3Orhu(Pb`g}9La3kSlZL|CMaX0hIR#u7eWdIxbz@(oWAK6Gc&)VZ@ZN%iNKXF$}~F zJXp_3J}?RaW0bj*G6kiI5`S@so)wBh=?a4{NZ~9qE$L`kYd&*qG^Pk@MWR*>s>}o& zA>z|UDC4)JT-Q%EE-p&@d<~l|0bL_jzHBogD9BczsNgnCC7`)nXx|)loquXA$X@W% zoKv-pA`9i&P;z<^&-4L}Q8q*0@^{YtAwoTeYtzd;K+j6)<=KAgo+?^kYw=m|(6f?M zQSfrmC8}c6OQ{O)L21lhH#2gc>7r;3_u* zs+`M%of}9XJ^|hf%kON)rO?5x*yIu$Q4ydE-HkU*4)J)3>4FZ-hgtT=-6Q9&E`EnQgPJ34d}rj}x=AH3N3 zsZ@06puo?Y9@PP{RAf-k-H$zC{^#8t{Xw^a`;SK!H{%a^VV_aeuu&$3f6YEDC|;_J z-5++ZceU)N?I#af5j9=d;eTgJp1Jrw+zZa z^|GzNz;V)-FM(tgDp)A`6-lY&1`3jDVpYu0Sd_ryG}xn=GM%(A0gB`iNl`I7^WclX zskk8on!}WSnysy#7k zLH6=$GUvi=4Wg^F>^$h_o0_xCsM&8-?9mKa2A)A<2RT@a1b1_1UL=$gpa`*JMLvHH zSQ?r3MYgkf9I;D1E-juz@@(ibaooMry?$EVAo zEn6O&dtshHbbwl|fP&i1*vIH3-N3qWjJD`2OJR5UXepZcc_rXvFJ-{K*P$bjteMjnDDzY*iePqmZ@yc2!D|-@P=Y1rK0=U z`(gP|Dw=Fnl-}*+#~R@?Ync=~v^oLyIn_?>NwF3pl(Q>@)dy?)`5=}(usjko`J1W6 z-jC!7uk&ku?!~CqH)28g!mGY>O^l85GqMgc8maoc-uq~ZTzpC2&-;BFv=l`={pI_U zsB6jC(+fGpsr`EFCDiQk9W0b`ZH3HSzNE*KP};AH?xzZlnMC4 z)&EA_TL#7X1@D4`6P(}7x@3z-|e|(rh%M4^+i4n%()!X-Md1t?w)v4m);eHaPBC(AK z*5#7<1jvySXG{{?l7Jz-xAK4(nn^;@@Cdy2W2NFoY2sXl9;_xmxv!Ojx8vs03dEOr z@If4QL=6wtZTO9%Xf%D|h_p^#sfXM0=Z~I`PeM)2JdZ2HB$3B#9l8uGo;~B!;w`3BD0cG`INH$2g>O~>G|TO=g%t+B2%k|u-OPr z`GZf``-DS~0!d8J8GOtvf1$V{6=~IBbEgiW;%E8tP032c1pY?OVeE2IbmNYqUQ9$; zDy5VT*wii17+caUO8&C*yqXINb6N%`<&ocVeXeiVgMkA0q!a=7EckzKtWRK_3pSIJ zR0QdyKT%Jp#q6ZcAq&KOOEwV%M(=XLUbct=C_MVeA+zV~x($JDh3ID0riR^c)e%)8S>YCNgSu1 z$V?>Wi3iy<_DxDeG`3o0Rh8D&3t5dx#JYdDOwhoV_BuHuNjRaXCV4W?cQg=q>o>IG z^$F03BEvw+(e6vUJ%^fjPJ)(@k&vMCZHzY;Kewtpta1}*G&hy@_OFzA%W>uz9a28r4n+BogCBjEk1Jg>ne$5CBKsI{< zPQYYlUAwKrTMU$FLHaJP58dj=*#VLn3^yl{(tu^EhT;|LhSD-DU^FF08vYAf3Mm?e z^>?ENLQ)uU33zhW+Ki!j$~`*@s7F{)k!aWnsEzXt-{6Dqg2DaClg}hXdLK6wC;*Sj z<9j5Ep_=f|HZOsm$>=QhEf$M=kT7Iz4TWuM0<{_hAiKR?EAVi zA3U-xTK%P&QbcYh!7h2Cw!KMeZVD(QHo^)=d%T|s1>b-W0N?YY9L{hFlQIISP8z{$ zT!=PnkoT(;@2*N|H2=Y5DHrTyr$g}yL+x1dpTHAxWI&wGy+a8xuBr7Ac1rKWKn#k< z@YUcPlSaatHh1lsT)U`+nRTTA;WYBvx*QG`)^O42*1XL~PFI@e`yi_lCDXXfI`{83|;fZJjbssl$`4{qWyR~~oQ=8Egz zO9GT--k-)RZgD8n=HT$@3C16hg1VkhhPVziR~+XSR_E9a0|U;t9(*A=h8>Hux)lP@ zaZdRglq`5Z2izzuSeP?5aH1Ajeuj7SaO1I#IsQgzp3!voWq(dx8!{f6O&>|u0i9V3 zSQts+;kN8x-q6|USvl&fKN)Ir*jx>pH3@j*5%>_I8Q($eBK(44LxN7~@O+L;Y&i;* zKq|6GmtlSykSEWJ+Y_z(WmN}GXG4$4+;I;6)L8K({g1l+o!$&ut;SGysuXNDyM4>7 zn!bYb@3kp)t{WCn8`Nf&(M)5FtzvtdCs+pDK!`lUy=ck-?(?Fp;s(1X-bE-tAJ~et zoVbq}4o=zar<>3h_JT!(jmsmlwY88yIL*i?(&7F)iA7XlU0wLMHVS1$%};nL1d4;Iy1W~$s$%f-02*Kz9rw8LH=KUrWN(T@_?gAOFW0{YAg(_X z{VYONrw{VpHw z;pp)<*nRl6#zMHOpuD=J^=2JW&<6j8`%x3>nxRSwYp4?Y;VUGp{!$v7$5jByd`lq{ zI;(SOFJ_Z%D4-j6+^EgIU{zTRWGP&tdB|DgP3a-7!Vp)`+%6;D<`l9%=>hTKj&(B zOq}27f`EIqoqy238ztPINlxTy7b)xa&uk(WBR~C?Avv_mpQ~chUX|I_ zrjmNGFX~el879gN@E9uDq2C6@451AuGKW~pakIM|*d*+CdXRjQPiNf1V%UOKCyW!lr^kaVWb zGu2UcWh6~vrN>Bl!-ngl!4oYp+^43lT2;-*uq?7T!FNk}wNeHf@%f3wE>8BH>t;1v zddwg}xk4xhu=$>Z`$O!z)`S@^Qd(98?cBgxJ?M9t;(Y2jOwC$)5MR@)$y6dPv#wP& z%J2=Rpu0^Iu{c9zIsGVF26E99@{wfd7Xuof&T>2Z&c!9y%1*tnP2+@5F#^BM%@%q( zex3>0Ye`Fc)@{I1?3#lu9-3ZgK($13Wkw}9v|;n5%kX29_gS@W{_nLFY{Qg-XZ~dA zx~6_It9FREmSXG_!2Zp`$8O>s=RV~wH?LvkU>BiDnTR@ry__TD8zvU?*`hUx#d3QW zi*|j5rs7ktfPHDzn}f9UhFKbc1gwOLfF-cFtfZtak@;*A%v_mQ_BNNKwF`@}T0a0Kk=9;5Yz0h$l$~tZoV0nh{EuOM2 z21YmeSrCyrBBAQl#$Hd z>_o`@0lu!h*v|VGZT6bS_R42JyZ*&>%kuz6KZE+f`EH+zhMb%gf!_VJhYqt>VN*_JVPWSAy4<9yi^#BMqQ@D5Ju-5YW(}XyCo*rvK})fZ{eHQN$&D@c z{bD>@%VMBXVq9LxTGbK=2Y%x?MiVqa{~7Gzi!68G#)Dzqq7x zuG54C%<2*-WGwZ#xRTm=E?89rKD_*7EtUGT#bTh@DG$Pdgw5HSk-o|LK zKgvr0MAYfJRaxyk^y>75A$1yHq}*Vgmp?uLVgEc}i(IL?H4^9q!XN_9La9imD$QM;%T39l zhV2$B#tZ>Izoteo-T5I^29a-#4eURb;uI2f+Srw;WCjY+ub-O#;>chQQF?KY{!Nm> z0yoAyd1VNnQlT2C^f5k>`LDAc?U48bbmP>7FJ%P?$p;k{lzjF{hzyiUOK?NwOVs~7 zNCIP*OC0c+??61xq-G^zL! z=1MabBmVtCm5|`?kp2?n{GgaU zura-h5#VF<_F9mZa*6=5?9HWAWOwV(2|XS>1M+^^wfwIi|7m_>{~!5jS+1FH=OvO= zB;{B?eB_I&)?QvK)xRaJDqY2Y^oQuE{E{{DaM%*K84qHbq6xB6byOTYwtwOxhC{Oc8z;D}t_xn7|7j0H=7C53KW%JW zFc|PZ?b>ee*#4&-4I>IR6#u79&kS~v$N+$x)3X|ERm+q1N4h&I-u9Xj^qtN@gNR8R zOBOO6I8Z{|o$BNAJdic#MykVzn&XZ!r!ERj1e;vl5|YgD8~g)15%2;P0s{jhBqT&A z*Z6$$JfL*>?t&0>RhVDUUpPrMd?PHqqe*hr(qWl;V6CO^``xphR%~dn&>KtMwUz!( zH7;wp^OTO)qOVZFFZa;n+=%ltgsYwCjzK}$ z92Q`kIE~^mkIOHg}*btUL40dkraenXh<CL@E zmNt+>GZrHKL2JBMLc^T40yI#9%_*7~Otb5Ju0-@?FroKY44l$wl_~qyU1@4m>+UuV)hcbfrxFk_Q6&LKYx&pj3nccZLQQJyJ$o$0olW9CxM--eAYucbhZ z+uo1NstP8?@@--JW#a8vB|E>gSRw-iWO%Py+C%FXZj8j>$@UPR3p@Sb$#ndfLHM#G zX`vDRJ#-9K{2pkbw+jUn0W+Rb-dP1L9aAKMQbsP8Yp@we!m30297EA)fu%O5_sU*T zg4_n}=VwM#B!)KD6cy7sIJw~~c zT^0g5))gk>pS`KwVgmzRedv>ic4_M zQ!m4H4xwsdaq4AoB`9mTmBpwO$wMy2nuUV*nU!PTHTRk=@A!55gr5hX*LhmI&z~fS zv?$l=>Bp!Lpx0SfQ__d=BlnBvMj_Qq6Ko>KbGqAgxxrHV~( zUNNJK^}_LSCq-=usQ|k42x(Oy0>aMMEF(q@PQ1(hic1@vxs>;C5q0mWXrQLN+;#uS zZSe#Q+#3Bwcm(f+x`J%#f+^t9RY(6f1fo#ktm$%yF8oeUBZoj4xN^BHw|Rqx|mZ=)6RAAgEv+fKD{7?D4tk3Tw6u&!y zJN;_!$6x}!YzC{S0`$~x5QTlrNE}mrY1gZ6bu1`wrSWMhDmfm__WAKsLeETnQO@Dc zSVwSa(rT^p`+6^;pOv(gpNP%6vxP`zyx!_>6|T3m{xjor0mBmSD2=g}E$5ejYUA_8 z2yS|x>{E%jf*@4dSyh~`feMLYK{7k)4BoOdoVbVe5zZV>84MALs4xK!<0>rVc))x zLA7V#q=L7}`FeaMd{7_DWBTSNfg>7vhAp2;);p9bSS{>Fx`^}LfVKO*5keCg9zFsG z_16SZ#H=Pq*%Z+uKKB#zT5cEs=vo>jUHqnw%_r+Hrq&ncRVyM1u8#A3C3W5V-DOI5 z8jbxX1jMz~OVD^hvpdK;nNd43K>)}aDiaTRMFBZRmCbS~tNhL^6qB#ESBykLbDQM! zE~cZ|ibqM>AKx!qaUVb4)@q;Xt2NSS8q0`iV2J2(OlwRm(M;S`g?pn@RC=!*q%10| z_b9UlYvhif#=i?jXMgS=o8u+35x38<>t?|2$%$WCcASBlIp(jgIGJ)=_N{Xf~L+h3Zvz*~{J8xPGNg!#vn{kH^9% zrAOknd<$7gW7~Nj6kaIJkSF_^HZFoD;$ykKpHP&7!1By=i&U`|jk3AB@4zZ5{x3A+@wmiwwUv+>N^bP-b<&%YJ>SJs)(YpEN#wx5r> zY~FhYlvZz}j`W!4mZ~1LB3QQ|_yC=D9R08nyF4_WBo>XHq{UXpkA1FEYr1cC88_=r zLTVjDJf(+-{Cd*)0=mj-%$ThdpB8UJG6&Ysr{&2iJ zy{=IelB$5{5kvUvS1ya?YO*jGW{7|<=@>4e$J3_y7wgSKW9Dou{;pA3l9CXbpbi{*W*j@;vZA4+a>=lhslXQ=9(hyk ziWuR<*ujxFcKm=_UXQ?A-u7;HDmHwq?TibkYa*iEm4k(21fiU(_H6i{yz(U}a>Bpp(BSgOR`E2RgnaBjTZVGY!WRyndummIdzVVtX*00bmzUO@pu+n>xh48 ztsRqy&5yu=jvzCP6%s@CS-O_i9fsG%6aMm=uWaT=kehHOj>2s7NUtUJ{IHL%jYy8% zkMsBP)vz@O&p2LKpR9D&(?d@TvqEH7);yMO(9U<7vPH3rXg@yrKifeZCbc7$aw7m` zl}2-qdBhY=G7P?Uol@XR_zCijHLzC3?=j%;#g%a?8`3aD90`Uhw~?p`FUYkii@lul z7!yG0i^1ah*N|5;sS>bUUoXy^{<&&@D82C}Q@VX<>L(?3kZY7`rqOSp+(>k=O|DcX zHOzz={>qs|@Mtf8Lcr}J-J3RgQHHqidN>iOKiYMIysqeQE*AI|ElF$l@FV^i$T%zi z**E8hs{?&>ZK(s)Dc4KdO@;@q&(yyB5t4i!bNkTHK9;G^Fs@W8?Dk8LNc;KT73)Ms zj<0l@O6hjXv0mMmDLQ!Y@}#m^8#^-|?F7Wv?+s6fh(dTxQ#|ra5r0Sl(w58jC!$Z^>sV_&%Vk3wP9RT4e6OA))9i1cIR*tB^ziS z13tkJu;YHl_9cTMAV`971^w8>c)36SW8}@v&-H@d?pk2LjD_ zxa#ANpSh&)LN?Po661;b=fTYrF6j@nwW{J)ki}u&~CdrqXwj2yU&2wj?xM~uZDR>Y8yNp#Ld3w7|aYtNWuWfkaABG*a zs5JE{+G{QAEDUbL&ntq_%1v4*QGdDFqU{qA1IYbPHgk@6TomigoywNEuE^a^H49sTWtOTJhB)UIm2_y%_m-Y+CKsvsHvPZO)>TWfVD zON$W!tYVhA_BXulF3PE*usx^9Vt)&^w;hw>zkx!+jQ|)TYB|9UM12>+Iua_WNCK!+ z=J_*Ff>YngksqZZgy1*P#(u4Ry4N9zZ{3o2edddaArXeB!(<&qE2MEK8*{RrZK1dF z)FV}oBgA~nM3GG`5rXk~kaE22YZr^|ZFjXx`o4 zXAPyLCo-OUeC_-M_Z{PUMCy%ERxWM;BHB#F8cfIJ+%$fY!#B$)-(&_)i0S}?2Us1I z*In(UAZ8%U6)Mj_$gdmI?^Cif{dth+Tb((#sUE^oq_fp{Kbv!^tTQ_aheA8h@}>OF z^9CdEIqE9&YJ|krSf!Uu7@jt^NYv!b&ssRHK={>(#c>wwskVfH-BiOG1h>bMPVDH| z#4{3y7YKMiE23T4x$9%?xGb;Vj#GF0g!S_W8EUT^$FP=onSey_PNrUh5x|UOi2|E zDQ*cx;P}SH2ta#YwPfr+;C{O@jG#TTyVe8fk#P~FLwB^J!A2MBVkH9rKWh;(QQ#23 zngHOni4&rp8%T68Y9(RWSVu?bD;quK7OvfnfOOPC^SCM9HSI5;$g?M8l5cTS-k; z$C))7maz1_XWl=^n~wTsJp@4vf8M|T;r}hq?P>T&*JHqgljgr%Y6j_66>M- zpw*ya%de+jci0OkRjaTCjrbz^?n5*jZb^d6NVdGgZW17{Lef#@u->fUYWbgoB=n&F%5J~PeMtM?2ja2Mcr9V(@Md( z@)2$2=!3N2kviRzU4*`8N56jxOeg1DLkJ;oeERj!9DD- z)ZX;p=Nx*~bwmZS487tceHm*vYZ#bSvp|HfV+0zcaQi(-C8SPF8uJPeA|37x&n{WB zG-=S^eP|?$8?vjHaU@`Yt)xLMZ4RqzJ*?33c8BIZ)}q>oo0uR~7b+c6b0>p(yat@E z;}e8yODmJf+piYaNa`bgW`tk-^k)BLlDT~*1zp*z;{#|YZ%PNp?uO`Deo8dD&YfUF zzYs>8dy3%d&Pfy8s0j%ucckrk$kqK0DDLQX*zxm4yXT!EJdLMOGJ`pti1R*$CADV7 zejHiB~Q+0@~-ex$ALROYx*%$~z z%1YGhF;%fcQ81_xrg2>Z9A{^1w;Q-#{s$HQML^-mI2m46X=HKhH`U%D8>5l5JKMzq zC05_OUcLA7Z%ylvdn@a--(xG-RPXzKS5=5DiX}S(neolVb(C2ejo&JO5xPCb?2>S> zNfZFBrMmWb)&Rc0RSA#UId#f0-pqY$9okBMssWOm-}Jq{Z|l=cW%ITbxePS4yfsh; zqkhqCCbk}N7$U<>!qY1br4tFsovrnTgMI7*QS?O)?lP8twOC)WGP^Q5EzcQ>Z-bW1 zQwgG$$kBa76fcuqpFunS^$}9Y^7((`hW~{5@1Or8Soq&>4F7=5xc|>_$p2q=J)(~R zPZlQ3Md;L`ndNakVv^;F-F8Ndb>ZRt*Y9F2%j0v~HgT-Y$D71%-`H5=h@pcmC3wK^ zjnmG8WMQ-5;!d|CR9W=uwO_w|`$k5lHxf%xW3jFw0_teWe}R(eP%0b=)^bAq6y%%L zZsP29zp{1y*rlKJ5BA;5{D_< z1ukv$Z%;+L6TFSe4C`YNh081bw{vQXXM({Z%r0TZZV(gLtV@k+r?__AzR%?l7e&82 zbBB;P-h1((uPFFxws{yGyfwji*<4l$2)AcMQ>zv-xKs1H+P=@mCD)rpsjMAxUpd)` zNT{dQy6>7u7kQ8aq93PMLFHOrItXphIhWJfTeJ5g;?&PK{|Tr=1Y?{fTixk(+3$!B z=-sKl?WziYo-si=A5Ce|-x|rv)TQ;lHar;L3t)HJ;E1>W4Zg_#;grZRm>%$Pzz}%S zO7M9eH6QivH9?ls6qoeOK1#@9+YlEnzSXzAzPM;Kh`3U7q`&gZ2pedVMlwoTOYOC-tBtLZSKIQ&iry-`1@U7-1A4(R zi8|5PCX?WMmMIJ9BixQB9xQCsOVx?7d~NZ+aQM%Ud` zaC2+|WuMhrN>rOCz~^e)eIjqwTkY9qkSb|o=JdZ6_xOpK>^LvsWn$*fz{JR`M3$%KU5uwV8jSGxx|+J4Ow=cVfYT&%*^Uhm zPETNh9i1o=Zpvp}QJKyU(1jUiJt%z^yd2&^eS7Pl{jm$qYo_t`Qa3Z6a8keHXA zl&&4|N9C2Vq-2*4CiJ(PEAXu&2e4(xxR7aj{NVR%)T=)C?-e2T5%1F+VrmA=lD7%o zXVxYG9W#BZF}}sSwN^zCN&s1?+Ozl*Ynw`~;sVyk_Q9%P7ww~D)%zIuw!3O2G$6Qf z2~|_wc@GbRTzQu~_d9LNG8+k}c%Sj7tZ@i@P&Yzx~ z{BorR{Ypn{^q#9L_Z71P-)?m=LjiK19}}K5yIH^Ui=|kuj&&X>Eb0txg7Or==q8#- z=NE+W&d*l|Ylm}mnNO|(_<(21xThuyZz^k#D=JF%!Sbq)>kTn4O+CY>#3d6dku#pF z1C8aU-9FIdYyqc{?`^62h?qw(_!aSIhspI`QEh*Fe{mKE5+b3|p zo5h#aCq!uev`}?Ik1Alop?r36ULoyva$~$5g2MZ;dzdw*2hq8|pp#jfl1UR9i8NTw z&fZw>$#kL9Bhu`3tqNTH+VLnAgWp}e5qX&9&KUQ{<)#UoG|gFSFa;{~d(vk4Ig`u5 zzKNY0ya8n2w%hzHwHA)dI{o8S&Jeo~*B~N&-eijUW6Kz+mm$dgb^p+*giKrTs?OWn z)8SAyb1eY{N$Yu_tg9jIo*?C$#Y9?T!Hc#)yDwH{mdo7)#xavBzB;ML+pLD!OXiEK z6t2U~ERFl`fw8GQW}oh;Z>))f{LN?rU9<`V1rJ~H%VlLS6W+9zRo%NPL>CZV~B zfN~zQlLn;V5QNt}gK!CUWkS&cW0*};dYI^bnSwE&<*3LfFuY_Urf!=L^tj+&c)BTi z-**;yZlxM)!e?g{WLL$T2jFthm>U_l{y=}9snJ;Sei-w^$#2T--U}?S8)QmvJt`q7 z`^~8N_<-mr86kVNuKsmEBer=6U8ueEpLWve;71VBx?RuNC><%V{ektnLVrNRpm*Hw zAwtsdGsb6(T_qX9+Lz87-DlGzCL4{mqeC_?hlQ7!$@qp!joGzN?~1_dw=u48sR?7L zc2G|J)cZ-c>wl(YOB*%w3yj^((JicVS$)t5a@B(zZhWn>(FKXR$sO}gX=FA6nr`}$l4l~^g z72JLd5Qa!y@!_U(irgiVXVMDI(Kh>A;&KyuesG&D*}QeVc=rvkZFRVH ze~7)mX^ZqU@yTQFDEO%L>63L(JEKWbM_yjv=3P?MehN39PBvrbgg>fa=ZR!;dgtRx zL=%6~Mo3`=s@F$W?Ymi$@y}uB#*oYe+5eoENYU|5>|e(xIjvdzp4za1ddew-74FVy zY_=FH30SgEvgwZxepJxtVE>XgYnA_HvDWNtbYqIoHuqjtnaUdCS4z~G*U8n$p_?Jj z-m-<)bDMnEu%UoLjjCI$!Sf(hL{%1-+Fjdtge*U2!wF6Shce&3pzYrz;Ye^y#Xjh)qAFw1u4yp%~&!fbj#~xB9ROosqZWQ z* zLX|HPY-`cJw36%S7E%DXGGtmbCz+A@n8BXOr%w-$M-M?vUFoG$5z-xE$f&oek%S@A z|6J-}{&Ql`I0JkStAmA^%=2DwI2RALO2ODJg#u>7Q9pmP1L1#m$*}4VMLdweL~BOW zLx$U3QI`=eELhXxoOzhBZVVLl3_|n6ICGjO3ni6=SKY;m<>Z0CmN=r@_rT_$j z=9LEf`}-**6aV>IP6h7p(neqZNzf4?3cfB7FA!!22HgGqq49bCBh09`|1URZErx!nfA2B{yAi`P^f&&Y;3p3MOhLzxS*%* zvraMM7Jggzvnh~lc+?PMThQ0dta42&&G!w^AmcxGYq%p49IX5A#Q(<$dLR0K%l-lP z0Z;aSbm%W4ZFF{PL`}F(29maG2?gh9z?7bCFcIb*fh6tu9NQ^VaB#eFiUF>lV4y?{sA8`w@?O`2bd$o2);sMMZ`d@>vkY0-r+<#3{(Dbk zVcd{~*W0NM3Gd1>HyaR@di(+T*#H9qIF$0-n6o_3Bn0N^w3{&_J+5nWNRx-TT@5_B z65}Hiq!BXwWAotSr13RzJMoq7=?H@PEUk02PrbY@OVB~jnus$YZwd!|tYg}}2XKng?~Bt4r%C4NF9(XDs!JwP zu6ZMF4e#=UrLIbDr`nNYIF~3+3I+Ra92{tY}wf znuj&h*v8IJCzPxkD=w|;s>==ACYf>GcbTX3j8==@$-&e*e&O*M$X!ZE=PHp-;j4%J z%5(UC6Qc5u#xs^}ywMoy{eJjiVnMbEY+vVm_}TN)x&P*}(Xw~e5LF=&CH)4uhgUeX zXgrLz*U^J1%~Gi2VXK!lG&OOzL2Ns;C5CQ){^&5$^oPiAGf>9zgrs4RPE<1 z=`w6=8%{My=`A_osfN?>*mmHk=B9R&3G%F>pZeH*$=aHVEvWLc{C+P2^YdN!;m6|j zEwB@7ih1hpYisPT>LU@x^KTh;9yz(zvcFj$E&5A?3p`k_?Xus*emt@x{^JcHF?5@q z9l8dHVl?%9;silIcS2v3~cso-nrzBM?K`TLa^La!#Oe=i7%VHfQ(nmv!9721b%a)oGp{J=Te(#KraMmcMKWI~m;%MVM52AA;^4px{v((;weloV=d*_GNI7 zZ2arbx_N=>;2 zD3TFkH);=d1-r)#2As`SbMK|+$pk^i`|xU5KMzulpY~-{6;~pXX%iQi3driTE71k- z8Bur-BpT(DA#kestR71mhfIxHZ;DA`nMUH$ki8y<8ixdHmL%(sY-C5DPKedN;aP!c zJ|Ba&-Z|PZIft(w&iA4xCqeUICSXSOI?LV$=)}gK4J>(AliF6tpYeUv>Q6p`#-}^3 zkvM=yxV2QqMzyU5XV3Wf4w2mk!mdZ#`%ySd0IWu22hpfb4*D}a4kLIVME8}QJ_o{F zo8~9@SOUaH;8eYbWE1B(lLuiDRvhk25wh$nDYSTKXWZU}hjk&Dbm!jf_lHr6wHE}Y zFMY~u>>A$siwI`k2Ik#swg(k|pf@*X7uhQ(rrNzrZNLnzhX`QD+YpL7kd&QC(&ftL(S}JzRefV(%Q~5kp5K3KCgQc|G3helSnUWn<(TS-Kwo<3?R4C^`~4!yP(^_*|L($m2^SbQn2SIWtF zcf9khM~NaV^vaoOY9sNYi(gE>2parW=16wfzI>$Q>3{Zt4m85^*K%4*ru5u9(O|Fw z-AfeF1N5rT|9;eKx^_Jn1e9;h_8pjPkN}hXz7s{@d|Vbiyg$mkEJRjz$||ZF*Lw6?wzQv$MT9GBck)0-gN^dQ(TIzVG>JlOR-F&7f^QYBmKi~V)LmdVv2a! zU1)PjX^HZnYI@iw8;t4;QoOx=KY@M6R$FXdy%BwBwqG|2J zDdY8UdO-2xFw6y9JzQMK;lXqB-n-T9g%RbWEB7O|%C4~yNqmP+=hb4%C30bpmq-xb zYu4EhkAKPWV#_V)3#{b3_w(+4qYI4--HY!%ld0pRj95%!L<@)FmKV5|iLW^&0&!V>d6?2v7)h1TM67!>8ug7D%pd1-Ad*ZQOQHXqSn)u%{8bZ&C5P(yvsvRSAvWtM zoV7&dCf18ut_Fg4B(gen)*uR~eHm-iF8Fj>0D5a$7gB;?^X4d0JsYZv1%j(Ed<%@u zTc{`;94Sg;1M(iDh6WIgN8keg6XUeKUse-Ju>}EVs#0ZSo|T+tX0clWf+05~K%gk@ z1fF~pu#*G9q;o(@>f)K}%=X$H+R%`5L2f0}qiulM3QovoeJwkuP3qpd#^c%ee22_O zKE?tyzaRIcUx4lB+kLf9=;GGtKtQb4wK^Q!Lu$&_p5ScP$bM%G>%*fVNJ8tOYt@0i zp21M$9=gOEPTCC9l@y(TT(;n61;?}6fASodfbV>mL!6|rS&vWZt9l9BVT2sPPUDPn zw0&p=)nDV57ve(?^_^)epE5|c>E18THcy>>-S*c0cRSBev81`m%0|lUGlw^jWSJnX z{6}Grjf9wkw`*;fN~I=n0;@IBix&699-^>fq`WL&wd(AIYXzgk&BilCw8UCRN25rt zRo~N3fNyzmb_Qr(e_9f~0!@mjEqoa<;Jgr%y&$kqIf{cbI~mznrbq2W-&D92cIA<< zo{BW=n{)!su3+0-r&!I`>;z%!?6q#9HmAEEk085p=U`SwmBw;->?dXUm)L~9DGk;` z(=$&CHTP6$jbai!s9y{YP4!O5X^Clg1(OEu`kIa3{vc{w^PbaI>TE^x&bkdBegX2QyK@aHiA(&@sCi z7FPX%47-AIOPhwmJqsDfAASS2%9gcxlCO88gZv_|_Lt!7f{6?@q6)AJE;3pj8)T;^ zg?15AetPUaTc^9XPDY=$)Wi*@zX6ocie;UW7OGZ;ksFAQiRy8F2h?MECdp*t(-i9{ z0{0BnjREV{J%WQVa3q>#dI0~6{+Ve|ZoS@sgxIoc?h~D=dWWm90?pAr@&0m*mF(2- znvmXpr*TVZpmaQsOUwB@X_tr9cfI}lC zGk?xxK=&;dlX;wL=!HC^h6GJOmie&CId!qp+stT%#IIM08J$q;2QY0Kwz<9Jl+VV;CuOU`pNY zPGOZ$Lpk1~+$f{OjdF5rhhD;r5XjQH*x`}U9B#^I<}dXqw^92jh3+Fizi5B~`J%om`Hf&sCO6sW0u^4)+I_Dd~&+lyFm zg@3RDmMj$VMMCC<$+9lJ_y!2*X{eai?{B1MI*hz z*>#Dg09>r%Uj45xl}Vj$vB!3qJi}juebF)|2p#U-5KBSq=zu^b#yyWsx#vvWBnE@+ z_Y=CA1L`IDrn%!O1~!{?2^e&|{v9tSAf10TyJS}X)^0ou&fSIHuY z%Dv;~StWJp%U1vOzrFPWj0hsZ@$>V^@PHpayGnp-n=J}z=Vez|+z#QQ$$eKwi)zUnto?-4jzD>vdJf|A3<>^`LsNN6* zWu)n!y&Z*1Yf(NL5m%p=(>KWq@JB;4qa?A2#lV$_axAxj8#r zwjo;q9OYN4!Unr?5tcSjV+rGr^uN?`R_mFau!RIA3hp9{kRl3WGFuSVFtEn(8;QNS z<&-pHhE-!pWry5o{Jv_YVcI>&PsKb*KV*wt008I1cYgQ#vz5B8xr+2~0vFis!@E-n zdN+U((u6dgvl1T116asqau57O!EkV2hEDMrR!q@?i}z(+2(QV2KBB*xaI~z;$|!tj-STq-+`$NRj{r6$)WotoXj5PD@v0JgzI- zQwm{NaU}tv>2oaPff=3npWkx-&XXc;X6NLC*>7N)BvAe$2fTPPQ}!wB*|*;-Cy_WZwf?D@RAg7pk6CZE)AJMq7hjHEXoMJOBufl zpRa6r$M2oj=*&;28x6|+x`GG#8Z056FZZ8c*Q_{jz5OCT(U`ZowS|tJ+nN|^oRDf< z#V1}9$`1fpR2*OtGwq1DAj0U3pN>MM&WGpRqMVVp780JGA2 zCL|nv1bfX&rl!$?V{mclB!od^uG(TW6IrYjq#4nc|jQ0~2N~A6blVeo^{H zGVE2U95FZv;#U{gQs|0JthdSzM}c|kd^V!tkeO>vKJH7IgtjC!`}Q_Ji>m3IH7uwp z_AtGOMV;-QN_5W`hsWiZ%tV^PbP?iMFrnW8@i`O20Ci`7irwI6nn|23C)vADpZX*g zR#|I#ofBkCEi;9Hsa$GGa(q8zt3aB)&Gh~#avd9fyC=@b+8T0A>c^VBk&j(MGfMR4hM{g5Nfx?qI~xB z4jk2t1<@FA=w7Z-es5=}9IHGt9rt*RE|vfF`+cmo zwn4G67Y>?02DN%ZNLc1n{2uVm&~`%QKr)>*hz3Sr@Pyjb`r5D{!EN4P-~%ar-W$u{xc*JKt?&HbzR2aR8mq_n0;`s(mx|;^W)-REl-GlX3)FX z(wc|^Vj|qj$oSw1O)>KWxO;LCzGE4u|P?_?o0Vk&P z)WA+?)f(oO?vKJuZGG5T3{0~Ny4nb2i&9PmhL@#Yey9loZ|(xlk|7m*#6%~aNL|{n zo>qA#zV03m2FyEW3jC&35eHTz#EQvW54vjB&YXgrFjchAV7`#Y z)ShI$RIB2RvaaqhfQq2qsavrVq=~z_){&euBn|-Ii_Kk4JBxP%S*RECC5bbb8)FL( z<%IGUHTysv3;_i`_VbQQ5xvJ^kd{K#*V8EMYvox6k$-I2aq#(TFORbprC@k zaa^Lm6uWTo75JU7tdHsxt)`UWxGY8RBZ+i_k_ucxp22{Z58LtTCmk61-ezwnXFGG4 zuyJu_r)M$27$M_=@F@Qf86@pfI)(sFW4C6a@!F}$J)whrm&gZ>i) zuJ~D@brkR^j{{7u8VYb;BE1JX_vM+*-&EkXzRAJ>evC@P`E5GA&gb;oJ$iJCE@(GX z%~wOpkPII#feTU(ScGobX~E;P$`(wuos~E!CjK?Fa0BVU7+iFKGyk>NhnJdUD8P^A zLJO5f5YEf^l+Pb8jA$oR0>hLF26%cxX~5v7ehha#9=X1F?aTq$I8D=YN-i5J#v9Ff z1NkI~&AaPtDg-};_qQ|FoQ(aP6-;X>@lWY1cR!S~Ie{YnE^*qs>cLntl=x7fYHaop zqqiVdQ5|M$vK0n&2=@6NMHtz9o5=d6;y`wJd7FxC{x`@1B9rFJW{fmf?X4;1y{HjM zn#MqI_qVHfOX^l0{Pu%=A&^=N*luHQ8k1-66NI(d;BIfAYDXAC6_@RTLjm~hUWQKy zR(&qEp`EqgnY`|4U?oQQy(L@2>Ca65)mVeM6FQNghgwAR%2mL-fRhVhia`Ycc-A$5 zn7mWkTy;9_GZ$|rw$dNX6}c>zZ&*2yOJ!Z$E(Y;2|%v(|Vo8R4;gNhRLlB!1M z&l9xsH+bg56f($@F0dc!`=(1tt;>WFbk0OwJ;!m(Op-uVm)#Av-t5kj>X8~yPaPA5 z-$jzyJ|!a&_JUAnb4URe(px7L)Ik6if?2=%4VcJm^78;=>zNepABf)|Rfyu9p}z)P zz2~=h7s~F!Upaf=kvSrn0XW5|1EwU5m^dI3a6nA4Z)@u(cP%h3ZM4jU6| zmj3gs`9m&s&ikF0(kZqZSBlnD_c96j44>GH)Rd}R0iA}WacIk>@9&t?ebk)AuazY$ zr)CyAG0%!L%w1`Nd)kSFPC(UKeu2~eSjeOP>%#h(nIs!n-2u}PRM^Qf@2oQjDMXx` z_FY!aRj-KH#8fb1LMYlTu^tE;2-oFV*Jf9L6Rj?eWv|Un$A$n~our(MHJo zlP^OzG>rUmu(xzK6eojFO-jtoGgtXN0uJV>ht+gdo_iXMq4Q>4)IKR*w{B^uwCsPKG#K<+wJq2MP&p{tQrLFZ#bN7N&4QdHM2!>>;(?vvb5x*K1H^y#P+2KS{_Iyrw}Qc?^}54zku_XMek@$8~o* zAermhNahlqyo>S?5G=px|h4h^Nw^{hG1@O&rj$7taM&$ zplGGbTH1IKDtZ6u)%xKj<`%d#7kr=rd9q*Q-X6STra|cV#0&RZR+AQtsOm7P2(1j! zPhhWjTbuFJpp%a*W!mJ~iy)che)VN$s;2;9AZKbOei<}wNWhd35WsfN{x-eOsCib^ zKK#=W*lAbI+CoOEYFl`b3ZD=UuUXePKlf&8C-@42@pd7Rtsc*;Mz&QK6PWKu1R{ow zDTSu1DoFW9zPNk0X8Os|DZTqyOOFgpDOkcYCy~PWH8m+`;JgE*44sb8B%)DFH)N#> zIq9{}xV?+%V`HbIA<(n=(p=y7j`Y&4t<}|sVh%)NWz{p~E}QgaTcly2MjguvTDvUX zsNFAN(_LX;5ziPif2pGC!!arjlH9UEV|H5T?Px^aVGCMg0p0}Isl7SRt*kpfpR(`M zp=Zjg_sL9B%zKKBR;PQOg_r)+uC742YmxajE{oD?U@Ht_ zi|iX{0VK2b$8Qez(#J_m;E;<}J&#EWb3Im4IYx)dLj85{SONyh$VS^0CYxIYY3NL) zlh6Lflx+hlqP;Q+^Y~Q+9K}@gf`F@`D;j~P7c}iQP4o`IezcvPu{O^)0H+BPZCP5d z@l`2TltcY1LqmDJBI^hm5XXHbQifetv;4lzFrwJirT4-gw&EahWjVR|pu0TTK-A?o z@3i{|{JT&nepwSm2aMDaSU7GBA`vGgwYNi2h&_H?j(xZDHo;+g>N zkc&)Dr0K1G$nf|R;v;xww4W1mb_tox(vuKP8M4nhH+%tF9lD6*a0bB@a=vz9z(rao zc;4SMd^7LfXd`A<@lc%03Fv(G&_K?0Dj~u8_U?_eTVejDR92q&F7E~@ahxmi){|r4 zT^B|OXzz9>#U~n9ItX#)V)D4f{l{2xTAzc|cWP$*$0!`>++&)j1&j;lfrBgG9cASd ze{$n(aF>EDKJ|qa%^ ztDfp=M-fl*+=2F7ea)peql;MNaIb*REp|FCZ3kI4d*VTYi@HtUK6-keZ7A#}Ld&Lm z3k5~BbQSX1%gY`Gg2dwk(IsfF4DZKAX{s05|9m6mYNZ)6Qtl`Y|DPHP?(WabG=Hl& zV097092i4?%Oha2WstE^(ErF>7zkYd$|eGFQjLj{{|%)M9K-1D!1y28oCt;}{3mmF zb8txhC+83c`4j*Dd}?|S9JNat(R1$V{)-1D)_h<8e@e0EgXzIVj|BETVJi2d#nbVW z?VbC-W$(HLs1xHhv3YpIZLIEdF#l6V6PJ-u(3l-m*%&RC^RF&*gpmLDR5qw(1w-=) zH)Y?6Yy6-6Ge;l%Bl(^kpA#-L{$BBMtI-*r3wkC!D$=@dO9cXvuAlX)GJ#I}@f#LA zc`~Ecx5+CgNfn>&P;N4bl?KE}plAMsD~B&9;*K#UUp-h{<<{Ist%XSQ*@Im+3NEo7 zR78ZI7M<6p=(>`wK-W)=15-VVbDOm%Y&z7`9VC zqWQ%iXpC^~=k14K<<`9Q$XxPn9i?R-+OFG;Lxj#b!}pP{Hi;y0?awQ14ngW%(Lp@3 z<=#bKm6h9Q6!cEA=A*`rL_rZ{&BE~yo-H_{$j&!|KW9P^<&SsG;IEVYOMb%tK6W7woLx@Fh{XE(#OTT#!WLO zcBbuoHkV~(z6M6Ul((XE)=bXZX5{htXk}A1 zHJXi`GX%ywjU4vB2QS~>b^L6}Ps{u~HWCm#KU`7944({^Tw^>lxKIgEV{#a1!gMu{ zWlSyP0(JXC`mrcLqF_mQ-qEWt*L|}0wkD3$YzTE>Lf7L>dq$r999uT^uo_{jRriU9 zy*gdCvGquVU?B#-*7aL^33KkCe8mbL0yBA5B*7)0wa@)BICDC^@_dW}WcDkLv4*D2 z;Fd|6S3I_h8Y%HM;M&KIaV{Ehv=54ohfSEZ=I~;pM_^N<6*VHFlxTPw-QrokHL zt&ZudZfT*mlxV+cjh~BkIVLx`h03XhOIoF@dj5= z#*jZD-Nif(L#Ze@3+_jk8bi4Vt4LOURohL$%u+&vQeW}%)l`=Y6y?K#6A+}d=DReq z?AMlFn|kgyRJo^aNx~M`WR}-52N5C1^!6OpXUu#p4Uqy5UCD5A}8#Era!0o}>7!qvNkt-D6- z)#vVdJj6bIII0KlG~dTv39H?yV9JMe5;Ix<$90C;L?|$Fyu9M@{LN)=6DQ;O#D)~I zVMZ)^{?ryH2`3x-`@s-&tDy+jF_z;ih|D9fVR+AACHBYn^k!T4YU--~TkxvqClLVf zx@Q-1lUH=8;G?S&cG>G*&1fQs_DeqUtSNSEBQR>Y+zRM2c>=eKF(9a%K>8_4*Y$nB z94AlG9WJbljyQNh*WdAWOt)2djL0wA)PD9kb~Zc-o3oLG3%N5MDH)E^EOhA_kk5j( z{p3@kLpwY6^pfB3;+%gxIwwqQf1Z*6fZfH%58BhgdN+~!_nsdw1|z9WbWcC3*DCEk zEw^nD_A&kPnjh@voq1WrRZ2JZ*xV}3j*3^Bu{u^$Jd+nB_S}B(=p98Ri+6Hu>t%08 z?9%#J;M_(xCaP3y_{WCQ%9LXM910*>jm(1F75XGw8W3I zqQ=Ew!0|jg+#KcgR!YZ2_v&UF`GxE;+A{}V8|&YV!^h2C#)ucZ{Zpf|xaPY~$)jTb zbP#5~de$Ej@-!_>;YIt!rePRKY;;i6p#VkEeU<~;y3T;}Rjz(>_c0Nob6j=Sd!plJ;*t4w-t{DVWW6e7e-4+Dx8cF=>3ZuUYy=OaP==2Ph)p{h> z{`k9JQ;fAW6u+jRIk6(f5hDRjS}*PJ^09DdS>tVY@yRwU@%5_Y(IVV~4%17jL zETq%n!dqM)9uC`pFEi96DkxSOuYa9RE51S$Yg>3q$+6nE$(N-j2E^75+PqtX3J9|p z>BK5{+ne22e-hTSj>C8K^oISi+n;$&kT-5xaV+T5XfpXVuMa&P)NpLOLc`uxEe4VE z2l5{6V<8OKQ45*ArI9Gn@bGj$XVP^~iqEOM-5nc_rpqF9qsu9LZuy$&XIg4%$5Gd; ze7$!n!xEG=eyvuw)t4}O1#*S8fId!fl(xw+q5(3yMxLQwkB`!B-DO*=HPo_jgO^y2(R=q8r8~HLD z8BoM-{sf*6*g1%nE3V-9&8W>@RMCkt9Nax#xhor#c>E+2i%plj*wU^WRt%B#~SSBFG-qLP*ZQ;CXd$ZNI;M~l>*M5tA8#2v>`Z!zT;IJq{x^`ErZ6GjixU7+Q z0V^^9m1gQ$jaNP$xf?ztm77((8C`heY|SS+RlTuLGRr%H0ub3OyKNZ}tT z54--BlVtcjpegVuRC+z>-j!@Yy+Py9Iq~UQa#r)KxAPgk}1O1>pq2B zjnB2-SVA6KYo!iy=WqbLg@`bJjpe>W-A?ydjP~kt&)F5t`6L+rul<=%kiSh(ZCY^5 zWG&-?KS_{3zAG?Yo3VI=!*I_EJ`17~hBYg9ljI0UHIF96PH_r) zr_qvJpWW8zN3&9FX5aaWhHRcH5!ns43Yb=^l04d*guX-lctG){#JeaS0GP_k#xO3V zoRzj8O*Fw81o~~|;ipbpWH#9B!C!Sf8ON_xHZD%B;WjQVq`yuQGFwuBl)FW|C0pgO17`ykw;g8 zS;EJ`V@pUPb3Rp=HQ~g$;XOW!VsPz}Iu9uTn5UtCSO+gyS1S^bzW@Xw5}D}rys6=a zy9Hq+M=6-F71DmhE~O#)0r*?AiH&w6o%`Kw3?Viq$$dzknkRSIWl^|WxmTrO;FJg8 z21?=xWcUt)xKA;cYsBF@*H{(*EM;w4Q4wJP3g;IXE;vW9IkqB4A?H(3d0dc_r3v_y` zx)zbXkGZBHT1k$anWDjz$L@DY3$8vEqQeziaAG!0s4f>TTx%aTqtzLIZ6nBVi&c1? z{h4Hlucb|9VWR%3lx9|#)-p5h^~2&LJRm4lJE-vj)2>G!K%F~d}UG3c3hIS zjOmUt+4DgvCD7&XXtl0b4t}TVZ+*V8HEUfv^{N#kx`=>zOlmqRF(6Ou0E;Z}5uVPu7LaZB@afj0R zQwLaeF4ATU;g#ZMA_f9}c+W`ia1th-W?p)M3=dWP&y8=P=2Sq@i-U;KIm)IL_q9WP z>79p)h+8VvJ#2&`*x{{8U>tAE8qF2SBqYw?FHf;2&*}qP3}XZviz=P%j5S&%Ut1EV z75-7WyW?wEeCzJF=*yg2cs~?qXZ0tC)2&l&F@h_j8(3%&KJm(Jsr*QCctoC%D?c<* z)fqFlzcVZkNs(s|0^tENUGp>cjXwk(wLs)hDHT|3HdGCWRk&gItRPC8zZH*Spuu=p zCzTuc+TVQ_Y+-D(}d^oYF|xn z$6T2vA;=LFQGN2**T=K#o$$ydFVkiMfYyZt5nT;^AC}JC87+P8rSX!MGZ-bnFrgKF zc_d>#+DBo0&wY~)u98o|FJF;b$i^ZTBRzL|_#GP>>=D0;Z`n+VsHSDkPj86I1if(8 zGhD2LT~~4NUiwMR+p}Eyx|Gjgx$d!X*!4V@xOK%>sbukP`^s)H>sB)b3lIZ6XWp9n z^836m#s@#%aVOB+7Wa$}jKcX1RCrdk_KKi2pNQ<&A4=cNdlKX?t-xPCq*hg`_Xjfq zf$fj8SJack|K zd$nIa$xWZ=1R=7rk43H~PQN8TOX(pY|v!!OM$T4ou{ zbsBmH&izf`_}dgyZ^DmwfY?aa{WibeqQ2a)LL{1KODN2{P+!C~93CfQx@X1=rl}cR z85=Yu&rdsgOc#U(&*(2*k4Mg;8PB(PoZF@z$0NzvXfM@TtX7X&Zqk#pbS;P!E7va0$>_oIEJNbskh`kIydCoe`RV1Z~$ z?VC3K`vAW9#Px+?#ffzU2Vv59zu~m&Ft&X>hbNW1PezV=?y|J8g~TFfOL5Y~Mmj&< zvKySsY{18|sg~+b)ZF&1=eGN}Q6d3qH5V~#rB%bwuyHN>IWl3d4+FUcU#!&QOjC;! zWxq(PPxf?nI|!49w*zoXX-5@noc5E9`q{n$U`||{8Ne<&UovH>`o5cHpV{H9#6t>h zCdT3YF)21Y1h1@kZ+#d$$wsG4YwlS&io(>NZsFmZO{R58rrqj^!deGPh3FdqZ9$`!4;cW=eZ#!2Z+})+uGOOi+soT6Ck9s> zd+$J%i+aw?Sh8%>(}?+BaohUbjI~{73gE%s40UIPtIc@#g`ch%v>72)tcG=0mA61# zhjp2AIi=Sr)R8%+5i@P}10bgN_$lsWePu@v0Tv|d)q6DkfLc>{-Ygu|yQiC@33-;A ziNpXvjXb3d`oZe`L!}?$Pqz{Ftfe-uP_4gE;aK?1{{ulkvh`m99lIsjTbHoG8g!wx zqWDav*0*(@J4*dHEBCz!7=xg=Wlq`7Eg8*J0cvY|&l8>Xsken$U$I3|xkb)PZv_ebd|*h#YOam%eG!lMGNt_7 z?Yc9=c3V}MR!FnG2@Hp5y%?XJFh^dwqHkVV@hPLe%7PWJz^qAo<0@#Jozyj#TD6QS&mrBI2irQ}#2T6mAizTIZV&i<5qNld=16 zsQcq9!nQ@k=s52gh92e!8OlE-YA>s4xLH8Xa7h1#A4e|rj~Y@J2(PBg^t?`X_l0N^ z&FIi%RJUjpBX5m{6duqoM+N@+g6?j zMR}@OWjY90ml`Ui_&krAGQAx@o}p%Nv|}TN#R`NEr{4F$+CHAl*|iQ{eUaz;|1A&g zZ>B)+t`hd~54cSUgu%Oi@9O^@B!~S(i08hLqpcPD@6cT=e;5{CPZwaY|CnpoGxrZU z-;MOEfJpDw#XnyQ0yi^4rwmN#PvrmRZd(2e7#}h}AG^wZ`45Pf)fB4|$s{5&17_7F%bcI9Z|=TgUm|WVtXfe{3kN;fw11 z#7vnKLEifI>@@`=_%cKeWBBhf1D`_IAfh;_9^sAP$`~ZTXt*}A#R1&j=??yT>Js%) zv$F#uryXDoS*4n^{_a8}7T5m%pAOswVL5}l#$VAcl;Oy6rtBmbJt9g9h;ur+>A%1K zr$HoG`oM?&pCjf%2Y?An_v0e6XE_S!!+|vbi0#^e@YCx*QII}k{YxP{zUoNwrMloU zW}(n^cU+YgGGGWaJKr9zwrUIW=7E?)_UA6UI;j%OQ*6>wnNNcLr5MHx3IE>5{7C|7 zohJR$$5+p^Z?_j1NcQmz|4o|H{)RsR_n!z0XaDc%il^;}>#l(A9s7g^jw? hStI}dI_Gi!-2QvSm#@Ex6NWtlvhS7Nl}i|X{a=-8J5vAv diff --git a/assets/Form1.png b/assets/Form1.png deleted file mode 100644 index b7808d5cdbcc2cd3f38b0f689077b7f0cae85e5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 115304 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%0DrT%&HVYbZogY+qHs2s)3 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 diff --git a/assets/Form2.png b/assets/Form2.png deleted file mode 100644 index b2856501b11b09bb1e49063e44531ee71621d562..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54192 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

SMo=Fmplui?>A*S_T1bA6CH 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 diff --git a/assets/Install1.png b/assets/Install1.png deleted file mode 100644 index 765ef4dd4dfe2570abf1d3335d197434aa2a02fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65406 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%0AB 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

I4FfzW1(=^# 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 diff --git a/assets/Install2.png b/assets/Install2.png deleted file mode 100644 index e791271b746b0f7524cd79cb3d2cc74189f386e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58395 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 diff --git a/assets/RSS.png b/assets/RSS.png deleted file mode 100644 index 0f9a65c01834f09512004db8bd6f55e6d0a583ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35715 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 From f9f2d31a80af5c3a1da66578a9ee46fbb60d8ddc Mon Sep 17 00:00:00 2001 From: Kaarel Date: Thu, 25 Apr 2024 14:17:22 +0300 Subject: [PATCH 061/114] Add version 2.0.0 changelog --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 675128f..fd8b79c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +### 2.0.0 + +- Total rewrite of the module to support PrestaShop 8 new features and standards. [[#57](https://github.com/sendsmaily/smaily-prestashop-module/pull/57)] +- Module now uses the built-in Newsletter Subscription module to provide functionality for opt-in trigger instead of creating a custom template. This allows to keep internal subscriber addition logic and add required opt-in trigger functionality. + ### 1.6.1 - Update user manual links [[#51](https://github.com/sendsmaily/smaily-prestashop-module/pull/51)] From 8a82c9d31a1284807c5e747b6af62a2a60729d76 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Thu, 25 Apr 2024 14:31:05 +0300 Subject: [PATCH 062/114] Update userguide --- USERGUIDE.md | 36 +++++++++++++++---------------- assets/6_transplant_a_module.png | Bin 0 -> 52658 bytes assets/7_opt_in_trigger.png | Bin 0 -> 61297 bytes 3 files changed, 18 insertions(+), 18 deletions(-) create mode 100644 assets/6_transplant_a_module.png create mode 100644 assets/7_opt_in_trigger.png diff --git a/USERGUIDE.md b/USERGUIDE.md index 967b092..77a3883 100644 --- a/USERGUIDE.md +++ b/USERGUIDE.md @@ -3,6 +3,7 @@ This guide will help you set up and configure Smaily for Prestashop module. ## Installation + 1. You can get the **Smaily for Prestashop module** from Smaily's [GitHub repository](https://github.com/sendsmaily/smaily-prestashop-module/releases). 2. Download the .zip file for the latest release. Extracted contents of the archive to a `smailyforprestashop` folder. @@ -11,52 +12,50 @@ This guide will help you set up and configure Smaily for Prestashop module. 4. Navigate to **Modules -> Module Catalog**. Search for "smaily" and click **Install**. -![Module install](assets/Install1.png) +![Module install](assets/1_module_installation.png) ## Connecting module to Smaily account 1. To start using Smaily extension navigate to **Modules -> Module Manager** section. On the configuration page, find **Smaily for Prestashop**, then click on **Configure**. -![Module configuration path](assets/Install2.png) - 2. You will be presented with a configuration page for entering your Smaily API credentials - **subdomain, username, and password**. -You can follow our [API user creation guide](https://smaily.com/help/api/general/create-api-user/). + You can follow our [API user creation guide](https://smaily.com/help/api/general/create-api-user/). 3. Copy your API user credentials to the appropriate fields in the module configuration page. -4. Click **Validate** to save the API user configuration. +4. Click **Connect** to save the API user configuration. -![API credentials section](assets/APIcredentials.png) +![API credentials section](assets/2_account_connection.png) -## Adding Smaily newsletter subscription form to your store +## Adding newsletter subscription form to your store Smaily's module can synchronize customers, who have opted in for a newsletter subscription during registration. -We however recommend you place a Smaily form on your website, to collect subscribers directly. -1. Navigate to **Design -> Positions** and click on **Transplant a module**. - -![Transplant module section](assets/Form1.png) +We however recommend you place a Newsletter Subscription form on your website, to collect subscribers directly. -2. Select **Smaily for Prestashop** for **Module** and the preferred form location for **Transplant to**. +1. Navigate to **Design -> Positions** and click on **Transplant a module**. -![Transplant to section](assets/Form2.png) +![Transplant module section](assets/6_transplant_a_module.png) -3. Click **Save** and the Smaily newsletter form should be on your store at the specified location! +2. Select **Newsletter subscription** for **Module** and the preferred form location for **Transplant to**. Notice that Smaily uses the built-in Newsletter Subscription form and extends it's functionality. When the **Trigger opt-in on customer sign-up** setting is activated users who subscribe trigger the automation workflow. + ![Opt-in trigger](assets/7_opt_in_trigger.png) +3. Click **Save** and the Newsletter subscription form should be on your store at the specified location! ## Customer synchronization Registered customers, who have opted for the newsletter will be added to Smaily's subscriber database during synchronization. + 1. Enable automatic customer synchronization feature under **Customer synchronization** section. 2. There is an option to import **additional fields** available from the store into Smaily to personalize newsletter emails. 3. The synchronization can be automated using the cron URL. Recommended synchronization interval is once a day or less. 4. New customers who sign up with newsletter enabled can be added to Smaily, by enabling trigger opt-in on customer signup. 5. An autoresponder can be selected for new customers who sign up with newsletter, the autoresponder won't work if the setting is disabled. -![Customer synchronization section](assets/CustomerSync.png) + ![Customer synchronization section](assets/3_customer_sync.png) ## Abandoned cart emails 1. Enable abandoned cart emails feature under **Abandoned Cart** section to send cart reminder emails to store customers. -2. You need to create *form submitted* workflow in Smaily prior to activating this feature. You can follow our [creating automation workflows tutorial](https://smaily.com/help/user-manual/automations/automation-workflows/). +2. You need to create _form submitted_ workflow in Smaily prior to activating this feature. You can follow our [creating automation workflows tutorial](https://smaily.com/help/user-manual/automations/automation-workflows/). 3. After creating an automation in Smaily you can find this automation under **Autoresponder**. @@ -64,16 +63,17 @@ Registered customers, who have opted for the newsletter will be added to Smaily' 5. There is also an option to **add additional fields** about abandoned carts to send personalized reminder emails. -![Abandoned cart emails](assets/AbandonedCart.png) +![Abandoned cart emails](assets/4_abandoned_cart.png) ## RSS Smaily's module can create an RSS link of available Prestashop products. -![RSS section](assets/RSS.png) The module provides several options for generating an RSS feed link. + 1. **Products category**: selecting a category will display only products under that category in the RSS feed. 2. **Product limit**: limit what is the maximum amount of products displayed in the RSS feed. Limit can be a value between 1 and 250. 3. **Order by**: sorting order of the products in the RSS feed. Possible options are: date added, date updated, name, price, product ID. 4. **Order direction**: in which direction will the module order products. The generated RSS feed link can be copied to your template editor's RSS block to display products directly in your newsletter. For this, you can follow our [RSS feed manual](https://smaily.com/help/user-manual/templates/adding-rss-feed-to-template/). +![RSS section](assets/5_rss_feed.png) diff --git a/assets/6_transplant_a_module.png b/assets/6_transplant_a_module.png new file mode 100644 index 0000000000000000000000000000000000000000..e676897158a0cbabd41e04c11cd7ce437d6bab5b GIT binary patch literal 52658 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 V^tvObMEfZD(rl6};ve?k{0||Z>m>jH literal 0 HcmV?d00001 diff --git a/assets/7_opt_in_trigger.png b/assets/7_opt_in_trigger.png new file mode 100644 index 0000000000000000000000000000000000000000..15d5bb0188e07f3fc7c84a0353d3ab50bcce7e15 GIT binary patch literal 61297 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

C=djqZa+3`xdWmw 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ⅅBY-b#LaGZ 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 literal 0 HcmV?d00001 From 763e7971cfdc98b36fef019f7ee8baab9208454e Mon Sep 17 00:00:00 2001 From: Kaarel Date: Thu, 25 Apr 2024 14:33:57 +0300 Subject: [PATCH 063/114] Update Estonian translations --- .../et-EE/ModulesSmailyforprestashopAdmin.et-EE.xlf | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/translations/et-EE/ModulesSmailyforprestashopAdmin.et-EE.xlf b/src/translations/et-EE/ModulesSmailyforprestashopAdmin.et-EE.xlf index 91bd3e2..ef24a22 100644 --- a/src/translations/et-EE/ModulesSmailyforprestashopAdmin.et-EE.xlf +++ b/src/translations/et-EE/ModulesSmailyforprestashopAdmin.et-EE.xlf @@ -272,6 +272,11 @@ Tootekood Line: + + Product base price + Toote alghind + Line: + Product quantity Toote Kogus From 88d63b0b2a367af7c6517de8cb884767b9e7dbf9 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Mon, 29 Apr 2024 08:55:23 +0300 Subject: [PATCH 064/114] Add PS_VERSION check to all php files --- src/.php-cs-fixer.dist.php | 4 +++ src/controllers/front/SmailyCartCron.php | 4 +++ src/controllers/front/SmailyCustomerCron.php | 4 +++ src/controllers/front/SmailyRssFeed.php | 4 +++ src/lib/Api.php | 4 +++ src/lib/Logger.php | 4 +++ src/overrides/ps_emailsubscription.php | 4 +++ .../Controller/AbandonedCartController.php | 4 +++ src/src/Controller/CustomerSyncController.php | 4 +++ .../ModuleConfigurationController.php | 4 +++ src/src/Controller/OptInController.php | 4 +++ src/src/Controller/RssFeedController.php | 4 +++ .../AbandonedCartFormDataConfiguration.php | 4 +++ src/src/Form/AbandonedCartFormType.php | 4 +++ src/src/Form/AccountConfigurationFormType.php | 4 +++ src/src/Form/AccountFormDataConfiguration.php | 4 +++ src/src/Form/ChoiceProvider/Autoresponder.php | 4 +++ .../Form/ChoiceProvider/ProductCategory.php | 4 +++ .../CustomerSyncFormDataConfiguration.php | 4 +++ src/src/Form/CustomerSyncFormType.php | 4 +++ src/src/Form/FormDataProvider.php | 4 +++ src/src/Form/RssFeedFormDataConfiguration.php | 4 +++ src/src/Form/RssFeedFormType.php | 4 +++ src/src/Form/Type/index.php | 30 ------------------- src/src/Install/Installer.php | 4 +++ src/src/Model/AbandonedCart.php | 4 +++ src/src/Model/AbandonedCartCollection.php | 4 +++ src/src/Model/AbandonedCartProduct.php | 4 +++ src/src/Model/RssFeedProductsCollection.php | 4 +++ src/src/Model/SentCart.php | 4 +++ src/src/Model/Subscriber.php | 4 +++ src/src/Model/SubscriberCollection.php | 4 +++ 32 files changed, 124 insertions(+), 30 deletions(-) delete mode 100644 src/src/Form/Type/index.php diff --git a/src/.php-cs-fixer.dist.php b/src/.php-cs-fixer.dist.php index 943897c..ce8016d 100644 --- a/src/.php-cs-fixer.dist.php +++ b/src/.php-cs-fixer.dist.php @@ -2,6 +2,10 @@ declare(strict_types=1); +if (!defined('_PS_VERSION_')) { + exit; +} + $config = new PrestaShop\CodingStandards\CsFixer\Config(); /** @var \Symfony\Component\Finder\Finder $finder */ diff --git a/src/controllers/front/SmailyCartCron.php b/src/controllers/front/SmailyCartCron.php index c4b44fc..6952199 100644 --- a/src/controllers/front/SmailyCartCron.php +++ b/src/controllers/front/SmailyCartCron.php @@ -23,6 +23,10 @@ */ declare(strict_types=1); +if (!defined('_PS_VERSION_')) { + exit; +} + class SmailyforprestashopSmailyCartCronModuleFrontController extends ModuleFrontController { public function __construct() diff --git a/src/controllers/front/SmailyCustomerCron.php b/src/controllers/front/SmailyCustomerCron.php index 6a8cc54..8206fbf 100644 --- a/src/controllers/front/SmailyCustomerCron.php +++ b/src/controllers/front/SmailyCustomerCron.php @@ -23,6 +23,10 @@ */ declare(strict_types=1); +if (!defined('_PS_VERSION_')) { + exit; +} + class SmailyforprestashopSmailyCustomerCronModuleFrontController extends ModuleFrontController { public function __construct() diff --git a/src/controllers/front/SmailyRssFeed.php b/src/controllers/front/SmailyRssFeed.php index e385b47..fe2631b 100644 --- a/src/controllers/front/SmailyRssFeed.php +++ b/src/controllers/front/SmailyRssFeed.php @@ -23,6 +23,10 @@ */ declare(strict_types=1); +if (!defined('_PS_VERSION_')) { + exit; +} + class SmailyForPrestaShopSmailyRssFeedModuleFrontController extends ModuleFrontController { public const ALLOWED_SORT_BY_VALUES = ['date_add', 'date_upd', 'name', 'price', 'id_product']; diff --git a/src/lib/Api.php b/src/lib/Api.php index 50901a7..39bea82 100644 --- a/src/lib/Api.php +++ b/src/lib/Api.php @@ -25,6 +25,10 @@ namespace PrestaShop\Module\SmailyForPrestaShop\Lib; +if (!defined('_PS_VERSION_')) { + exit; +} + use GuzzleHttp\Client; use GuzzleHttp\RequestOptions; use Psr\Http\Message\ResponseInterface; diff --git a/src/lib/Logger.php b/src/lib/Logger.php index e0f0ea1..e4c6dfe 100644 --- a/src/lib/Logger.php +++ b/src/lib/Logger.php @@ -25,6 +25,10 @@ namespace PrestaShop\Module\SmailyForPrestaShop\Lib; +if (!defined('_PS_VERSION_')) { + exit; +} + class Logger { /** diff --git a/src/overrides/ps_emailsubscription.php b/src/overrides/ps_emailsubscription.php index ffaaa95..3b37446 100644 --- a/src/overrides/ps_emailsubscription.php +++ b/src/overrides/ps_emailsubscription.php @@ -23,6 +23,10 @@ */ declare(strict_types=1); +if (!defined('_PS_VERSION_')) { + exit; +} + class Ps_EmailsubscriptionOverRide extends Ps_Emailsubscription { public function getContent() diff --git a/src/src/Controller/AbandonedCartController.php b/src/src/Controller/AbandonedCartController.php index 1d57603..8182122 100644 --- a/src/src/Controller/AbandonedCartController.php +++ b/src/src/Controller/AbandonedCartController.php @@ -25,6 +25,10 @@ namespace PrestaShop\Module\SmailyForPrestaShop\Controller; +if (!defined('_PS_VERSION_')) { + exit; +} + use PrestaShop\Module\SmailyForPrestaShop\Lib\Api; use PrestaShop\Module\SmailyForPrestaShop\Lib\Logger; use PrestaShop\Module\SmailyForPrestaShop\Model\AbandonedCart; diff --git a/src/src/Controller/CustomerSyncController.php b/src/src/Controller/CustomerSyncController.php index ccd8ec5..95794aa 100644 --- a/src/src/Controller/CustomerSyncController.php +++ b/src/src/Controller/CustomerSyncController.php @@ -25,6 +25,10 @@ namespace PrestaShop\Module\SmailyForPrestaShop\Controller; +if (!defined('_PS_VERSION_')) { + exit; +} + use PrestaShop\Module\SmailyForPrestaShop\Lib\Api; use PrestaShop\Module\SmailyForPrestaShop\Lib\Logger; use PrestaShop\Module\SmailyForPrestaShop\Model\Subscriber; diff --git a/src/src/Controller/ModuleConfigurationController.php b/src/src/Controller/ModuleConfigurationController.php index 313a307..597505e 100644 --- a/src/src/Controller/ModuleConfigurationController.php +++ b/src/src/Controller/ModuleConfigurationController.php @@ -25,6 +25,10 @@ namespace PrestaShop\Module\SmailyForPrestaShop\Controller; +if (!defined('_PS_VERSION_')) { + exit; +} + use PrestaShopBundle\Controller\Admin\FrameworkBundleAdminController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; diff --git a/src/src/Controller/OptInController.php b/src/src/Controller/OptInController.php index 225a5cd..154710e 100644 --- a/src/src/Controller/OptInController.php +++ b/src/src/Controller/OptInController.php @@ -25,6 +25,10 @@ namespace PrestaShop\Module\SmailyForPrestaShop\Controller; +if (!defined('_PS_VERSION_')) { + exit; +} + use PrestaShop\Module\SmailyForPrestaShop\Lib\Api; use PrestaShop\Module\SmailyForPrestaShop\Lib\Logger; use PrestaShop\PrestaShop\Core\ConfigurationInterface; diff --git a/src/src/Controller/RssFeedController.php b/src/src/Controller/RssFeedController.php index 64f9285..0866138 100644 --- a/src/src/Controller/RssFeedController.php +++ b/src/src/Controller/RssFeedController.php @@ -25,6 +25,10 @@ namespace PrestaShop\Module\SmailyForPrestaShop\Controller; +if (!defined('_PS_VERSION_')) { + exit; +} + use PrestaShop\Module\SmailyForPrestaShop\Model\RssFeedProductsCollection; class RssFeedController diff --git a/src/src/Form/AbandonedCartFormDataConfiguration.php b/src/src/Form/AbandonedCartFormDataConfiguration.php index dfca1bb..bf6b176 100644 --- a/src/src/Form/AbandonedCartFormDataConfiguration.php +++ b/src/src/Form/AbandonedCartFormDataConfiguration.php @@ -25,6 +25,10 @@ namespace PrestaShop\Module\SmailyForPrestaShop\Form; +if (!defined('_PS_VERSION_')) { + exit; +} + use PrestaShop\PrestaShop\Core\Configuration\DataConfigurationInterface; use PrestaShop\PrestaShop\Core\ConfigurationInterface; diff --git a/src/src/Form/AbandonedCartFormType.php b/src/src/Form/AbandonedCartFormType.php index 0a017b3..a8ede3b 100644 --- a/src/src/Form/AbandonedCartFormType.php +++ b/src/src/Form/AbandonedCartFormType.php @@ -25,6 +25,10 @@ namespace PrestaShop\Module\SmailyForPrestaShop\Form; +if (!defined('_PS_VERSION_')) { + exit; +} + use PrestaShopBundle\Form\Admin\Type\SwitchType; use PrestaShopBundle\Form\Admin\Type\TranslatorAwareType; use Symfony\Component\Form\Extension\Core\Type as FormType; diff --git a/src/src/Form/AccountConfigurationFormType.php b/src/src/Form/AccountConfigurationFormType.php index 6ca023e..ff1da9a 100644 --- a/src/src/Form/AccountConfigurationFormType.php +++ b/src/src/Form/AccountConfigurationFormType.php @@ -25,6 +25,10 @@ namespace PrestaShop\Module\SmailyForPrestaShop\Form; +if (!defined('_PS_VERSION_')) { + exit; +} + use PrestaShop\Module\SmailyForPrestaShop\Lib\Api; use PrestaShopBundle\Form\Admin\Type\TranslatorAwareType; use Symfony\Component\Form\Event\PostSetDataEvent; diff --git a/src/src/Form/AccountFormDataConfiguration.php b/src/src/Form/AccountFormDataConfiguration.php index 8bc19f3..aaff41a 100644 --- a/src/src/Form/AccountFormDataConfiguration.php +++ b/src/src/Form/AccountFormDataConfiguration.php @@ -25,6 +25,10 @@ namespace PrestaShop\Module\SmailyForPrestaShop\Form; +if (!defined('_PS_VERSION_')) { + exit; +} + use PrestaShop\Module\SmailyForPrestaShop\Lib\Api; use PrestaShop\PrestaShop\Core\Configuration\DataConfigurationInterface; use PrestaShop\PrestaShop\Core\ConfigurationInterface; diff --git a/src/src/Form/ChoiceProvider/Autoresponder.php b/src/src/Form/ChoiceProvider/Autoresponder.php index 43a840a..c2e59de 100644 --- a/src/src/Form/ChoiceProvider/Autoresponder.php +++ b/src/src/Form/ChoiceProvider/Autoresponder.php @@ -25,6 +25,10 @@ namespace PrestaShop\Module\SmailyForPrestaShop\Form\ChoiceProvider; +if (!defined('_PS_VERSION_')) { + exit; +} + use PrestaShop\Module\SmailyForPrestaShop\Lib\Api; use PrestaShop\PrestaShop\Core\ConfigurationInterface; use PrestaShop\PrestaShop\Core\Form\FormChoiceProviderInterface; diff --git a/src/src/Form/ChoiceProvider/ProductCategory.php b/src/src/Form/ChoiceProvider/ProductCategory.php index 3ef9396..b34bf56 100644 --- a/src/src/Form/ChoiceProvider/ProductCategory.php +++ b/src/src/Form/ChoiceProvider/ProductCategory.php @@ -25,6 +25,10 @@ namespace PrestaShop\Module\SmailyForPrestaShop\Form\ChoiceProvider; +if (!defined('_PS_VERSION_')) { + exit; +} + use PrestaShop\PrestaShop\Adapter\Category\CategoryDataProvider; use PrestaShop\PrestaShop\Core\Form\FormChoiceProviderInterface; use Symfony\Contracts\Translation\TranslatorInterface; diff --git a/src/src/Form/CustomerSyncFormDataConfiguration.php b/src/src/Form/CustomerSyncFormDataConfiguration.php index 60ad426..24be9dd 100644 --- a/src/src/Form/CustomerSyncFormDataConfiguration.php +++ b/src/src/Form/CustomerSyncFormDataConfiguration.php @@ -25,6 +25,10 @@ namespace PrestaShop\Module\SmailyForPrestaShop\Form; +if (!defined('_PS_VERSION_')) { + exit; +} + use PrestaShop\PrestaShop\Core\Configuration\DataConfigurationInterface; use PrestaShop\PrestaShop\Core\ConfigurationInterface; diff --git a/src/src/Form/CustomerSyncFormType.php b/src/src/Form/CustomerSyncFormType.php index 87460f3..7635606 100644 --- a/src/src/Form/CustomerSyncFormType.php +++ b/src/src/Form/CustomerSyncFormType.php @@ -25,6 +25,10 @@ namespace PrestaShop\Module\SmailyForPrestaShop\Form; +if (!defined('_PS_VERSION_')) { + exit; +} + use PrestaShopBundle\Form\Admin\Type\SwitchType; use PrestaShopBundle\Form\Admin\Type\TranslatorAwareType; use PrestaShopBundle\Translation\TranslatorInterface; diff --git a/src/src/Form/FormDataProvider.php b/src/src/Form/FormDataProvider.php index ffe62f8..b0c01ab 100644 --- a/src/src/Form/FormDataProvider.php +++ b/src/src/Form/FormDataProvider.php @@ -25,6 +25,10 @@ namespace PrestaShop\Module\SmailyForPrestaShop\Form; +if (!defined('_PS_VERSION_')) { + exit; +} + use PrestaShop\PrestaShop\Core\Configuration\DataConfigurationInterface; use PrestaShop\PrestaShop\Core\Form\FormDataProviderInterface; diff --git a/src/src/Form/RssFeedFormDataConfiguration.php b/src/src/Form/RssFeedFormDataConfiguration.php index 5e6f3a9..c505bd3 100644 --- a/src/src/Form/RssFeedFormDataConfiguration.php +++ b/src/src/Form/RssFeedFormDataConfiguration.php @@ -25,6 +25,10 @@ namespace PrestaShop\Module\SmailyForPrestaShop\Form; +if (!defined('_PS_VERSION_')) { + exit; +} + use PrestaShop\PrestaShop\Core\Configuration\DataConfigurationInterface; use PrestaShop\PrestaShop\Core\ConfigurationInterface; diff --git a/src/src/Form/RssFeedFormType.php b/src/src/Form/RssFeedFormType.php index 2f7c397..80e2c75 100644 --- a/src/src/Form/RssFeedFormType.php +++ b/src/src/Form/RssFeedFormType.php @@ -25,6 +25,10 @@ namespace PrestaShop\Module\SmailyForPrestaShop\Form; +if (!defined('_PS_VERSION_')) { + exit; +} + use PrestaShopBundle\Form\Admin\Type\TranslatorAwareType; use Symfony\Component\Form\Extension\Core\Type\ChoiceType; use Symfony\Component\Form\Extension\Core\Type\HiddenType; diff --git a/src/src/Form/Type/index.php b/src/src/Form/Type/index.php deleted file mode 100644 index 778ada9..0000000 --- a/src/src/Form/Type/index.php +++ /dev/null @@ -1,30 +0,0 @@ -. - * - * @author Smaily - * @copyright 2024 Smaily - * @license GPL3 - */ -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; diff --git a/src/src/Install/Installer.php b/src/src/Install/Installer.php index 300cba0..a0f480c 100644 --- a/src/src/Install/Installer.php +++ b/src/src/Install/Installer.php @@ -25,6 +25,10 @@ namespace PrestaShop\Module\SmailyForPrestaShop\Install; +if (!defined('_PS_VERSION_')) { + exit; +} + class Installer { private const CONFIGURATION_KEYS = [ diff --git a/src/src/Model/AbandonedCart.php b/src/src/Model/AbandonedCart.php index ecbb8a2..2cd6452 100644 --- a/src/src/Model/AbandonedCart.php +++ b/src/src/Model/AbandonedCart.php @@ -25,6 +25,10 @@ namespace PrestaShop\Module\SmailyForPrestaShop\Model; +if (!defined('_PS_VERSION_')) { + exit; +} + class AbandonedCart { /** diff --git a/src/src/Model/AbandonedCartCollection.php b/src/src/Model/AbandonedCartCollection.php index 6cc90bc..b56175c 100644 --- a/src/src/Model/AbandonedCartCollection.php +++ b/src/src/Model/AbandonedCartCollection.php @@ -25,6 +25,10 @@ namespace PrestaShop\Module\SmailyForPrestaShop\Model; +if (!defined('_PS_VERSION_')) { + exit; +} + class AbandonedCartCollection { /** diff --git a/src/src/Model/AbandonedCartProduct.php b/src/src/Model/AbandonedCartProduct.php index 1e33dd2..694a246 100644 --- a/src/src/Model/AbandonedCartProduct.php +++ b/src/src/Model/AbandonedCartProduct.php @@ -25,6 +25,10 @@ namespace PrestaShop\Module\SmailyForPrestaShop\Model; +if (!defined('_PS_VERSION_')) { + exit; +} + class AbandonedCartProduct { /** diff --git a/src/src/Model/RssFeedProductsCollection.php b/src/src/Model/RssFeedProductsCollection.php index 53b9e07..e5b72c8 100644 --- a/src/src/Model/RssFeedProductsCollection.php +++ b/src/src/Model/RssFeedProductsCollection.php @@ -25,6 +25,10 @@ namespace PrestaShop\Module\SmailyForPrestaShop\Model; +if (!defined('_PS_VERSION_')) { + exit; +} + class RssFeedProductsCollection { public function getProducts(false|int $categoryId, int $limit, string $sort_by, string $sort_order): array diff --git a/src/src/Model/SentCart.php b/src/src/Model/SentCart.php index cf6c64f..94e9ab2 100644 --- a/src/src/Model/SentCart.php +++ b/src/src/Model/SentCart.php @@ -25,6 +25,10 @@ namespace PrestaShop\Module\SmailyForPrestaShop\Model; +if (!defined('_PS_VERSION_')) { + exit; +} + class SentCart extends \ObjectModel { /** diff --git a/src/src/Model/Subscriber.php b/src/src/Model/Subscriber.php index 400b8a3..f701b6f 100644 --- a/src/src/Model/Subscriber.php +++ b/src/src/Model/Subscriber.php @@ -25,6 +25,10 @@ namespace PrestaShop\Module\SmailyForPrestaShop\Model; +if (!defined('_PS_VERSION_')) { + exit; +} + class Subscriber { /** diff --git a/src/src/Model/SubscriberCollection.php b/src/src/Model/SubscriberCollection.php index 3eb68f7..2ff6187 100644 --- a/src/src/Model/SubscriberCollection.php +++ b/src/src/Model/SubscriberCollection.php @@ -25,6 +25,10 @@ namespace PrestaShop\Module\SmailyForPrestaShop\Model; +if (!defined('_PS_VERSION_')) { + exit; +} + class SubscriberCollection { public function batchUnsubscribeByEmail(array $emails): bool From 0111d620e4c859210df073b58cc9b03e7883f738 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Mon, 29 Apr 2024 08:56:45 +0300 Subject: [PATCH 065/114] Fix missing license headers --- src/smailyforprestashop.php | 2 +- src/views/js/smaily-admin.js | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/smailyforprestashop.php b/src/smailyforprestashop.php index dd18913..8adf619 100644 --- a/src/smailyforprestashop.php +++ b/src/smailyforprestashop.php @@ -1,5 +1,5 @@ . + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ const { rssBaseURL } = jsVariables; $(() => { From f58c006bc2a9ad269f582e70064c8eecf2378d34 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Mon, 29 Apr 2024 08:59:16 +0300 Subject: [PATCH 066/114] Add missing index.php files --- src/translations/en-US/index.php | 30 ++++++++++++++++++++++++++++++ src/translations/et-EE/index.php | 30 ++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 src/translations/en-US/index.php create mode 100644 src/translations/et-EE/index.php diff --git a/src/translations/en-US/index.php b/src/translations/en-US/index.php new file mode 100644 index 0000000..778ada9 --- /dev/null +++ b/src/translations/en-US/index.php @@ -0,0 +1,30 @@ +. + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ +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; diff --git a/src/translations/et-EE/index.php b/src/translations/et-EE/index.php new file mode 100644 index 0000000..778ada9 --- /dev/null +++ b/src/translations/et-EE/index.php @@ -0,0 +1,30 @@ +. + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ +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; From 02cf99511645d934f96f9f6e40c1f75759b4433c Mon Sep 17 00:00:00 2001 From: Kaarel Date: Mon, 29 Apr 2024 09:23:59 +0300 Subject: [PATCH 067/114] Drop front controller services --- src/config/front/index.php | 30 -------------------- src/config/front/services.yml | 20 ------------- src/controllers/front/SmailyCartCron.php | 5 ++-- src/controllers/front/SmailyCustomerCron.php | 5 ++-- src/controllers/front/SmailyRssFeed.php | 8 ++++-- src/smailyforprestashop.php | 2 +- 6 files changed, 12 insertions(+), 58 deletions(-) delete mode 100644 src/config/front/index.php delete mode 100644 src/config/front/services.yml diff --git a/src/config/front/index.php b/src/config/front/index.php deleted file mode 100644 index 778ada9..0000000 --- a/src/config/front/index.php +++ /dev/null @@ -1,30 +0,0 @@ -. - * - * @author Smaily - * @copyright 2024 Smaily - * @license GPL3 - */ -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; diff --git a/src/config/front/services.yml b/src/config/front/services.yml deleted file mode 100644 index 655c5d7..0000000 --- a/src/config/front/services.yml +++ /dev/null @@ -1,20 +0,0 @@ -services: - _defaults: - public: true - - prestashop.module.smailyforprestashop.controller.opt_in_controller: - class: PrestaShop\Module\SmailyForPrestaShop\Controller\OptInController - arguments: ["@prestashop.adapter.legacy.configuration"] - - prestashop.module.smailyforprestashop.controller.abandoned_cart_controller: - class: PrestaShop\Module\SmailyForPrestaShop\Controller\AbandonedCartController - arguments: - - '@prestashop.adapter.legacy.configuration' - - prestashop.module.smailyforprestashop.controller.customer_sync_controller: - class: PrestaShop\Module\SmailyForPrestaShop\Controller\CustomerSyncController - arguments: - - '@prestashop.adapter.legacy.configuration' - - prestashop.module.smailyforprestashop.controller.rss_feed_controller: - class: PrestaShop\Module\SmailyForPrestaShop\Controller\RssFeedController diff --git a/src/controllers/front/SmailyCartCron.php b/src/controllers/front/SmailyCartCron.php index 6952199..f3eaac6 100644 --- a/src/controllers/front/SmailyCartCron.php +++ b/src/controllers/front/SmailyCartCron.php @@ -27,6 +27,8 @@ exit; } +use PrestaShop\Module\SmailyForPrestaShop\Controller\AbandonedCartController; + class SmailyforprestashopSmailyCartCronModuleFrontController extends ModuleFrontController { public function __construct() @@ -39,8 +41,7 @@ public function initContent() parent::initContent(); header('Content-Type: text/plain'); - $controller = $this->get('prestashop.module.smailyforprestashop.controller.abandoned_cart_controller'); - + $controller = new AbandonedCartController($this->get('prestashop.adapter.legacy.configuration')); if (!$controller->sync(Tools::getValue('token'))) { exit(1); } diff --git a/src/controllers/front/SmailyCustomerCron.php b/src/controllers/front/SmailyCustomerCron.php index 8206fbf..ce25f37 100644 --- a/src/controllers/front/SmailyCustomerCron.php +++ b/src/controllers/front/SmailyCustomerCron.php @@ -27,6 +27,8 @@ exit; } +use PrestaShop\Module\SmailyForPrestaShop\Controller\CustomerSyncController; + class SmailyforprestashopSmailyCustomerCronModuleFrontController extends ModuleFrontController { public function __construct() @@ -39,8 +41,7 @@ public function initContent() parent::initContent(); header('Content-Type: text/plain'); - $controller = $this->get('prestashop.module.smailyforprestashop.controller.customer_sync_controller'); - + $controller = new CustomerSyncController($this->get('prestashop.adapter.legacy.configuration')); if (!$controller->sync(Tools::getValue('token'))) { exit(1); } diff --git a/src/controllers/front/SmailyRssFeed.php b/src/controllers/front/SmailyRssFeed.php index fe2631b..1ca4a8b 100644 --- a/src/controllers/front/SmailyRssFeed.php +++ b/src/controllers/front/SmailyRssFeed.php @@ -27,6 +27,8 @@ exit; } +use PrestaShop\Module\SmailyForPrestaShop\Controller\RssFeedController; + class SmailyForPrestaShopSmailyRssFeedModuleFrontController extends ModuleFrontController { public const ALLOWED_SORT_BY_VALUES = ['date_add', 'date_upd', 'name', 'price', 'id_product']; @@ -34,6 +36,8 @@ class SmailyForPrestaShopSmailyRssFeedModuleFrontController extends ModuleFrontC public function initContent() { parent::initContent(); + header('Content-Type: application/xml'); + $baseUrl = Tools::getHttpHost(true) . __PS_BASE_URI__; $limit = (int) Tools::getValue('limit'); @@ -48,9 +52,7 @@ public function initContent() $categoryId = (int) Tools::getValue('category_id'); $categoryId = $categoryId <= 0 ? false : $categoryId; - $controller = $this->get('prestashop.module.smailyforprestashop.controller.rss_feed_controller'); - - header('Content-Type: application/xml'); + $controller = new RssFeedController(); echo $controller->generateFeed($baseUrl, $categoryId, $limit, $sortBy, $sortOrder); exit; // Stop to render XML instead of twig template. diff --git a/src/smailyforprestashop.php b/src/smailyforprestashop.php index 8adf619..0535930 100644 --- a/src/smailyforprestashop.php +++ b/src/smailyforprestashop.php @@ -88,7 +88,7 @@ public function hookActionNewsletterRegistrationAfter($params) { if (isset($params['email'], $params['module']) && $params['module'] === 'ps_emailsubscription') { /** @var OptInController */ - $controller = $this->get('prestashop.module.smailyforprestashop.controller.opt_in_controller'); + $controller = new OptInController($this->get('prestashop.adapter.legacy.configuration')); $controller->optInSubscriber($params['email']); } } From 335f22461a052a5b2f30c99c08d3d2102c14e540 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Mon, 29 Apr 2024 09:37:27 +0300 Subject: [PATCH 068/114] Replace serialize with JSON encoding --- src/src/Controller/AbandonedCartController.php | 6 +++--- src/src/Controller/CustomerSyncController.php | 2 +- src/src/Form/AbandonedCartFormDataConfiguration.php | 4 ++-- src/src/Form/CustomerSyncFormDataConfiguration.php | 4 ++-- src/src/Install/Installer.php | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/src/Controller/AbandonedCartController.php b/src/src/Controller/AbandonedCartController.php index 8182122..819e0d1 100644 --- a/src/src/Controller/AbandonedCartController.php +++ b/src/src/Controller/AbandonedCartController.php @@ -180,12 +180,12 @@ private function generatePayload(AbandonedCart $cart): array 'email' => $cart->email, ]; - $syncAdditional = unserialize($this->configuration->get('SMAILY_CART_SYNCRONIZE_ADDITIONAL')); - if (in_array('first_name', $syncAdditional)) { + $syncAdditional = json_decode($this->configuration->get('SMAILY_CART_SYNCRONIZE_ADDITIONAL'), true); + if (in_array('first_name', $syncAdditional) && $syncAdditional['first_name'] === true) { $payload['first_name'] = $cart->firstName; } - if (in_array('last_name', $syncAdditional)) { + if (in_array('last_name', $syncAdditional) && $syncAdditional['last_name'] === true) { $payload['last_name'] = $cart->lastName; } diff --git a/src/src/Controller/CustomerSyncController.php b/src/src/Controller/CustomerSyncController.php index 95794aa..0f4d247 100644 --- a/src/src/Controller/CustomerSyncController.php +++ b/src/src/Controller/CustomerSyncController.php @@ -179,7 +179,7 @@ public function sendSubscribersToSmaily(int $limit): bool $offset = 0; $subscriberCollection = new SubscriberCollection(); - $additionalFields = unserialize($this->configuration->get('SMAILY_SYNCRONIZE_ADDITIONAL')); + $additionalFields = json_decode($this->configuration->get('SMAILY_SYNCRONIZE_ADDITIONAL'), true); $selectedFields = array_keys(array_filter($additionalFields)); while (true) { diff --git a/src/src/Form/AbandonedCartFormDataConfiguration.php b/src/src/Form/AbandonedCartFormDataConfiguration.php index bf6b176..d743fc1 100644 --- a/src/src/Form/AbandonedCartFormDataConfiguration.php +++ b/src/src/Form/AbandonedCartFormDataConfiguration.php @@ -50,7 +50,7 @@ public function getConfiguration(): array $return['enabled'] = $this->configuration->getBoolean('SMAILY_ENABLE_ABANDONED_CART'); $return['autoresponder'] = $this->configuration->get('SMAILY_CART_AUTORESPONDER'); - $return['sync_additional'] = unserialize($this->configuration->get('SMAILY_CART_SYNCRONIZE_ADDITIONAL')); + $return['sync_additional'] = json_decode($this->configuration->get('SMAILY_CART_SYNCRONIZE_ADDITIONAL'), true); $return['sync_interval'] = (int) $this->configuration->get('SMAILY_ABANDONED_CART_TIME') === 0 ? 15 : $this->configuration->get('SMAILY_ABANDONED_CART_TIME'); $return['cron_token'] = $this->configuration->get('SMAILY_CART_CRON_TOKEN'); $return['cron_url'] = $this->buildCronURL($return['cron_token']); @@ -81,7 +81,7 @@ public function updateConfiguration(array $formData): array if ($this->validateConfiguration($formData) && empty($errors)) { $this->configuration->set('SMAILY_ENABLE_ABANDONED_CART', $formData['enabled']); $this->configuration->set('SMAILY_CART_AUTORESPONDER', $formData['autoresponder']); - $this->configuration->set('SMAILY_CART_SYNCRONIZE_ADDITIONAL', serialize($formData['sync_additional'])); + $this->configuration->set('SMAILY_CART_SYNCRONIZE_ADDITIONAL', json_encode($formData['sync_additional'])); $this->configuration->set('SMAILY_ABANDONED_CART_TIME', $formData['sync_interval']); $this->configuration->set('SMAILY_CART_CRON_TOKEN', $formData['cron_token']); } diff --git a/src/src/Form/CustomerSyncFormDataConfiguration.php b/src/src/Form/CustomerSyncFormDataConfiguration.php index 24be9dd..40f9086 100644 --- a/src/src/Form/CustomerSyncFormDataConfiguration.php +++ b/src/src/Form/CustomerSyncFormDataConfiguration.php @@ -49,7 +49,7 @@ public function getConfiguration(): array $return = []; $return['enabled'] = $this->configuration->getBoolean('SMAILY_ENABLE_CUSTOMER_SYNC'); - $return['sync_additional'] = unserialize($this->configuration->get('SMAILY_SYNCRONIZE_ADDITIONAL')); + $return['sync_additional'] = json_decode($this->configuration->get('SMAILY_SYNCRONIZE_ADDITIONAL'), true); $return['cron_token'] = $this->configuration->get('SMAILY_CUSTOMER_CRON_TOKEN'); $return['cron_url'] = $this->buildCronURL($return['cron_token']); $return['optin_enabled'] = $this->configuration->getBoolean('SMAILY_OPTIN_ENABLED'); @@ -91,7 +91,7 @@ public function updateConfiguration(array $formData): array if ($this->validateConfiguration($formData) && empty($errors)) { $this->configuration->set('SMAILY_ENABLE_CUSTOMER_SYNC', $syncEnabled); - $this->configuration->set('SMAILY_SYNCRONIZE_ADDITIONAL', serialize($additionalFields)); + $this->configuration->set('SMAILY_SYNCRONIZE_ADDITIONAL', json_encode($additionalFields)); $this->configuration->set('SMAILY_CUSTOMER_CRON_TOKEN', $cronToken); $this->configuration->set('SMAILY_OPTIN_ENABLED', $optInEnabled); $this->configuration->set('SMAILY_OPTIN_AUTORESPONDER', $autoresponder); diff --git a/src/src/Install/Installer.php b/src/src/Install/Installer.php index a0f480c..6a9ebfb 100644 --- a/src/src/Install/Installer.php +++ b/src/src/Install/Installer.php @@ -118,7 +118,7 @@ private function addDefaultConfiguration(): bool // Customer Sync 'SMAILY_ENABLE_CUSTOMER_SYNC' => false, 'SMAILY_CUSTOMER_CRON_TOKEN' => bin2hex(random_bytes(6)), - 'SMAILY_SYNCRONIZE_ADDITIONAL' => serialize([]), + 'SMAILY_SYNCRONIZE_ADDITIONAL' => json_encode([]), 'SMAILY_OPTIN_ENABLED' => false, 'SMAILY_OPTIN_AUTORESPONDER' => '', // Abandoned Cart @@ -126,7 +126,7 @@ private function addDefaultConfiguration(): bool 'SMAILY_CART_CRON_TOKEN' => bin2hex(random_bytes(6)), 'SMAILY_CART_AUTORESPONDER' => '', 'SMAILY_ABANDONED_CART_TIME' => 15, - 'SMAILY_CART_SYNCRONIZE_ADDITIONAL' => serialize([]), + 'SMAILY_CART_SYNCRONIZE_ADDITIONAL' => json_encode([]), // RSS 'SMAILY_RSS_CATEGORY_ID' => '', 'SMAILY_RSS_LIMIT' => 50, From 1dc1180d7e19941f4c2a77e637edda99005ab9f0 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Mon, 29 Apr 2024 10:49:56 +0300 Subject: [PATCH 069/114] Use OptInController in hookActionCustomerAccountAdd --- src/smailyforprestashop.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/smailyforprestashop.php b/src/smailyforprestashop.php index 0535930..1f3abd2 100644 --- a/src/smailyforprestashop.php +++ b/src/smailyforprestashop.php @@ -84,13 +84,15 @@ public function getContent(): void Tools::redirectAdmin($route); } - public function hookActionNewsletterRegistrationAfter($params) + public function hookActionNewsletterRegistrationAfter($params): bool { if (isset($params['email'], $params['module']) && $params['module'] === 'ps_emailsubscription') { - /** @var OptInController */ $controller = new OptInController($this->get('prestashop.adapter.legacy.configuration')); - $controller->optInSubscriber($params['email']); + + return $controller->optInSubscriber($params['email']); } + + return false; } /** @@ -107,9 +109,7 @@ public function hookActionCustomerAccountAdd($params): bool } $customer = $params['newCustomer']; - - /** @var OptInController */ - $controller = $this->get('prestashop.module.smailyforprestashop.controller.opt_in_controller'); + $controller = new OptInController($this->get('prestashop.adapter.legacy.configuration')); return $controller->optInCustomer($customer); } From f2df082b68a29ff1a1692c6e397a3d95d1a365f3 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Mon, 29 Apr 2024 10:53:54 +0300 Subject: [PATCH 070/114] Add .htaccess --- src/.htaccess | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 src/.htaccess diff --git a/src/.htaccess b/src/.htaccess new file mode 100644 index 0000000..3576e0c --- /dev/null +++ b/src/.htaccess @@ -0,0 +1,14 @@ +# Apache 2.2 + + + order allow,deny + deny from all + + + +# Apache 2.4 + + + Require all denied + + From 22dd840b1a5184dbc7a09d03bb87104e9b56e03b Mon Sep 17 00:00:00 2001 From: Kaarel Date: Mon, 29 Apr 2024 11:01:25 +0300 Subject: [PATCH 071/114] Provide PDF userguide inside the module --- src/docs/USERGUIDE.pdf | Bin 0 -> 369585 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/docs/USERGUIDE.pdf diff --git a/src/docs/USERGUIDE.pdf b/src/docs/USERGUIDE.pdf new file mode 100644 index 0000000000000000000000000000000000000000..0baf7d5f7d305309ac3b3b7f4b469b6f976f885b GIT binary patch literal 369585 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%0AA{hPwbQ6cL@KyqW| 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%0D_hmLjeUBWhB-0+jj`KP}% zC}@Gc=w3RCz+z%OxQdTⅅ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%0D%WaSEovU?#l1g82N1ytj0nm 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

Omy{|(z-`(BAu3WkOwM``Qi~we zxjoreG9O1PKZ_`DJxtiQu&IBRvZKqjal#f1`PB%yq|W&&*N{%xt4vsyb9@%m@JNu^ z%t?x5#&W~`ZcW+-(mKI4&TgfSwp{x>L2lBI^09lZx`p^1hRA(WNvCKQ=cU!rW;Wze zQ~N2e{PC?fE_iiK9#1v&>E+F_m+o9P|4gt~H0L_F{?M(45UKCdtA*d{eWdNUtGI1k zS2qLHDw@F9nIxj^t?2n#)v`8RkL-3guu}_L@Cum^u>FH61OF0Rue|7;y^+Ap&{W+t zY9uDrjB*mF;8hlDk;F@L&6KK=$L)&h15Ji=fV)}h9DKCK_5sI?$4trG3iDVmPLQVH zG}l@(dP%jXgF)9e%fLlH)En>tCrYDsd>BQ4kO z^4lONDotoB@7Kr}<2*AS|5d@Xbsm>9^IwwlTwZTa&sq!{A+_&a(*|Oc-M=HEO{nOo z??|iYs1%9fi!x2@dS4{05#6^sd$Q?vjnxE14dcV-_#fVt-BpQk)#KxiKMY`B@^jTR!j;WcgfzASB2|tUrNdtomEfbm7zKu(dsR!p;A;rlQWd-UNQz@ z$lFkfripr`BLDD$(nzJQGyKcT-xt{`QX@hd$bAVuT+&dAR2ibe0FD^feT6jDmKzDK zwZ+DQWNoO@=^aKRRXh#}r(xi^5DBMgHHJxse;M0ClL~+E`HDg++~6COM(U;Iu^)}p zhwlG`gE6KdNKbWWcLI#_u#lDvU`R;CTWClW(N{=FEhSK-H|od8NH|?!4^o41a3J%= zEu=uB|NbC~fsvFZ=^T=P3(zYEK@Q~clBXNPeoNcR_ASg ziGFd92j`@T^rE?}QI;RPIj)55&PAg)QVQQVf$x+c%5O0AFm#(wXVO#e=gkGwlU3o74SbKMb28sJo%TEaAXkjV8JUKt!j@$M{ zoR2$ozVEukw-M8K9y-Jc^%FZ&HSndny{etGF{L~GHP;>E)mAS0xXKZct<#`UYSxEmeX{@$ZGj9pB zq(KmA4qAYqhp%*ugMs^e(VoP|b-!HX*ZR0EHK|)KSz`5dUcZlfdJWVU@@VB_H!tya zkC*O8fA|ic&L-kzOPg1-Cbpd5@pk3!TN;Kgvq9wKx#PQgI;ZR}7T4WRMk!!<-2sV@ z!Dz4SzJ(o&siV)+PYE2Xu0F5{(Yl^p?s-8-E)PvA{p;D6mxtn8$NlF{8lKim?rlwG z!ScUP>ztJEqaM%t(Z7CC+QhD1=0e%DD8)y9GjVZx|JRG*|8~XX&+JV9Iy^j_D$WG+ zSv{c1RejRFqY^3#PX4-d#fALlw-tz9*NzfsH6GPgfbln?`uyRY*Vjb1zq>1~d9OM0 z7pQJdWt=a!m2JVqkkoBdtMJIL>aa+7lwZS2C%4-MjzS+d`R}scL7IAT{e;AMd!lT$ z&E3PJ!g_k*%2yX@f=BcthLQDa2S@Z+%+k@wo`Oxn zQs2?&nUSH*Ya;;eQ{xX*%S{~*XJ*$>`YGVH- zHg<6LAgg&*3}LM`;CB=sz}7(SeQA8E-Ika}p|lv+w69wd_U`hc`C|UEJtj0@^w;+8 zUN2rV>?{_f zfh^4vernW#JkN#0iu_0gd1RDx$DEj3(LoSv%#C7%)139$Fm91NvL}(P39$`y#OP>( zQHpt9wqRU(9tk_AZ(jc`P&Ar5N}S5fJt=+bch&O)st3 zx~jc>kmPy?@5y;w70I-O8(rfwPp^n41=8%PPYojPFlYw4l+&5vbALOq`}{WfK^jZ@ zf}ckXEBSOH>??DWux@*(&s^6zuwAUdNkLA9V z_&&~a2#!i_yaSg=dt>cCwwW9lZ~>FMbG+cBRsB(r?w&@i$zj4*+i%9@yg}oi?F~wM zm1PL=Nz=x@eh>BF4VRaABR=`YVKFCV32CvzcyQxLPOMI;{Kdf!`UCInQeEl)#@%~I zHI;?^!j6tIsEDF~B4yNxXb@0(X9N)qy@Xywq?Z7pmoN&5QWXuoNQXdZA#{j>fJkov zLI+9cy@e9KjWhGU@BQw#zIE?f_pWu<%^zeXoSd`IK6^jq_xzscIcX{xur?(j6Ht8O zuG;j;$EJ%=W8KTwvS0OzKVe=>jd|92nkK@jG9}f4%+Ry5XuM>0-cxWrdX8NMV-faT ze$vcCtU9v=`y}e}N`nY?=<#m?k)i?JGNUZfNKVCjcF-Lr_@py9~;4)E?=@iFr z9jAJq2mL<&CG|>^UuZ00R4o`MUR_MZ zUH#()^+EI~>%*POPkB8|@~u6*R)`K>oG5*;TndAzRWIxl`}^PL9N*1yuwA{apxU8H zvAY`>tLrM3-=I~XZht6gk0erfSGS{Bp{x@*&evmCHsl}9bMn@<8dub>Gvxx*Ioq%c&Yd| zoE3he(cvkdexZ#2B0_Jf{>SMo?IabU{Oo-jwK%saxARgfnU@^;7&ISQ`YDUDxH$}u zAwJ>|gz-B$v4Q7bZ$_5B^(!h*@N0n7%g)bV^6n(m`T{1swAu@U-!rP?YICC8gXk50(>i&*S}fu->{CC~q(=F>kfZZW z7i6D9p5}qnBllvPQxFA>)ny%wdGS5Pa;E0MN_G_74P2n2&r}w)X@yzIQgB z6jh02hO1PE-%R}^v>Q$}UlG+^PxN>f;-hcoht7goQl$mz!l&dC8Wla_p_wxkT zeZ%q&F*%AF(bt=tm-=f+B~<(wz(mYX2RQXx5}_p zZKqfZe1XU?J)|Qi|_xp@HbSN7Q8EDZH?Q|DU zrHEOY*suu+)La)AyEXZ2X}(Hgm7HLF`#BdIBZ3kB?bLh=LMjv&fu@%k>`@)AJHLG9 zN5I4%MRvME%x0kSE5uI8Q?$#NYh?8d6Ba+qFORTCxM(?K2xkS_qhGiak`{}*s@^6Z zDNad5$~C@u{y7nM^P##+hyIMrW}dM0D8s9ppAHZ6t=cgK1qGNNw1GBy)K-ET`HC)&hS?eGX~695O3m4Dl? z+^oo6Gks8YjsF95u9D}b=J1&3Wwh>rK=!J#W&}AWLimsb(_5v>fp4kZQ*FwW? zg3$#=PbLCQCB7M-<8Kup_(|0LYKOumli#g)nIjOWJ0 zp{$PX%{8tBOGoUR-YC2t^q8|4&n<1V(1$yqWUiX8>634)$VLw|_rK3&i@eQd94?jc zF`XzfssGB6Q|+506I-rxgf~;+%UoMkulKtIc@sPQhh%Q{kk*63FJ?#1H7C1Z;6~;7p z)V1G_Jmg|E%|i|$vUKWJ-PRE?w@Pi04N-06+2T->?9v+AW5cQmw-U0l-}_yEI>O!x zYlHWQ&;Ff--q$g{yE#j?Zqwn(20Ia+>^l9|<2ERqv9d3Xi76u!@G5_CA^J zJ>jU1a`UNkN`3BI_ehK+`sQg|e(xtfx-16W8bq^o%y#XOYIW)3G4ta^JkJX+I$~iL z*)>~iXgevWm^l%dcL^iXO>Kn!{vn0imK>kcM;?$(k_r9Bt4Y;FQu!&SGtnrgg23VD zJ%)oUL|CZ{T9N`2+qUs7^g;BOIc8Gq;#kFl$dj0Nk+`!ZO5=v;`?w#qr0}`FppxP8 zw+ge!5N5Qk=R9n$5c5F?F9KD`RAcOB5C2|Tx$H4+U_~D);~Un(PyG5?)P}?Uw4gwt zUQow|rK|e$vbi8zWrF}m+aI=8)AnlfQrdz{TaTFYB(G7SMr<`9=uVF2&KH*{!ZTxyp^R~}w!RBe}Qp}?!p9uIgFu|^IXbp%=F6Sa$R|En>_m~ zn8ejvni`rbTG+v@O4eVcsGE1&k0^43K|j{jv|nfZpryQXQppLO8`~C5@5gAXY2QiY zF*8{6!KxfW?#n1`QKl(sFKH|924F}-h{l!}je5?J1EGM3P!(nLx8X6eNa0HB$(|b8 z7&F{3mcu&uC|BuEJhP`h{d~MFfTXCHPk?>cOM-SrlwTvCkMV=}zSHm8p-D0rN-HG| zv}x}cal~OX82s6FE$x(#s@NTu4KBSW?b9S<-SLl1x(Vxo3h8*q8GyN;kHg9E!An`=gf4q zT4l|1Po|A!(8JI42S+h-O`mJMo;aU@g!DZR;B3OY-IWdzPJsy@s-C+;A2h?=h^l0F zG~Rf0Xwgc6S^F_}OMy04Pg6&^CE-~S+%FPr;Bt9G`eXk0WLJjfo3114JL;Hd?&9^X z?9zw;o+Hms;)dD0C4`!={*1(6+s7q4qd?r1`10LVobC>62`4eG>5nNzF85`USvUoI+M0&Iq9GQ1ZizheG>Vu2+cUp7f zK%oQIge&z+x1)zSSbK%pGlv5cMU9ePmOe1_R|=-;GfExGbn_kPcS>^WbRk{t-_479_bYU z+O%BkvWq@_61e**pYnr|OzKG1dl$RRx$8+J)yF;r!y0&gGlQvLW-d$Emf}7AIvMG6LxhnS}pJ;UFpc>iRsFr*$9foP{;XO1RQy~i+gHwbsM-ko9SuzVdc@67oBc7eh}2)$odva< z<6Uv@=1eH#@$~&AF|aW490|P*%P@&y3?uCCG$MJdp z$6vykn}_>~h4s3NGGdN%q{)rw{)WCS&XeE_f2Bn4O{6*a+!|{_9qbktG#`I?A_van z&ZW(jzo7B+BJ-asGVR1=e>?uL{FZ;==Rk+kn0}t%zr3Tk0i$_uro5@wiUz-BSM5g` z`(5_vH7Ay4--A(Hd1+SIVD|!lu~ylE@&h9|We@Q$n+ZqO67KbV*Kp*mc}X!*(UoCc z!%Ihht+7?M5KxGoZ|Qgu2V&ysNYJMqrDhPE69|UxWF_keQC3#gr0ZL&snTrj7_Hu# zrF7T#UWr5J4GgS5i~69oSp#*1Kr$^=8Fb`?A7bZ?RvQtfaCj_i5HWFIofttT8 zzP^f7oE9e z6SXU1DqEP?C>&4Fv)J$vM6V8QuoBs&-6qyPoe7V(L(Og_;04dOzB5bzIo{76>j66T zJ1gTyq|fp#t*wO%#T7aM=%S|^W#7vSn>7s#4Aj-tyK6hpU4vDA#Dn3K_J7W$c@FK=SC9T8x}A+B_P=Jw@P~=4&;g#jPBFAD=gBp91dPb)_EMIHn3^S7QQwC&CCq! z)DZobrF~bs-s={aAobc(^#^t97Z(%39f>*;vq0Nd;i@ehD#d0}G{afOmyLyphr|^36kvgO{@MO2job?jOiHsMn zNjxuAJf{|p^~-iV$HJ?NaMM#>sZy1Z#yfS*;SSGSu=~+%u+TTW0(y&Z$%qwP21_zW z9!NYzKBMF+?+=IUN7U9%V}fyue4QfX3P*Sz^JB$k?Yh_t9r(d8{S9qp(B#HrV&W41 z#>Ta8r-CEq?-&O?-y(&_%OWOw{Exaf2hMOZa!D7PHslIYN{jY70P)MJ(>O=Mrs^%` z<>7O*ww#7@Z~H`O4EyVt_wRG9v{jHYm08t&ep9w_Hg|uAewhn)JJPLC zqJnHkn1iV63Y#7*_Fz49bjt8;A8l~LTIp<(W*Cu&wVKjOqeI&Dwfl^`rj^7+J-dyD z`uaRtRn1u+EMJz{>=+m%l;8CfCtM$egiiRC>swX5! zm`9N9l0Z*@1Tl*&wH=wNT#>yWbI5%NzQvnY2THCTu zE^%HOs!A#+=hf*8sz9_C*vYb4&=edthY6Ii88XYM8mfT@%d(Zb%82erNXcPg@P*N8 zJwe4JkGb`J?{B4X$o9k>(eAPc@p_tF6loaL-YRj7U)ZiVn6QSMu;NA9D^b(Yho|7s zB~#Z8Rdsmj(b@UX7&B-#DR6W1yd8PDmagrurOv?Qb9Fh5r9Ma(nn||TfUsS^jLhUp z=s3$2mhE}T3X#Gq$EK~XM!QaZ(QNs-vSm)(i>)Y*{V@n?Pbdjazcqf^a3}FXt+?0B zW9*NfB)V~dbs&{G69vcFI~lJ^9rVQ^gM#>EqHQj8z(d)|K0=6W>Pv1_@qDe|9f_#I zgWOOhSX(9czLpPKx1JGHiZa1U-MZC_f(INN;A7p$t&kXWm(lA!+AERQHq{t6BD)qn z{>*+a5)HhM#>PfEMy~y(PD=(h{G0I5^6?iI4O!R@o(I`S?4+vggsMumylX9^K8&Sp z2MXxgQ^4BlNHmRkDgWIAVPN15iFEPmDEGab6_axDe64%Kh&G~sV(YAgzq0F4h_Hd? zVPCvfclGkxhitNK0epxZOvNV_Uj;~FiLI7~^IPUTrYtLqyhDy!PsjsaKiw{IbX`=> zI!<;Qt**xEc~?k~duIyk6CV*4zTdPqUg6eU3hnhKIt)%ZOLwgeg@*x7S)$v z9ZUsg&Xo?+o5-%l@`K9(+XO~EFUY-p-{_^!Uv3c-KYrAf){SwjW4+JWLGnCF*-h<8$cbMCz@639vc`vkBuVDh4(Yu+4TukHr|F>QP!q zVM_CAu`^CY#n4+~8YP;G&15e4q8;fog;y%{x4^|{7E19qj9S-dfV^rRiW3lCDszJYXF*p|H zNoz{_OChgMM<^*eE|Yp`<@@y%d5CssUn!>k>&!xAkP-Gh_KnxR<4pV(<^~z}X*=bT zFdYTddv*co7bn`wkMurG4i)E-6R=KMx4hhf6GukI4qsb8*jM946*JZOu;z&al~hKK z?W}VgF0Nk3A`1fFzJ2Qbteo@Eh_BEw&F9w5v^EtjhYOrCI#itAqCbW<+VoQc1{KsvGq|xQ38#;6~zBBPv4pfixe*5fVu6;CI%wuLAGlfE>hh~$j z@2Ble#qDK~9lraWy(niM_eD~6b;OxuA<=eSR#tw)nVJ_iHa1=sj%z!xw(5=2^~XRkCsOkqtuy{FvG5zz$UI1m$|$szKQj zX#NU|DL(pSZ)-sM-oF6GNp;SaZls%*yGh&y+ds0@r<#{8y1l}3!>f!7jCweI^H^E zPo1Aq=^qB;0*A^@q1+0Jm59F*yY%J2)S3b70p&1Z=9jj9ohLN}ek+m)bp$MN@k_3I zpo!$XH*8;Z6inZlBni9zv&gJYTJLLS=Yl{Ro4I~zCA|c+Iz-pQZJCr8(y3=D*`A%0 z9vr(Qu##93!eiEN${HFnZ@LkaQ!%FjY838H>4<69Pn^2}emT3&lSU42)|UeV?z=3k zN8kU;DHg1R)Am&L*NoWRuU&MJ?Qj`(=p@lR`{sBfhZJktT+X0pOy@dpTX~CiMO!-} zKajlG1Da5Auq^!O-QaGV}5O$c$ zol1ANC-h8|vevP$ZIA4JV|Mmx>;}Yp8)>VKGm>otHgDsN!`DZC%pXaGfdZ%=q0wsO zj!evs&duE^h_urNQEgzp4K(a&+_rmtAryY-=A4Dk{iq*Pm-`%YMU9_Jx{Kxk39~5U zQY$^e%5M}PQCn&$;--yS4d6!pT*`5T9I#*le+f16U0&vS^ym?XjJMQ-IWAeci`Q8Z zeAeP%2ilQEb?P~5>1gYnN{aJ*S_^drOfud^G{Ij%uAWxqRY?>KE<&_`ghhDek%xgY z)io=`#%UnZ+L^VM3X2T5(dy}YJ6tNla=|@ptSQg@thEXU!V}7u{J+WfUcRm3Ax5y| z>&|6zAS6TU_-@1$44T^Iv~33j*iISy?)y6PBm$>=1Tp?neyOk&`QS&0&R{;=XP=8l zXhniyn5HYYIUjpFFSvqab$m-4IWsUZ+sW^2`u%_a-u{Jfq0!H0i%aY)!90dj;^aUg zE#UQ#DE@dgNqpcXdFJZn!W{-n@gLOG#*+_Kb`C;ddY1c6>6JHO%y}EDt1>P|UAeeztEBI?Qz7Z80|-opki*>2CyjH6 zlw`XBL`P@mIBsP^SGOLNuAD7sY9|42PuIen2NTG|c}d)STgr{EpJD0c+J`J@-_5UP zaaG_S*REyW%$kf-+bCP3Z8y*L`qMYJS)SW-GQ*ohJKkmIDPwuEvpT}F2ydC%x^$G(9ql{ z=&cq4>%3N}|Jo67UOfmmfI;K8#?23W-@i!O3FwPWnXS70tlAOt-oNjfC_}--Z%Sxx`MM11wCzP@-m8#K0V?rm*8u$~BJOuTsz_g@cqb&?-34m_V(0w|`- zd+#1*;nL*(PrrOZ@qy!xmk{O)-p9%tU<|9X@Lk~a_n#Hl{oAR} z+C22Z*E3f$Mi^GP@77ps-FK@EK0fw;$?Ie2&tX*Lee4rDZqE){q5tptvwryxaR~aK z3w-OmBJuk_SE@il=K`L#+=V^YJg&liJc4&A0(|?QY+lj7eG2oHo67#m{qMl2PoML6 zqc^{Vrj&sIGucZ+O1uW~Jf$-f24U|B?7sSnS8Rq~rw3YrkWWeqtm<9)J?C2(>3+ zPo5MkI3J(oM4jYMRN+Jg@4xSq*6^lgZuOrS+h>k{-W~qN+&=#=cwZ9)H7OHt&OQtU ztE2{QA2qsxiL-WQ?eCuQh`u2IAa30O!$O@HPiMNFl|}6|HQ{bHpVJ?Du=W;zRFeZ7 zTHn|j+v!7AGh$-OC#J_uO;~9s`-62i^OyqtA~%n()fLc!`%@0~swh-=L^14Dfe{zp zX$Ig*-1kgDLFg|)_54xOUfsl}pYC3ExN9T0F%mA>OSC`sN5b3;`N!&3iZB2> z`1PKFu=kqnhuFZ3LQZBhn8r^bz-5;5p8P)Vrw9}wTq_{I3ORrYdo^fjX5vM#h5t^Fz z7WC>G^V@bgC~;#`b40y_E?qa2zIW%IK%-9Kz=(>ZvR3Q2j<+f>XFW93OmB0T?b<)X zv8`c>uJf05XealzH;aj+I39sPz&xO1;M?Ct4*{6ZI=8U0`lpf5*h_mFTT`rdA$#9Ssz#uNmJj^h3s5pkwQnkCfPmbito zdERpHOnOs|>O#NkM#Y!8Qc$(;qZbD~7N_8O6$&-s#uW~QWd6Y_!%jO(M{zdSnX!f~ zx>H+CCN<{c)nC>2)%{+KzBFfh{n{!?EYG?NQ$Z*^{=g#eeRw2~|W8dGdXgDocZjxwo(( z?Gw=nlBgjGjtx8SqoGhYmuPi!olG`i%jd3b!@#=*dQiq|J>S6YDp~fnzETO!9zN7 zw^X-bya`o$Xv%_di>$A2g?h5)>gT)|_0}9~-Hd=Y-baYnBDk?5t9-==>0$GdA9Njr zR;=K1Tap_`&!jGd>ecOk@{(w;p{>5X{hTSP)JelR$ga%#k6UDZ{zHo0i<-Ae_x(=? zcbICnMMs#_km^EnZ}u@g)zhBIL;bGCgGeFcSqqUeCKOX$ag6OB50vmVQ(n?UNJIddr|Nk z&U^rvR2ii0xAEkh?#tWDvVD!^k;&gsp1=*Cp1Qn9*<2R=L0qb~G)U+z&CDKSx_rA+ z%xN~~>h=m8C+h0wC5XF_}C%&FEz*^={=uJLL3+tiT?t`L91kuB~kuQ!o@Bv(FHbTpDhy0z`1we$Px{sTxS-2;-8b zn%>8JdTT%2Uc_PVv>Wa0M34Eoj#7 zUq63noJerCI!yhO0oBrR7=PbT!lyx&FGGuBMb8zi&^BJuN}HatD3f(?$USTRP~*L@ zmOsfyHOUlrl+%Do>|~lxiLkK~Nf;GF9+m|SZ)*!_MdFVXABRW5fUT#_ENn=xW>V>> znsimdQlxndY)ElmdE2S=t=tqf_Nx+sxQ^>&<}34WNbLF;a|5f(K%H)RK%{)Sz4PJp zjC~pqc5(0e?#~}OHjH)Z2P<~nIefJ%WCl47hIQ-j_FB>;0dCem7?~7c0*RU-Fc)2EDv3v)D!o8Kg=VHs1l~!WeZ&TM=|eW*wK2e;w|< zTI5TZp-@B-{Wk`-C&yZ}tm4dKae?F;b92`W{=D4%0D)&VEiSYTyg(b^kg^=rzE&I( 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

+ {{ form_label(customerSyncForm.optin_enabled) }} +
+ {{form_widget(customerSyncForm.optin_enabled)}} + {{form_help(customerSyncForm.optin_enabled)}} + + {{ 'Smaily uses ' | trans }} + {{ 'PS Newsletter Subscrptions' | trans }} + {{ ' module for rendering the Opt-In form.' | trans }} + +
+
{{ form_row(customerSyncForm.autoresponder) }}

{{ 'How to create an automation trigger?' | trans }} From 0df330da4019660ee817449e9751374a06f231b4 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Mon, 20 May 2024 11:46:21 +0300 Subject: [PATCH 111/114] Add translations --- .../ModulesSmailyforprestashopAdmin.et-EE.xlf | 36 ++++++++++++++----- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/src/translations/et-EE/ModulesSmailyforprestashopAdmin.et-EE.xlf b/src/translations/et-EE/ModulesSmailyforprestashopAdmin.et-EE.xlf index 71312dd..7239d4f 100644 --- a/src/translations/et-EE/ModulesSmailyforprestashopAdmin.et-EE.xlf +++ b/src/translations/et-EE/ModulesSmailyforprestashopAdmin.et-EE.xlf @@ -37,9 +37,19 @@ Sätted salvestatud. Line: - - You have selected an automation to trigger opt-in email sending. We have disabled Newsletter Subscription plugins verification, confirmation and voucher email sending in order to avoid duplicate emails! - Olete aktiveerinud uudiskirjaga liitumise töövoo automaatika. Me lülitasime välja Newsletter Subscription mooduli kinnituskirjade ning voucherite saatmise, et vältida topelt kirjade saatmist! + + You have selected an automation to trigger opt-in email sending. We have disabled + Oled valinud Smaily automaatika, et saata kinnituskirju uudiskirjaga liitunud inimestele. Me lülitasime välja + Line: + + + PS Newsletter Subscription + PS Newsletter Subscrption + Line: + + + plugins verification, confirmation and voucher email sending in order to avoid duplicate emails! + mooduli kontroll-, kinnituskirjade ja vautšerite saatmise, et vältida topelt kirjade saatmist! Line: @@ -327,11 +337,6 @@ Palun sisesta cron identifikaator kasutajate sünkroniseerimiseks Line: - - Please select an automation workflow for customer Opt-In trigger. - Palun sisesta opt-in töövoo automaatika - Line: - Please provide a cron token for abandoned cart synchronization. Palun sisesta cron identifikaator unustatud ostukorvide sünkroniseerimiseks @@ -392,6 +397,21 @@ Kasutajate Sünkroniseerimine Line: + + Smaily uses + Smaily kasutab + Line: + + + PS Newsletter Subscrptions + PS Newsletter Subscrptions + Line: + + + module for rendering the Opt-In form. + moodulit et kuvada uudiskirjaga liitumise vormi. + Line: + How to create an automation trigger? Kuidas luua automaatika töövoogu? From 53a43c7c5a9f94cfd8720c8dab02ab311b233d8a Mon Sep 17 00:00:00 2001 From: Kaarel Date: Mon, 20 May 2024 21:10:41 +0300 Subject: [PATCH 112/114] Improve warning message text --- src/src/Controller/ModuleConfigurationController.php | 2 +- .../et-EE/ModulesSmailyforprestashopAdmin.et-EE.xlf | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/src/Controller/ModuleConfigurationController.php b/src/src/Controller/ModuleConfigurationController.php index 0ed712e..40c7458 100644 --- a/src/src/Controller/ModuleConfigurationController.php +++ b/src/src/Controller/ModuleConfigurationController.php @@ -138,7 +138,7 @@ private function handleCustomerSyncFormSubmit(FormHandlerInterface $formHandler) if (empty($errors)) { $this->addFlash('success', $this->trans('Configuration saved.', 'Modules.Smailyforprestashop.Admin')); if ($formData['optin_enabled']) { - $message = $this->trans('You have selected an automation to trigger opt-in email sending. We have disabled ', 'Modules.Smailyforprestashop.Admin'); + $message = $this->trans('You have enabled triggering opt-in on customer sign-up. We have disabled ', 'Modules.Smailyforprestashop.Admin'); $message .= sprintf('%s', \Context::getContext()->link->getAdminLink('AdminModules', true, [], ['configure' => 'ps_emailsubscription']), $this->trans('PS Newsletter Subscription', 'Modules.Smailyforprestashop.Admin'), diff --git a/src/translations/et-EE/ModulesSmailyforprestashopAdmin.et-EE.xlf b/src/translations/et-EE/ModulesSmailyforprestashopAdmin.et-EE.xlf index 7239d4f..556007f 100644 --- a/src/translations/et-EE/ModulesSmailyforprestashopAdmin.et-EE.xlf +++ b/src/translations/et-EE/ModulesSmailyforprestashopAdmin.et-EE.xlf @@ -37,9 +37,9 @@ Sätted salvestatud. Line: - - You have selected an automation to trigger opt-in email sending. We have disabled - Oled valinud Smaily automaatika, et saata kinnituskirju uudiskirjaga liitunud inimestele. Me lülitasime välja + + You have enabled triggering opt-in on customer sign-up. We have disabled + Aktiveerisite uudiskirjaga liitumise automaatika. Me lülitasime välja Line: From 0eebd84f5239f0ef437ffa3dee2c7a32a2e2264a Mon Sep 17 00:00:00 2001 From: Kaarel Date: Wed, 22 May 2024 08:00:13 +0300 Subject: [PATCH 113/114] Use regex preg_replace --- src/src/Model/AbandonedCartCollection.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/src/Model/AbandonedCartCollection.php b/src/src/Model/AbandonedCartCollection.php index f0b3b08..bc06d7e 100644 --- a/src/src/Model/AbandonedCartCollection.php +++ b/src/src/Model/AbandonedCartCollection.php @@ -54,8 +54,8 @@ public function __construct() */ private function getCarts() { - // Legacy method that requires trimming as query strings were previously concatenated. - $shopRestriction = trim(str_replace('AND', '', \Shop::addSqlRestriction(\Shop::SHARE_CUSTOMER, 'c'))); + // Legacy method that requires output modification as query strings were previously concatenated. + $shopRestriction = preg_replace("/^\s+AND\s+/", "", \Shop::addSqlRestriction(\Shop::SHARE_CUSTOMER, 'c')); $sql = new \DbQuery(); $sql->select('c.`id_cart`, c.`id_customer`, c.`date_upd`, cu.`firstname`, cu.`lastname`, cu.`email`'); From 60396e4ad713f9887623970c0c5489305ffa4034 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Thu, 23 May 2024 07:53:32 +0300 Subject: [PATCH 114/114] Remove extra space --- src/src/Model/AbandonedCartCollection.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/src/Model/AbandonedCartCollection.php b/src/src/Model/AbandonedCartCollection.php index bc06d7e..f372bae 100644 --- a/src/src/Model/AbandonedCartCollection.php +++ b/src/src/Model/AbandonedCartCollection.php @@ -55,7 +55,7 @@ public function __construct() private function getCarts() { // Legacy method that requires output modification as query strings were previously concatenated. - $shopRestriction = preg_replace("/^\s+AND\s+/", "", \Shop::addSqlRestriction(\Shop::SHARE_CUSTOMER, 'c')); + $shopRestriction = preg_replace("/^\s+AND\s+/", "", \Shop::addSqlRestriction(\Shop::SHARE_CUSTOMER, 'c')); $sql = new \DbQuery(); $sql->select('c.`id_cart`, c.`id_customer`, c.`date_upd`, cu.`firstname`, cu.`lastname`, cu.`email`');

uF7oSRw+cX1YJqsPZf3J03y1r9M;> zCl9ZV7?D|_qyh;6c=eS>B2FIfIl2Yvyw|GZS%%7E1%^*JLVEV;e|R0nBClC#M*v7w zy(^Tj##^bN13+?qz83MeE?PrRmwX5#feo_=L*=t`9%TS5f18w=+kb_gp`sF223kT&0=24m>`P@$Ed-q8ud*dq1Us;m~8L}6bp za<<9kq`TrmN6aQi1FnMBT+77|U!pU%q!8OR9~@v|6b%*Gc2+vgIUo#ph(2aD;%1^ zk``rw!OK!_^`^Hjj?bnt?7q3k(8cHC<&vUhLP+;A6$wgPp!&J#rq#k4P3h?+T2i)* zJV|J3m=`CD+qjj_Xi|R!`DxFHn6t?B4KoF8%3R4frFJs^-6(F!^Di$YRd(-d+5)n( z%TJ6wJkV%j+lAR;m?bbsy^wu|p~&1O?+ocApo0Kzb#YNC8?9UpCDwT?DO5UG);a6h zenQbcEfqC~;nx}}j!&iz$%W{j=}iH(puf#(L|80~x`bEdXo8WJ8l7ZkQjRHT`WJ>b zNU1$iTt&K)A7JNM|DhUcF?2-pYW-@fd0CZT7t@fK?b@sI2T9{F`(<}^*??uM$k{yj zX-nCBrFyQehuy?agc2kG`=O6vKNToZe1T+!E>}&A=_m4kv?I05tF&&0>#00IQ26|Q z?k=#=`Dv-Nfy*`i?PIkCB4}U@Db=dp)g|uW@k%&Rt0kH>9m0mfr!Gn!3)3Q3Wpe_< z1V2AU1P54Dom8dsu!V~Wg;%Gr8?d*O0r|8aCS_Cr99&=@EJ?6LR;`b?b`QLoZmfpu zlYo^G7M)$G*8TK(^wG4Q8{J5C5fItOM!yp8b=I|dNsOI(o&-#rfa_>sSh=Y%yGN}m z^a>GyoxXZg%~))CSjI?Z-iq^p4f8x+>tpwO&9~^R%z{1GL7BR%)P8Bm-d9QGvL0#n zpW8iR@%7)}ivG}19)z9LqDBNYcoQp9p5%aWu-QnLpGqI)gQ}R8AVPu7&!guJeLuRn zc`Y>^aC97IUOCnzzUuXDvW;1Aa!Eiz4Ru`7b6`wgH;^1OOIl542$TjOa;?zKquJs>{4p?Hj5pA9?32Wh zt8UZxhi}7DCh=y3Q1^!pjlkTnd+5ZBVVCq)g?V5dhQ0m#z)_n zP$zoCTqIi;s833%bb83EnST#bC8J;j|!YMDSaRC`<$qgU%r>am3a>SzFx_jVwrT*Y+p7c=d zt+*<`O{;DI>FX(9k723*k0u}1FNw*tz_FPiI;@oA9 z!K(^o_p?4#Zal^T0g+!QV8@*Waby+s5^wQBdhu!$camfttAL9$FhBT)F7uUrPhvsX zck2VNk!DlZ!L=5tHc@+)2 z`b9nx^Ub%L=NWi&w1nS*InMDmwd!N&&kC}we*>R={|7dCAm$@d)>F5%NVehZnlHzD z&7^u>SAmHtGp&pMDOQ-C(y7sNSIRf9@;q_LtTJKPFW#tY_!gsWMxRri6brDPZ;a`0 zST@C*Ll|=bpTXc`xVolqV+xDAk{qH;)3DSAg$-OHRzC(Pm67 zLha3r=GMH^&u%=5tQ-J+M(s>~xzClzf*c+UjRZ$RX!pKvo;kec_so+_|6^d-|+O%*li#^O!XM6Hj;QB=- zfGC89t_1_AA$a@ckMBSp{J{0=n|Zlpr~dJ{p9)zD9|{0gA=J0l07y{S10VvmFty}E z7T(<4C#>v;6xybH=*hFEECGBb9XmMq3ebLl0qL{SmOg!M>Jh!^@>~+vrkCo~K#Bhf zXM8*;WDLBpDG1>N^4qBiH5@PQu)lbsg9)IZ?QQzwoNSK1Kqxq=fe{wJ1bT4wft!T% z`EIFnH_M+ehk~0yo^$I!-fyyozNQaFtN*Lu7N~fc(%`@5LwlxJTm&2Xqr2{OhKzr) zdC3J?=)MPjGl%X-5aCh8vDZ~6AD=U;G3LC$GI5*nOmYQ~bZH{^TcX3F3Xtf~R`^DF zD-sUNZ~iU7VQKFF71+}?ztkL)6_!|LvA;Wfgrxt0#j@U6?eKP&-n_ zsh_SPeL!maSi1HBfUByiev(fS6yy^Fhl{}hz{IxYJ)#P;*cXiU_ZBlq3^ zsZ4_>NHi$F(o7Zcx4MVXC09qk{2w#auSs8=F6ZANeVzc)C8@VdGO|IhNV$Co>kVLceiVlD&4!keW%8-@x z-q{ON*X;4M;B@n?1$eNIui_)tR_Q75VE`fWpT5U4=g^xW@Nhw7?4URw{Nax5b-il= zPJ{d(av0oP)W@QL%qT$n1lam*uQhZ(_*;p;+Vf=Rp)-I=i)YtMfWkROs12lj{QTIi zU-oSvB~sv;pmCK3{g;rfJUG1bVoy3|j!MCBi2}ri^~kDwhg^l@O%be-p|lLHIO)2M z_(3u`{UZs0odHIP5f;z@x>H^T&1=cepWz&s3_YNv96P}n4Ul}r&5aGLSJmBvbxiAY zJqB30mky!vlGMC(Oa8|GDN-K-?_&=nlss?F$xeFv{<29c^W?#9%CgtmDj|JQ91!|| zu~+k!0V)6khdIU~^*{njO2jJw6YM{Ok(KlSx-l_mbD-)?8^C%+%?9Sv*2+Rtpsr(e zZmp$%R+ex-Pd5BWSzHv>rpN-B=qWeN=$%#W>eB<6&kaDDuG6NC!`UNGIp4D!5->jh zcoS|>f5SPC`I2VCr(4J+X=LmGCEP^*wI^IF9G%sz@RWq zR3oIPa^AZ;O-3#h^iDg8U;JX|x4NDLFe3mPL@qUhfTTe5{4gacqpO6;YQP>t)QnKe z)J~T{7ViU8>NN|a(GNAlW3R~6Aa{@PW*%H^@f9|?wVlX6fSjGr;IQ9~_S(}LNXh}g zVZ$N^pjYobzrKl4?WWWgcr0$U1C$FPKwhELc_WRbQ_xKBp59llzy_v*8aw$w+6_-eHSTZvF8K~*&vYLQ^#E<` z7o22pNI|boC3+c16B)Uj4g>{{{Ghon%hbSY`o;ELme3+DOZAoZh$LyRU7shGD1sY? zQjH<_NdGv~bLzyCKPAMQY&BR;zJGI6_30b6tDZdyC$HVVaP&q@e3-!+IY`I6)ck^Q ze_zbXT8VGD8m!odvQIHLBtkGff1v5dtoJ?xtflokX^ll7^Mvg$ahEMz`Kj#%yX_!l zt>}*RV0ruJ^(Xmn&9&53#%H=97b{aUS!~x`p?7b&zmQa+Y=z*1p!g_abXv_lkU7S( zKA@XQsI$W_xYsZ5kAONjJ3??3&=Yhi)peT_1v3tA7WeE9vX_81c39#JmsmBi^O%L- z_6Fnev;E2QA`bGq&G3Dq9~hEP2pL}gK9S=YDjdxfBsy~7PG8$HU0YNUcu+PLmylpG zfm_VcmX`d2Mu?>CNM~7nk(=vT2`8!=&Cr-x$ZPAGy!?MH8SkWwK9vW0QXZK&i54BmgGUQ|L=} zm*1~-48V(zpwB}~e%I}ZK9F)fr(9G1f2x447!kW$y=i4GjvC&F!MPoAbP_qCnB65? zz_a%`pwT&JRXRN6F6;Tg7xfSfs2gRv=cE)ti_qma(bqR`*C-u%ny#{m7l=-kmYe2#nXXC(kgv1S;4yWa!yf%NNfVaVE+X>?>!v&S^v^$(-T=br+|hqL@{8f^SwHOE(;6D98=qg zRoOI+QlzPhWvx|bEX*If7m+9!D(#gXg<1RFr%IoI6D1~j&FWWT!_Z>=ARn{KQ;$5_ z9heH>zG@u;2G5g=GBqKwwIVZDZ*R@=!!I&%c=siz{!m~o>o!yjF|O&#haz>r#LTb( z5_6}g_@C-N#~cfvL<-XRw+)U;B|z7+t`+b*`IU^-C}AM+4-hBMzGFwifCsIrzx??z z-GjjPuELq(-exgLZiik*v=RpxLVgmm{ed;Ftc_TrrJLiL@_l8kcIwiC-z9uze^G(X z$M{P9tAnN0$4D%WLh}KdZnh|vG(M#KCa1uay8?#vI8Soy8EL~8Qymm<#i^CH_6s0U zVqMY1Ai1hX){wim=(`2mH}OXe>T08*b#2Oh^Io$slJ0xvbCFdR(nIt|WKRKBboJVw zgzN;;aMhE#>36H5pm*9P+3WqQT|2M7m9MejZ#2zG(nG7Oc;Cu;!UeuMW)5zvYn1u@^HO+qpb!;NP&fK;oEzYSujhF9y zK3`*`O~NOqLGab13hih24)6r?q!7(9oZ2sv?6UkJm_jUH96QNlPPBtjwo9b0Ld0 z!UqANM>{KmL4{?M+Gli@_GTeOmlF(}c!6n_7d)6hLkuK%U#$=7$lT!5eY?Z6C91@_EN!y~+sv-t(^f z?5lDmOih&;y;?V|C>BcFjA;w$KML|pRplY?BISCnw+1xHDmMg>Pj5Z`Mq=blI!xM7$-Cot=%W)q^OT>cd^BtH_0&NB;IJ4BGN^phn}O z8#*UN$j1EeR;?n6wf+i@`8J2fCZ3TYJ`}%eNvqN;%O4)vOisg zQv&KW4vyO)`Tc<^yofV(3uC{A8cCoP2s$}K#aYiiFcNT_D@lzKV3N`)Y*#=P?z)fn z$l_d7u3E2Z3Jbv{+#oeK@n+G>Eb3QKbH~3sx;iJnN8jK^-Ip`f^m=UuiHBxx}%1wV4%qJ;Gt6{muJSm;W)%E>c$9AJxNv=dnv|CJSt!dv$2Kh!%+GQJ# zGd2-EylO@?9ZZ$YCvMz=QAF*5tPi=0E!(I~L>b+pQ?OfD&uFd5x=lL<+^Cr?p!!y7!Fn6DJi zxaTu|J;g%TsD#dLwMmkF?X1Nvw2xO1BoWPm>x{6QX=+#TPs(X2K;((@Cn=T} z-L1_!Ri2bjePA^xA!<6w;p}dIa8salg^+#aVH;tqbJaR;R%j$yECnUh-Gh>R2+NL| zbPsCS(bL;eYaHTx1~$aQH9oP4=dihYeh1;$+;Y~(kH0hg7C?TiTkfxTnF(*4(1hIr z>}B1Cv!qyhdW=8J6tEDsUZZD#)v{&Rb#0CXE@+ul?j069 z@ag7CeamV@ycz`!N;JNO)(*zV?f#oIUIKsKTRpE)veA zLxXeL{&~#XDcuiw*9O^=BI4Om0IrEv5~AAY^gA)@eVTpBs;i%lJy7Yh_X3xchlkuJ= z^EeNQ*>~^la6{Nw-oCbAq^73L?Ect^`zy6-?pL=!T7YYIINTjkcoM*!>zrXPUjIJ-9@8z<$gwb5*YC%@4|vB^-QVu;Iq;K+;ETT<;jheN)?9zPz#ep{ z5taXPiEJ-zm$WbIUsGk5G<8$!6ynPI_WS3Wkg89%PTxBBiF)zgR?7)rYUw!d`OQV5 zR&zR;F8--)pR ze6^-4fs>2_fSf>Hm{7ycE|a$0?ihU;UqP~ndqZ$>JidB)aYsQ~I~P(?c#qcpqwIk| zrBRuAm7fVX3O1!2dEu?gaOnv!`YjZ7%b@8fCLJtr9z7*~D_pB#yXUj-IBg3#OdK`- zG-?E>$EYXd0t>=%e;N~E$~7-`_Q1WaAX1*Tnu114A&Sb}FRgA)NOg$xHfAr%8dSuV zCsodjn|EU>%6xC39K9Qs(Zki9@8+iKBRUp=UDHUz<9n*DdOLlQDRi|9`X!L(mt|zt z)jP+7W)(MTj!%5I;$}-p4smuOpM|M8lJ@A-m*!YRgu!zAW9r527_OlH_FL>tI+%i4 z^NS;Y*pX(vEf&xS{MWDT1E!`>j-3=MZWxy6u{l1)!dwMV^JRg>E1H*KZ+dNE*xfuq zB+;RMtApK{;LH8Z_%S!Z+6UU;Gnl}3BP>j*x}vsr8{D}6WrJN}DO(OLI$sU{9I`jh zYV<%;69Iig)*)O6BTRfZH6xGy)z9uXUlt44%j|tUh{ZYsqx<_ZkAc3P@6RBjHoU%> z_$5FLrS4%(i{<#{THjB;GjowRzG+nnYobEH+3^uc3pa?srQKDZZWH950UHMqdt9u;GBt9JFD>m?)B0u z^^EcyR01zgg7|~yqc(F+iiOKFLT1@lU3SY}g}4+L+BOOp6(h0{iWzdj$}Vwtqb^Id zqo-a(9~VFjbwscV3^m5?n70>GFjiCc%p0E-Lr?dB(DB=gomno!c6d)<1DOokPO6mB zEXH~jBR|GQu2`cMIcH0`JawxN7A_X<6gCRl`svVN|C)g|9>IemMkhUXsd}73av#gR zubBim%ZTP73kj3LA>$UG?+%u}Pr{X=oF&X+a&T^MnoB=+shbzN#l75BZ8$F@OA2NY zGO@=viWXz&wJ$oA2{mw1H{Dg7p7NCsk5rf6z#x(fQ%bHq=%ik`J;<$qsu2y|MsX|S zD|RM--pUvn^_ZS3S2;(-q(w4R@foX^vZ+&|i}?_MaP-=I}5MiVti|?^Wz06HA|lo0tINg)tP@nF4vgd zpL@H*LC9wHDw?Sd7zZ6p4m0u+sn*ePjaP)bjG*Hclqm(vSJejHicDP2$r(NE=E;rc z)Li1-Uil<$#}-uueRiPiT#>&^J(VP#heTDpnIH=EZQz6{bli-N#>!w$2| zX}7V@S1)fUouKPzFs~W$8P*A;kiLw1>47GOpQQ&-^S-D=Id8w_6EU(yV4r(FCepiX zH*)Ufuq&I$gr3z6Iv`0T81Y?HgVz~9zade4X02lg&L+M|pnWn*=a)p-8Xi;j6=mR5 z`V!&)gvV0?I>?)@_9OoBZVSJ=WfJmRf?Y#gor%;f?JP5#X+hNY22&$`&LE_4jXSPF z1NL6nnCFYypy7$Uftajxahq!Lj~3Tuq2<7pTeU4fj)H)gm{7^!aPLb(2)Gnt6w=d- z4D6K?qQ*L7$w(=ExyyS)L-670WTf7{wSrveK{FRuD8HW>!;2_Fwq9`FQgsOv7Nx|m z(|UR-4@;UsGUt`-GKTI|Mv_~c=F#`A$Wo)3Ol*{wGRuop{ofpQ9G{+U*JtCzjSz2F zq!`TDXv?^xFw}DYrt|Cz|)0Mu5V)fv9jIs9a_n5`cX8R8p=-8%`F;PRW(ZfYjD zAo+8yL5{ByP0-!J75$T{}`|tqcRh&+Y?dHa`aB@m5!v!Jd5Y!50Mvjw;TJ~{SRgz*@CZK3DJ8t} zp_hb>pKZgTz?rMgM6s?^F>p~bOI)X01EIxp3EP#1q4MT|jY^{ToJiC$>yvq-Y6#09 zQY2A+?+_8!zfRk1{|uw$EGSWo6RmA-`pzn5+2T%#uu$n1D&4I zW>V@#+`0T7V)X*{5u0|#b$Bn0ENty=2dL+f8us%Cg%#@o9=4E}ETc#J^QSl_Z`CSs znEz45*70NHWfAMpvU9$3Hvi~)B&+&a(u--w=}G3o*PQziMjibfcZ2Udc^_bc74sXD z239)amim6#kMi0ZQ-H29Hdz+3dm=PS<5s@Ok+e#ChvzV=gIAn7Uiyphk4^clLN150 zH0UZ$Z%5l3sr$e}*JGSGBHMCZ1<76tkWNR>Z6w<5lJ_55b4ke#{mC;MPF62#kc3WN zjL*4tLujg{XB|+5cQm%QEnT;E?=1$Mj=EAWFSHD61_ijKi;muI&+Ki$l7_E43GzMq zx3kuNoJH~}WdP|Pvra3kb1maT;7vM$M;nM!GC;${b$gX05P}fB`Fbz7CP_%Kr2~dL z+4nrYNWY6yE1=vZ3=+z1kF~FE3H_e9>OuXuz}gscpS$~XoT`kWC%Rt2@u%*W*U@Y) zi8a;tLPcu;^GsjbX5EDp6bc_G-JjJ`b(MnHB1~P@R)G!LkYc3}@3JA!3N`}@@=*?W zSakuLI|}R&OW_5%9GO$=2U(u^`P(^vZ%n1g7vilQ^GfeD;fXI*^@Bx>O-%B>0(0md zFsF{F@dS$VO$|JQ#HqZ`s#!jGz3yp`W#Yc4k5i)Q^!e%$BqMDCaWnR z$R9*JO?T?%c85H(7o?}B8*Ee*<}1JT6&ArLzmqGg3qBy0L)I8cjb6d)CP~i>ATzT`V7xQZI0aFMPr+rn)$|@!$Ql+|w0LCh3bO;%r z@{H)9a4YUlv}SC_^gThwlK28?I?(8jiH(la1|`|MR_Z_6 z?OJu5fnZhC-7!jOC!4yjW7>7vi|AS8e@<5hQpYRCm-w*bg=fP$DVtQb?1PF#uEAZv zO{)ner>7rC{1FdlWIw1kUfE5lj5<5|B zc>|WE9SLGL?VfXnu9~EnF;#qC`VQl2n^S`;{s}BLG-p) zEF^9D{YCg?Re**6bZ6)IsBxI?u}n(&5QSbB^%Sz00{|jd%jeQdyKZeIN3vo*;C8{^ zK6-q(PROp8oN5`fzGJs)%}AlR-Tks^DD?QuiO{=)w9}zN9ub}_2N&ae0ok<&stwf{ z!U)hNytvdzYOpD#P|XF{Z;Hh%r%Lm!$_mC+uIYwlQN{Dc(AsaF^8oNgJzlaJ9xcEB zKr$A3qH$~E7*$q(_kvC!o$?M}-q=A(p|<>HtfrK$ZK;9QQcFYT4V1N{hK>G!(DH6Q zty>}EJ8*}jMUWf^_*A1XByTQS_GcBsK;X8Vr<*0iKGw%1H33@2M%EW=ir6Q&9r~;k z>kqglZhl;GJWpZAal3AuOB%*K7xL~5vfd66R+(o<`w1r|LE>V%fU&&((9$O2^{daA zagQw)(fR_Je?x-hF9b+qgkOlYd@MjZz*%N4aI_LU2l}#8|Bo11Bx= zt2~f2y8l@{7ZOC-@HIFQDchnMvzdKc!&ai5ZzQp=Ze;BoE&RL`FdD*aYp(CgR$LoVaNjmxpZ=4ZkX;?)zG^K_Nt(4h)iVkE1`40xZmpAl@}7&q zTlxJeIRWC|3{u`bY1uP~ST*ua<_lR5s=T8OdGHt^F5V4S1$XsHeFox+he zg~G=jX(o4&%A0(kwwNMo^cgjwMruCtQGB@tkpCaDlGO_18&FbBycrl_Om}cFajQh` z*YL;2AO0@MF5Z24lOK0F)7&s9iZy+uaUT)!N`4Iw@^+mgLrkO1;PQ)wS$X>M=3$U` zTmTsN=$=~a>$B_=7*4`nMQAzbC+EGkbW)GHxno&2Y>_4YWILnjlCG|Yg|FOu_hhwsZngM$w`(5SZ5B+O`YgMNxqpTL7 zQ!@P$iz=RR>hKA1=E-V7PvRrgrOV`EGI>P1I%JFTrqA@#4HHErhM3T#l!_k*C%7n? z%NMg*E&UabYi@t4-&Wd+XOC7`jBA=X)dz@ zUR=8`rD@x!@@qsT9IfXCUO{PFXAW9<81=)KGYqYa7;r?X$XYB47wRk1k%Kmg7;47j zk#`8zz|35h_8h188fkK!`=O$a^ffIici82>3Ix9Tt`7QrS~dzScX>k%K4>{GohMcT;cS0I zg6iNAtb*86w|u=kr>d=ieCkW`WQ!V|j#ytq8cj$>O11UXQj)pDff#Cq=&AkEz-*w1 zSlRLyMt|c90r%})%8kISuC=ncn|T_-(=7EPW>29VXjTD%Pwz@?P$T{QQUDPFT7>JQ zoj7tr-;5GSq+QiXEx22fkl}_B+!8~B4Nyk3y`$B6ZbEu}L zkZA@t???BQXYI;wEA5t56UHE>^(hF1yb+lGb?G7AJO}x~l2!JJb{`K!!v=WFPoPGW zoSmI5IaaE7x%-dE-gg+A{FvPl+9OvAQVa-~O^PBu`u+HaQPHpQJvA*V)d{(&^=1~s z7YF+mHgKro^4b>!kH07rhbMXDi9ml&Ab8+Cmh{2iwe$H@gzIO}&Ex;?TB~B!oCom{T+L~09Jhc*MM|bk2eA}Epn&-zVbA* zJo-1e;AzeCzh=?Hv#y5Rh9pG&$NyTn`8~vj;1mCGzTab`zA4Q?xxe`eXpYKoKpmJ{ zC93(~VD0z%KM~j6v#9|4g^Si?4W{v&EjP-^2(h>vHuEPU}l!nde%PRxL6 zMZ~|)khxIhz#I{-HOaEe3yiLZ$K3VKggks`!bB*z4;B7%S97o*o$ql=-~?CE8-=8<_Azz?3t)Rd59M1DJ%nS67`9E_1h-#ZtK^J!6i4 z&uoq%D;;CqJ-@oN?OqdDAvw@540}Z#nYf-~plgyAi!5y=A33sl{4ZjMdn;#Nlwy7l zXMEj#`d0NGZ}svHr2?PVkc&Hoc*5j2!Y;sPpfH53b9M+B*}0AN*V_Rkgmym18}GEu zJr@n|-*>Dggq;8;#0Qq!Ak254sqw&)CqW$-5M5owT=|I3juTM_6Uydk2`XJ`l<^&J zX*apKvF!{rxLHN3j$mE*%$GIq9I-nU3?@>EBOEfisnv4Y^lZ1-9t|W4W|Vs?nJeN| zED!EfMyUMp)Z*+f0RDF8=qH+A3}{$F^rl0pMU}WOfJ64L^(A8KTeZ4O8UmWgi&Y!j z)%J!>Sd+^p9orI1FjxX9H`q!*2w7*@G^crdw8&zBB0bBMbf5; zM}8Zd1d!qqQAF)I{I}h5h&R2*Xw~LZ=j=a)LuW1EZ#`{x+d2}tw(SE}zivA@=U-;I z%)?xG^HyG238E~~E**Wt#wY+A&XB_VlF3008HtNUJJ+)rU)&u4<>uBs=*)PRGC4eb ze?nE=Znn&n*pDL{A`rBMX$ZiJ@>lY{?@z#~jDMFREl`OQ}*;RANzl#v$uF(ZK+z zqY|>&oh8(+UF=#j95U5W;cYt&D;%gVoRGK%duv+!Gv|0U>jxzlPrXWPWEyG<;9A@s z3=1#D-tHcMj4uSS9l?1n94K1MDo5c{<4Rz$MjfI`*oOzE8wRWb&BM;lB~SnbKaGik zQIzp)Y3H4jjiS`jx#n5+y%38J@``im=rp_g&ZVW5tG)Od5$Vj}ltxdHg*;)OQ+C2X z`@;XwaAWhdQhN(5qCvt8WA}Qm2tawZF8{?7Qb2vIcLO)2i?e5Yo1O}qrgo@z-{Vah z%rov3_SgZE$U9$|yE&zJ_POWtEN~;rZ^*dMa#p(Y8%cg*^*WL8p>rSB4?>64@Sb;j zOW?3otm8%T#5hPd_jW7nHW)BpZxMj+VAP zc<@>WZp z9*Ts^5B3cM4zfKrsvkhd_XPR!#Aa;8j!30Lyb0N4AJPtk(2U*1%f758?{wY-p$h%@ z+Z^}>+dkq|M)AH*i|sDCv#tiwZA~y4)ZA;FSN1eCXmRlJMn20~W@d*OWM8=h-rN%0Kcp19YR;YfGY@V>5tq)Z-lU7u%I@2e@6b zPiNc)ZCVStyT9FtB3CbOor2_`i;NUuYTv}MwWGi~SRU5zBxI2khf!Xc;gOg|_e~CaR9my==FKv|gWI^LJ zS)gn6FJg^nxP;kCRrE^*13xAswJHWT@kwj8adpPxcvaLK%VdSq^0RF?7Os?`oqFDc zskhxeUIucsOv?}rYF4vBE19{iJ;h;mgpK>iY#1+TihU|q+@*+_kHydACn<=Z92#^@z&k@n}n0x-0y#NA+Z z?-9@n7bXKV5zN_NJy*7zEUxkyj_8PoB7r4t%& zUgO9V*BqL)2@IAg-Y$&WbS9FZwtKr?5k{f$Mi(}0gu)#HmXw#V0$<@nLfCnJ6$`~C zCr8&S!gdJ<8`d9!P2Hiop&eO4_#Q}NR-0d%R|I5}tHM{B(yQ~!7}5);xXMp$XC{n{ zO?KnGBB(y)97^W_puUAl_M5Kh*5$BwsM<&jDwRFv(YH0oJM;ixjIhf<3Dcqwo3XBzKrh0wT`mWRX8%|5}s`Dl5w_RXL zcF5BP5ZlqgpkWaCyUi>pc9?g>>wb4RN>DM3_h>P`)#la$5m_DwStt-PFU=A7;2ya% zJ_&T&*nY5}=?A9N7y1_aeIL2@_OKfYSvnDv6HywE%=;B+=>5E_@O0-go^gxYfm{G5 zk2&E~NW`EUnGdiP?Q`RAE?ft9GHbVN~#jUSE`w9E3JQ z2$}O}jbU=ua#>6p2PPzd!C5_<2{Vh_BW#EBtzaR#55OD z=aZuxcF0f^4h^WKzcG3|ri?(fN1^h#0 zzOQdZ^3WF@|8%}R>Vj^N7@Yq!>zIY;vum|oeiWfFRZzX@BXDG0^038ML{z9>8?1)? z<2-$bqel;JywZvY(XI8puFjhnH)lG=v#N$DR}svKWxatG1Xw(WWYr_`4!8rw4?Ia! zFRrv!8owRm!0WNezR3ZAbfwZDh`(iA>(RMhRZSe0HMqEslsob?djwYK4@cxp8s|2wU_S&#{Mqo8n{O3_hk=CpG5q=?4{WR%ikr}{%;hFE)+VO zu{)gF9BLX`xA|y87lH2Q{pVgVC1JZ$o3AKE0ws%KFbEqqAS`D*RK@#si))#>u}Qv5=L2BIMjZCD!Yl+I;a(t;k_&HC$i+em6Qo z2F?3d|0y*f>%!6rkH2d@NFV=1{>|U-F3X}YW18^oqM?POBh=9egzj5eP1pP95eRT{ zokyVaY?4v$LSxxtqd0S8VCJ3#UCTdrMuUg^r>MB`iWJ1SyZCP8^Smg>bQe(M3jt4Zpn9}Uc4Sy|g^1KnL-U>Z-se^kpXO#(`j#XOlM z;as{U3K9)y)>EnwzQC=Fa?)sl5J!z^LD*u%a3a`jpm`aU8cQE&>(U;0qEme#xr#*V zlJ(d!-Ji==`=cT1Non`+vL*jy9gF0_-&8!+>vO-|fjUT#E zhoUCBkUmYZc7YC1i&L!Z$#(p`gW@6n>vh;RP8Nfqv6g55G11rY}Yty zu-EFwF16X9#$C>z0cc`!{tAZ931f;HZ}oC|JZ6k=Gq0yKhe7%MO%$n(4UUP79wxoE=wVl2TP zTV~DXR)KniCA9fJ-H)7Y+Yx|2lS3Y0hL61byH{Vk$n#GJ_@A}?_i!5HX;HVW({@l> zFK?$*wyh3{RxbM^3pjEspS3lg{%MG#m3vo9SYp$s*s_c>gmHjS9u-1y`OkV2?=?*Svk4-3);B52|3!iJ`sX> z*?EH8te`L}S0QgZwR<^cIPzR8wmlw$1&dwI(?GF0;M}w&$eJ{71#djZyc6WBa^b%pAdKl)80k~D>9hx$S;V_N1p2aQ~ zw7nG61T@s!d{fjAalzJc6U4QAJqHqddK*{bAxOuIZ-rqV@Y{Edw76D zjycVeFVU9hjH0vb?2%?Z-n4uxOT;95Qn~;CVeUP{n(Vr^LDbudii&_zttg-%0-=N0 zkPgyA6Oft!(tA-D2B_Jh%&=Co}1_&gS+0n=MecqX4=J@7&=EwN! zzQa}bwf0))I?uKCzWN2y!{OcgCC*F5HGQ4T#8&0%%SMKDTP=D{oc|aRN7Q%eYVAx{ zleyTI6x8ac)x*mM zivz#(-(;kFI(o4ytofS1gV(B{)Q32BMYfS2Uju(VJeBe}y|vi?M*Fvp!&S^(`d-=NqHk~4G)wy?iXCvaiv=?{qo5)z3XX;yNmYBPl7>5}n-hGbn z7TCJN9}}u3f7ohbqk)F~VN?VA=bNuqA-UG-Jx8F(u#blGHil*=p2aE3e`eOQeMqpC zu236>2Q>Os4!a00{rZ{C0lg45Brs0Qkn#9gefOD+`r*6BprS@6*AAx?eC6*Qyv`i? z@am_E$P z?9R=9N+Q?z_=jxBYjuiYvRuk^?ZxzWH~vY}+@{fuVri^dYj`7O$2RBn3?E&VHSXfE z<>G#+W8Q7MWF=0LQ%=nd?zbZ9ciq3} zJ42K1J~O*1BuR&9uhcEEep$fO(uEzWmAreH+j`P~;|bTz$x%5u9sB#AZ??8KZw3#m zj@J&hD0r;Hvo05y5+gQpPHi*~!ct<;O?tRrm9m-3~;uEE0I806g0-M%Y( zsF3X--xB?)QP2H^Hd9TNPDNb8(;BnYSV?@Dj+T1nIk#ug8lU6?vcm$A<(3B7O+H&fvbcx4y(PyB%pU*kj2p6&w7zVfHfb zjelwutRz=zx{ly8Z_&G-%;+qiX zzK^}nAGN9|p^UjU#MZoT6-2))@rJ(@cldV7jx48CGI}C3|1rryEhs00U@`#jUPbO4 zEnXa4%y>)8tcdoMjbq`8OV9Xiiqxw!}JcF@$;*7inLJz7hz zVnKj@Z9ok$H6&CKx_JrKCbG)SB;ikFPm$40C2Jp5W9M=Bg3qIchPR$81{JO%^L=t}3?EB~mq+n_u#YsLENK{{d++LD*!4 zTN}wzZHR3!sU zlozh`qiE#a&?@5XrSIk1w4F_T91zKcr=tvlWg&H5|*WI*tvf00c zWwrN`D{6;&ST*T<>o#Aw$&YLixMms9nWpGPV*0Us8?+3fLZ3)c;zHOQL86Ir1GC7Xo4PE34AM3 zeYcs_^!(6~pNr1hidG3NIRTapeT7V%TKzD3!nUQ4qE&v#{6O>yOwvv)YCO!KK&{qu zGBJ@>NNZ{TK+I8AVJrt$1})iwvh+Tk8NFlcEWzjTy>#In^H@v=3Blg?4D8EGvw?1G z(TYsKy0-UEbjBa>5VovZ5dxZfQ7@w`O&nczLWKi`dbVeatAdb$RVojk)GFZncS(FB zfrZ)HqZHq+ksK@UbX3kq--L1_O^p=2I9=4ez1LCN-jtc0JQrDUbrz(fpiC~@8hs!@ zb_t#e%XMDiC|BrwvAe8|k>`=mx7|JHG6TjSWo_r%Z`;R+9nDL)KcI)c%OH67-m?6D z=fb;8zF}4tp=!s{qNn*7LdC|MR1t%#ypU|dT6mynoT{e8CW(}X>}2OFbHxU`c34PN znv?b3dw(`=ro+UQkLJeA3`S`}H1DBlA*~sMzuMoQ?a17k_R=+|?yIvrejw|V*`8UJ zooc=Gq21g)aL-cw>^r5SyDxkqajU+M$9ZjR1-d_IO{Xx?Qs;`qkxg0koGr1j8YC)q z;dWwp0V8XBxseF5-biRvEi;4xYe~o}Z9MSi?dZQYgR=7M{l~da@J=)j!j$*G{ibq; zoVWa@y7Szt{iGF3A-goq>*_O~c+mr5GoG!Yy!Vk7piSU3^0)OCDm}w!4?FN8=2O%Q z8IXJ4pFgL4vNktFTE{q`U(BNqmkjwGrda2v4m3BQ=Hm_qV#VX!W*Td=>!Xzzswii+ zXyfJw{4Y3)>6duoYj%p}(1X?Cg^YO>21B^9Wqruz#h5gttu4XwHCopU>ejOP@XVs| z@O2U@N9aI&xqBMD`ZMT4{v`SqZ2SJrmGr6kyVL>L$oQFwV{9G1<4+5FFUH%F11Csw zAp#QGGZ`ryJ+a(IajJInMQ~iXBrZOb-mySTDrN3D#JBs-4%g^dO+4QfC`VFh0UR2? zqG_Wazh>bG7Qii#urBA~MtC~#@Icvf0%KvxNbTdqrRcL3SqyV(LiwSc&0pWN;11X$ z@xT_*(A-&Pk$VESijv9dtj%w&~(6 z-&*rfN{jO(PPqu_qoFft+$R|}xf6#lVCJeruCq%B8nwTqP$HGEhBG_}9P@1i^*zb& zhT35>E8IwBD_j!aJT42C+kB*`7?*W88yX6j&ucrCh(=V0>T5DAaG*1F5ldz0Zd z&h>EQJ>^<+&@tUg9xbd=>r0=zDp%?8;d1`6x8zpA`zq0j_v%O?$n*Dq`k2Bp1qIMQ>eA+s9$~h#P^78nRc) z&43~T@8n=vr(0Q`ziZr!Ln)dD@VXmBA~|Ps&my%DN5ti1+wQA-?TMLjSVI0?`|?X0kS#xNbP|Q z(u4h{Q$5*&W&7;E*WyUNmC0u`KK^JnLOAqyJp6Igj@M~S0zy6S0aH!o4|n1q^}lHh zRtXPhFs8q6SU_LfE=D0BWp0U1`rO3+m|=mW)9r;maGKo$4i?n_A+f~eRT6g z>FX25gs<;zRqG!3Ecg#qiT%E5bXtq|){b^4N4ck^AKN`Mb)~I|lg4ShU**OQ_DpmfxGh4(e(&I* zj+&a)sMmfwks$7$*-c*CIi6Vs_M{n^G{}U5y`{d#rOk2pLepbqzNRGP7ZvBs?a1Er zu-+$bU1h9`h0WwJAK#L2k}wtKKRrEn{So)~{8U>G5cXv3s(GZoWuG?TC3986Q^Bl1I=%I63ZO_>UXv2={_;o z6|{v8Pad-8Lxj0gLd^Gf7oNjpofHMn`(9NW#>!B3J9==9c#?w;*?o=Tf2@8hiBy`8 z(Q_3P+(jd}DU;{FfNxfCv^1<+>Oh|M)=i^cgX45;Y6zFH*7IpC2-%zxSQgVh>}^t~E0I&!Re<0`$dVl%DCp=>K#BHsI& zgb5`?a-I!oP+95T#j}zJf1ec8@AS+vhImTz8|ZGD&Uz$k*=QDzd@^4)ugfhGr@Fp8 zGt4@0duHEqrJwube9UXvHy8}waVGbzSm@)M3ZuG5q&ybgI`PE0^84ZvSJ$(^mr z{*RPdY0s#a^fh#5S=x=aeflH?X6B-NA7?x2dY2i+U2qmM{4r)s|o@q53vd^`#1WTaAUoc}md zYe{FJrzrGTfHhP9$Y#S{-SK=gMSOn@c26j*KX;(Jxh3}~%v@(X=PVr;7;zfcL~g|S zH6~v?3by}#$!9W4Z+IxagMc!qlTGU`99fXIYufTt=MNqA&>kz*nw{Y-h2;0SE33ZBW=FZ!*AqKyDZ7f7o$weift>5U52gT+R9Nr* z3l}{e$JX-#wK6TjmnoaWmFtd1?>R>(=5L8#dSQz^V*R?Ste`6E-RSt!+$KX!1DjEe zPHVqA z^86K(`)0&^k`yv855)+xvQkrETkQ&PcHT?~rUn(i5{tVC0d3p(YV*LhP6if5ydtKe z#Emjm^}dA=g~L+lp4>8U;6kwMg_cTsXc*{`rmAeXgasr-%Hl_A+SDzOY}xp`dd0Y% z`%%VF9T}MvqN1a{z|zwyVkg)g4Q6h?=HFGOX{eTRbYG{q#eF&wqEF4FK*S|+0xQ-mZ^-lxvG<6yXV|ebZkL>KGwD?QGDF&a-ZDhPkvz~d@1ib z^l<1uu>HAN0Tnh;s$C72L}O~N-s%7=5<)n{tlKm96G}XYZ@SB>ozkG5Cjn`iB3h$S!QaGH%~FlPG9tnU>lL>2UhO;0m)36$HG`^NQ> zFC|yYhO%27lEk@B8$>8E7?0}L+vis1aFcMJ9J(2Kk9f`0^)#g8#A^Km6q7dnwQLP6 z1Lo#qwnu_4J>wsd~3c{A>l$AJHi`^zVEQ{Pe~BDZm8JhSNV8! zmSHVn{r%)}v{F)nXF|2_iy!=KrzD&8%9fmbLpuFNrBil*SN{|XiH;;K5}kFQUiaF= zkTmBpO6ri&LMfv<2Tfx6${?}-3pGp^xzE~^l3hJtd?1GLnh9Ln@8+@9I})<_6fX#c z>VfHsB!JFP%Y|wk19Gx)d!~YrBNqZ}(4ErSWYL{)fS)nSxlzaeA{j?iH0v`zNT2K^ z9rHFXP-uylEcCpt;=0SF-IM`G(#&6#?xf(o+l-j_`V8pUBbu zE_!yYd|ZOd25lnBKu0>stpb{^5PxvP(pf3EeJJZuU1>eqd3)fNN(wPqs^e! zwr|!xe4ImYTiTAUw=Nr6rEjU_4&HCc&sDm2*RCEh?PXk5a!5Q{X{j(ul+~?&FUD&F z&*Tw>Ddj>O-#uG-$MM!e0ijU09=|t9wT%(?bhu$hXI!O&X-n-0uBL!^XfTYoixFX!ZF%O z9yrwH%M59v7TwL(&;+#%><)|8Xk~Cf=UOiVTU~A?XqU6m-dr_0 z@FC5kOAC%K>O=Z^ZLMQL1g*GZdKR^5tEUdxG<;o(*` z-gZAMh>UlT`T5>U(kqo-!};Q*Zn*NUOBIFGTUuIr8lbe##@EGJCKKUFfXs3h^H2B7%L`};UjKqa}OE|>{aMvwn>MM1h8Wm8(OCT1>##PI1^Mn2R z`UF8CA%ubzZXjDq1@BaO%6vb&RUi^Lgl1W`nd~VAv(e$tv?SDJd+zqVhrbxm2dwcefEcG8!3Gb(qsi}&vTOy?4a zk5-eK@c_sE&>#JL1ij?_AKVEm3@)k6dL zK;n@OtvsRe^S^ctTN5KOQ8-+RQPA^x5r)eN&cfoN)9V~OI4@D_5kFTcFB~d1$tamq zXf^FBX#4h@=dF%b+L;!n2uVeLOP=_V)*1pZc&?TRu-UF8^dbVqC2Tw90T8;zhL7P! zHNbBGK3co2oZjsx-4WF|Ew1p=B*)kK0+IIizDeL z&&Lt_x&!-c({l*{i6Wv-+XJTcu_lq2H*X%=Jd`!mJ1u>=(zX7eh)))FdZ1u@)}sOV z!(bhi)S>0|NZ6x?O=sDq?%Ou@ACM_VE&OKc&VzR{O$#vI+jIBWh~KkgmRXI#$k3EA z)xeP^*%z~4AYE@;{{!ssIlq%(W~^D0Us`)(wSB zS6|+0oc6uFno~VujE9509oZ=6y@Kc(-}=q3Aa3Q{tn|uNNs0s?s?ZSmZZ2l_drYAz zw8W=m(?=USc``gJM}J{VCdsS7TbM%^t)Zz6c4VzQyU23nm~w(tYv<{+qWmWPZcC%U z^^ie+@llRzpwCvvtfaWuzN0LGYWdt*W!Xvxy9>QRo%MBL*$A_~JbA3cwzesH6L@}| zroiCpi5fpH1ao)g;P%IHWnW@~%%}Ge5nefg*N=f0Z+OBHfng^SiY4itbA9X9l%G5? z^QHSo#iBivs24#+0ULh8Ok#HIdL&?Zl$CO+ZJ)75kOWpuw;{QBe6C!v}B z*cgTa?x%n8ZzjvE2Ofs{ryq~zoxq8G(S@W$O9{c>2`=^b|IL3BH^YCEQ+`>Ik=p+% zhx%LT^dJ9k4T|e7&#k{TRAQ%(hX3o5&k6}SLM7>?iteh<<^SGJLMZcziwn*W~s-N=4E2>ChF!9@$A)OUxg@XnpW8a@4gI~nH+$Ek(l=_nWDME(b}4xE~N==JiP8Y zM&rW6VX*QN9IMD~EAP0p3)`ynWh_P(DyO&WD}38}mWM?4{O`Nv7&Q_A+{r!PuEC?e;nDdXuq0|+ z+Q(9H-zd%n?LGP#-na3=>eVBTcf4AArt)oUv;|gnOM5K*5563^rR+ZOLBe^!g<{5Z zv8r?NRd#FFH`@*ARLR~%#%S$3B}ND9n)G=dI>RHq9;+`SmZ6>#tFga$2(OVdS@dC= zXb9VB`5Kq&B7_ZyEF&EO;Ghn!4buPARCx5z3Cfk1@4`)18*9N0^TG z_v`~SksECNjufa+nxFmcqK$&er_Fc80}QU_g@{NzfiaK z;zv}|*GM5cA$3_e<;%HX8_fQrSW$QLV(*mmV(%%TvX*Vf86wS9T-ha4OjDWO8=fZU z&MvA}ulTgoO0XF|(Ho#GEn$F)dEK;p0nK_^AZs-UY2|@PZC14uViJNB;%lwLUG9;8 zW*CZR`|bdK0PH?|Nyz-?>{|E~J#Snr#hWgKRq|_Rca3*eljt%`b(ikw){E2CTdX3C z%v-w@FgyI1ltGXb|3OaOEnetMLN5sBneNh3NU7D#7 zW$LKE)EknUVhQaqs_{{$N1r(Z{2t#O^op96VIAHmGOsBs)h49LY$&6h5X8VTG9DFs zknA+qwKtFC4mIzp`w=eI2$6+ROa~5?+|3=&ADptY{?g&tf4slLcC0oFlFuI_Dt3`p zcuCM;g`7}b{YE8bEoR`U+>;D)wJy8|H!616yx2b^Fa@O5u@?qTnUMcub}@2ww(Y>6r_tl)AZwwH=4hF0Xy@)xgo_*bwu`)GaYnPx z4cb$I$9zN{_g#)HZ&ivJA`D{Qzkh#r#;M{xdm1$e)u24m;N+yB`_Z4D+nUb~cp~=Z zpLf^|Z;9}gSdYs%_Ozc6rMIw7%g&6Q@6p8vsqB?-W>-JCg|B`9;&WtRC9JH}H4Se4 z5mp8kz*4Uh1ypwrkr$2v)bqP z0>b)wu|Wj8!LdmZ4oQ!6Y{AHaUBPSfk&a!%|)ZH`p%V%Fx9Q%hi z4*%Fz64zTS>DF)1yj;3(@g}4!$9!57E32GzMuZ_P8V5LuGU-BiqF~@$&N%y})RRkv zo2g=q^f1GF32fGYY?{&Z6bf(!le6Kw02oGQy@0~Ec{N@_MrSl7#csFnzt*ianJUmP zVVsRdaRI!>!_BK)AIT30i%^aOAvj4iA^+<$`8q*oGV63!64QYAm}nlS_)NgjaZHT3 zGkL^Qbc^?3)p&`H=#wbnOaSEIewEv0s!yK4{#rxf`$yKBhVlviZu3V=v~79|$-x** zz0LSSO^i=)Ikz9i{$yJ%oLy>D+n-jF$u3f9^Nv8DA%t(s3SS!QdV)#vRV;o|)h0wZ z^Vs7=JR$pGmzm>^ZT(r6&zd%Q@~NoGvF`n?W>X6jgRzzz)DA3q^GB%~`k8a;xa;D8 zdI_P8Grru+PVZgwa<`ftZK%?=m49d=>Wru8cLWGJ`$NaCq3pC`JFS&hAr$7IxVQkoC)yHNSH*vo^zFY< zTf1`yB`prHZ=9gndrn-zxK~5Bk8VAnV*oJYq9#m*oT1T}?f!+Xqy!D@eYb(tSmE4~eOXxoHL50H;JsX;VV z;-xbNbAiR@4Y_`w=OZkAS$>4&+akmz5bliCX$LkN)-ifOx+LZcNiJpOD<{Mf6Ky!W z2F%nqt$}C6+}#pOX0+-x1_P7x)PL8kgV#|*=%I~$-`6XS(VoMoN=ey732R$HI~k~KG((ZYYQ8J@}|JdeCcc%DIy6%j$u#FstZK9|Ju+c*547_II}OSKmK&M z4UDbPFjyCvU|<%qqJnGEtQFUzjX`_M7{USm=)J06!9mtSYnZn0%qBU0?Ja#7ct*OlQ1=^Eu*9ozywk z>7m{PN+g5lE+&975&%`#&I-#m7@PI|rvIb=zL*H$I&zHBrDaxf*k0$l*ZgwP7_fR6 z!rWIIK#KEyuY1D))rH-fuHGw+VRyU5H{N-tuwch$DJp$oZh08ho(Wtnt?V+NFbYLt zrFBhAn~HK<0>SFg7Yi2-TF3o2$!~M5;&6wv=+&LR!4o1dRqvlhs@E1cMQ^@wpHC@s zIRLS~WJT<|Fssqb@Z_n4%K8hXFX9pNINW-f~ z7F_SW=wnPOn5odm2i1SxCZ>)jFlB@F4}tK(3)2#~>$(2u1)`gm3jP{$bE4~l8OI3r zo)kVkmsq~BuRM*&PbWXhfn^{;D&)IewAB+{$PFzw?nv>wLK0;w_?nGG?yvS49}QWV zzz)sNFZzzS06rqMJ6?dcA2(D;EP$3={izY5`*b+tw@;6|jVS!kA0!@dEtTSVaaO%c z(|*5k91s@S&LNkCd^RfD(pputZo|-6a%)VBM$(!(8WON& zFHDcT%ko&Es3sN*GCT5gc?O`_^sBst{y4M8c(1wG@@-qOOBw?|2FFdQSVX;EWB;wY8J?1aC3G7> z5{9R*|M_csrRSClzBDegY#4{b4Gj(b#_eu%*~>W_vF-STx}9A!b(UU67KGj>o?NuV z-!6~n``q40A8x-)yDdX}X@QlsBNSCuoU_z3g)5W&n{ybVsF%qh=g>e0ggw!4Bo;Yl zowirE^7jA_A?h_oD=T*5fdEp5Mr#JzEB(!J49VHxOyn`-X&`qBa-6`D^`MI@DN7^+ z&VQZXdtB|1#u-7glE6AS{Efdq?rq561;@`m{`<>k?OR&-MY1U(Lg`-(EmueB%>Lfx zL+hiz2cG-6=H`f3tVfiXgdVI*`pB#HSNce6{e9S~%XYj7;~9D&c-pNGZ`JPk+%-c@$O1Dn6MQJe zx^nA51DH3uN_{VJNTuP!j|h2Vc~)f3e+{&oV+|7iKK`R4S4_fm`I0C24&=Sr%{##0 z6U!$Cd^nE%>%a}enk={$uD=V4Zp+YE7G-4j+=0&Gw>fY&&Xo&rd21$EV6e(|;lS8) zLtkPoP`s?02uo*zF$CU&N3zH0Sa!&W6(GTFhe>PYl(<0p+JW=z98&Z#DkHmxi2fa~ z_1;#`c5?-o-fZReWo74e#dU^-v7hUoIB@$|;Q>|=eM5u3<{?GAgva9cyKldMzIU)j z9u{|5>f0sSZ|$&@Z(F`@Nd9aizU2hz6XizO)k)r-c0kIxC@&LPi9j36fM59Yl?<2N zRPchLmwkKs+dyQg7-6{R+%Jwd^$6htI@?Cwvw4Jb7>V&Nw z-2OH&?lrCt%qDWDTX-y1)WV05P>pM3>v9U=LTsK1=CrQD`n|F2(yk`@m|F@|5C`&?$Zz*upLZ|bw#1j4UJFgjVe97DP6V9m;P(q9a?kS&1K|b z#WJlT1hn8kloog+tFe@`vDM~r>VhdrOJ3QkKLD;UE7wCYLY{B zj8*fr0HU=?Ib*aY<6{La6Xx)^VqBT!+I^*(ovkZ29i1a6?}1kT0GLU)lyoE>d25Bj zCIP?kZ#M@Y{RyUNWx&>c|5P#{R_;44=U$J})Lc0uI=6mQrZ~FLxfr4jX}Yf5+Hwmy zd-N!WtL}p(Dgh-;-k@Cw^cO?mt))tKx&j7zZQ~*$wOitYvE<`5l%C-g?>wsdt{e-= zN<~2h4)$=z%?W_|qDoVntC28BoxmzR%qF}Z@#ODJtr=NMMCIfW&%8R|xdrCgt0Ym_ zbW1Ag6R+0vZY(A;SGZQ-j4=y5o?l#M2C6yVQ3-;k462(P0OluJm1ZIAA zmh}scAG~^{(OKC!tjiS67fa`0{?dF8ye!jQ!zd3Sn{FRpsS>$AuEl+BO4CgJq$CT+ zId{&&iW@>xU5!fO3ABWsSz<;c)*`GBF3PG;A>E&4kG4ybWOdUJ4(BrvWn`Ax2vh@l zWHwpU8%GByc4xZ)frP%v@*YO%+XfZ0q}Lp0c1U_0UYnc3(FKF!xZJ2JGfF}Cd!J3J z8xVW>_=V~RT@evMMd5KT&mVyMy|ZJ=@Nf1o+@9$OC=r+tW{0JWL@EB;AJ~flE;Ojt z3&V|oc^@I~>HL?|Gq0(HG3#AEkV&)KErP7GC(+Pl^Zp0f@*f>1JHLt zq9;205~+?<&fD|0_0?2`9BSxjP9L+hwnq7=9s$d}-^+iTrIDaRp@6;A0ABKo?h{p$ zez;juN~L2P0+nv5Cp_muc)tf6u3=XMhS%pYIBWSwTLcOp4Pey7G!;v^{bN=V3aGt? z4l2L5dZOK&13)XkXez#%I3IzLdP;q6D(Ba5{Wiio2z4^KRchO97H}@Ip&-Tk*`NMP zK~kqF!m7lPxa{gUsdu@Yhnw58D02I4prl&_X*Lzkd4rQ$jYHnCu{Bhb*F`yHaF*GQ zGq9hZ!y7LSIZo(U>X4#+d+5YzCYl+1?mxFrQo%2p0^U(F6KuU*DrC=hi?k=>uLsr3 zukPe{>ow1um;>K0d%2U4SKTf4{Y_&kD7)Fn3!PUKCUull-9|`v9+)-$vTEas#$ec^ zG0VFKkrv#DM9D=O8mA;{f^Y3s)Xy-ji?E$GPrTGZE66H? zgM$^K^Fb2XvMo2xCgJq$PEMo9+VC83W}0`ILBiB-Ze@kf=BH24hH+lt)|8=0$5kt@#dlyy)TElM7JXs5z`MUeOq!ZYg7b2(tu_d#e-UhnK(su83E(;<~P&QyAz+HNw$XD8KvM?|@7PZs*NvPPK zsgpVH*!=F}S=LFfL6s*@RpRawhgZz4PK%k;x+VkFInF%5I~;{?1y<$J$&Hv70jx)# z?@FAT#YC31m-*|v!!FAt$?TJR=VJEuRI0T5Kml2WJu!+CWIxm*Au%3=rY81L{UuFZ zT{Fks8$I=4A4$i0RL=8QkIguA&_1?IFa?Vowft#L&gUQ;m@sPX>6e-0>ng(fl!CwM z`}M{1$p)*J_qu>8psK3OrvgAXMS8`um2N3W_q{*OqN}H!H3w8D5U4iVzdHBo;`@t7 zfqJOvIwAW=5Uv*u(D1=yx3`z;UAPx)%VH}*>5=Xgey%6oUqn5S8BqT}WWq`jXB;pO zU!k%<)ZF@G5e^qN6?KE*A&>INBQ&pWZpJCZuVlct_}e-C*wuNcnRQ&?DP=YLVvL## zfo~TBeX+6KM&>fk#C8D52CA)n0AwxPVWZH5ekwIqu?=dz;)MZSPyMcxU7i_HkcH>s z;5wjQf?XUaQp4kVp~zTB`sQt*#-)n6@JwyF3J``=B=hs1J^yw=DgaL&f7=ZtqN1NAr+~N=jNyo=P`FT5J zHjiECvagH&YXLhprSCOeg1)5PssM!(!dPM0A?I_EO1VRWtlB>m@j-zquXw%7LfSKt z3qXrZn6V5*ipJgMD}2R=U`g!1X^}f%69*wufO4$hr0*ul#4>J-cN#0)-F+jcZVuMN zKg%JyoFhB8?hnY zLPB&lAuWPFKQ%~uVW8*%z2bLJAbC8Ia$CwEz|3)yPaz~AL9nk%0WG{azgf^h7~9*2 z$R-SY;YW{F!iUD6io4c{_H)0t{t~AHYTB%lhrR*AMhQPs46_5ZC5Wkou)0`5OsA9k zwRpN}(FsVawnWZ#Qp;5kHyWA#ai^o&uBSC#qi|=5G(CSE5Nyk?_Zm7uHIt+_E;O#* z3tN@bHxu_8{5TDDu0-?dp}kw#)i2zHEWbGwc&ex7=vJsEGHaH1X2C2h9FY}ic^Um3 ziJbrZ<6izuCaCWn=)ny6Dz<~etO5RZ(HDp6%1WJ4N zdLv(R4Nr8Y$a;UQLUf_ae!4|r>i>wxGhe8}?4Ni{ zV@Tyd{A5)jluH0V)%*r9p~=5J5RIECl{jIS`4dl99p>DRx}N$pkB9>bE#U13o$h0~ zG;aZ|_j@jQO&Y_3vSKd&Jr^yR;vE@KS?uxP4?e+uMAvsO6`rDE6zK%UKH@2p=XO+p zliu3X7LoZIPf#J;{~j&lRtf5I0QJ9gN~-woy&H2LRfIgrR~1H2!}N4m9UujC5Dk4T z``g#RUgyqLLrlymM^DMOOQ4%8cm{Y!J6|O_3X=6DeFM+X_{}`{jj}FWbmnh%S6+$4 z@GAdPW*e=9o&t4+-2y=c9p?6x3$+Gx)wDjwU(6e8;ah{mmAWO-El^jzB11hn+Ca5p z=SNRf%Triad+l+5(=HB)%hU81hemplqS1W5_3aUMAz0;Cuu5@R3$@Q*) z0{!bR77l^zF#);lHngWjeR!p=tSh>~-^5Na`H0<~AHhfPoC#KfhE_&FRZR{my$h3{ zb#O>ASAfug2w$D@n@F3{j>=s{Q!(06NmUr`t(ELo5#K z#@@9;KKU*)J@i9wA^j5-9u;GJtKTYVfkIk(Z0QRZ0tjv?DpmPgr8QMg>F?&-FmJ7o z`b^q?>}tXpFe9|GjbZm7vcCQDjVAPhGk{1~D)il+17tYvUT=vbBOpiY2^Se*#*$jF zEzt{cKP?kHL*8i*;20t!Vb4606@2^can_MT2wP&({8L{_Cf(iV27H zU1WvY^L`-11Iv~n`8$feX4GL@3Q;OALu31~HqsYNBzJx6KO*Dt=V61FN$Vla->g$d z`D@56oDAjP-@e4O`KqGk)P#6gjrFp|F-ly{fqwQ(Uk#6V5T}B}Q+S37GUN<%U zs@URNH%17Syyji+0Mo3i`kdfp5tZqG$3O$+w- z>^7+&=74g6jLM9P69t-JHgBv|NlK(AT^s_x^9~dO0tKH|p(Fp$V0?RKwkXmLd01S# zE7Efh^R}wQ>I*C}LaIa-H*5)1E0xOF^WJN{=wV%46HwxW;F^uUSjsy~moYpZ$v@2t z)S@&rpcL4r^yW%f}Ez<7}vs0p>2#IjZ-H-%QgTmBsWBG`=Vb!Qi%I zV36-HvLjvzEF@MwC(vI+ew`&$cs zP)#u|DVC;!? z<7hzUgW6g!0j;gY6m;oac@elG0mt=_gpWdf1cO#w>%HpRh}t;zK@fh>exqWjwDJ-Z zs4_8h4u@$BZ-Xzs>d*$(U8XyYr@v4zucl*tu&)_yoq3W$k>Npo(X-r|?DUv&%P38) zZfIo>w>(5vR{i92rD5+ocNW_$Ao+kl#u1o&pnDoToxU%8Su9+9CSTKMfp!usj}l%( z0XU84jv-Hzgp=@!$_m=$qwX7zTWa+a6#C1yI6}Wy85Qwuq#v~1J~LKhhr3;f#Dxug zisB#N9@52^;_Df0#rfe4Bd zMUAc*prH@CKScEy4_r}+uP*v}@S!~uO{wA$nhJ?3mg>TfQ;7wBoC`dHCc81+=`l0boUq41)Ewv!GtqQ(XwnwRao_j-4;UE zV*|yte%D`zX?~D?A3sN?3v>(3qa2lzNg?Rz8J(rdxSzmIFN%3aIxok<`HnBEDjAIK zPn|zymvEG(rh=OI{%=PsaN_^RGK3!~*9I=%&GSL77Hs|e_A|RIHFc*@^7c=GdL5A0 zTk-Snb&aMT-;+ECa06T{c0NLWd{N-H?SP0bCJKR+gC-%6%@@!8i!zY>tbLR^pY#>y zgZJ5izQ9MPocD(d2ywgyAi=kf=>X zj_S&3YNGeCq3FU^<#~cj68-N-?5x#z`Z!+NnL7$Kw+CK?{6!OD);zy?J}Y&j!~~!$ zP$Ci|YGDXc^8d>E-*ZoXeI(l%#vKIEuM|+^Zz^bqB#CI6m6VoJOWkqS(%Wv?vCnE^ z@{YCy9c;BGF(!zzh_5zXh3){3QY7?igpv&jl=wQSPw8%Vgn@>Ig>g~oJ0CGf=?f&jhpqemb^DOpH(rxLe zFBcDzZgbVmY_i4t|TBWGYw;t?6`{(4De38h)3^(;V@X=#ypw@ z`y693?jzjcB)lM>t!d>sERaC&e93^|C15p#g;~XY_#{;gZ-%OboTl*`n{iN5S0ZjL z#lLxTVN+=|9qu9U=ktl~<`yIEK+D%>kIgE=tVOe@zf=k1B}pHYPge{zBj02x$6>Ju zElV#+m**CsgmjZ6ttDz#fG|@}yYC8G)D}VZp?FZ`h6kNEkU~C$Q3&&l7g+Sx7VsSA zQ0Y(7>=Gm4*N@O7lSBvF($itqapq8Ob-?h9Q5hZ%(fVLqk$e(AsJaJ*-&=y9kQGNI z<1>jpL!AG-{2cI_L!6CU;e)@-C@MJX+SDtx*7q}F#InZj*C zjzM)a@;(Bs@81*0jkKo%^x@AH&w$iXqa2AWD3jbNNZFzFQF^B6aJh*HwB;&~ZjOt> z-A>Aa(rwPSK{-PW#zGr(b2#Ezsr7p`mVc+oMn9+u>E8vdJoT}HHb2Yz@?A^KUycFG zk;NF*S&xDyJ4|^G`&kJwkZS;D3#?t=4HSP&7~pnVd<33sz8X7Bk>$fOIuFnheeK6g zLOTeD>K_4KqSTS()6EfGzknCz-_vTzt0X$p1o-f`clLyuXgY+R1;N{}b=cBK|F=UL zmA(Z&rm(OuVh#vVpkD#|4HShJX5k0Uc@yH9J^0RC0LT9X`o(bBPAuOEu~&Y4C)Qp5 zo=f;e2u>2&M9B4VDkhfMHbvpID6aE_8K#(eHUSDHsgvX6QJRUPKlig#`h~HALSI3u zPEC1gSpQ7*y^`4T=VuHGte!(^>HquppnrXthK_%CE+9Ypf9daNBtFo?l7748srVB# ze#h-imi{>6czVE}Uis@}c_j-cYYMNTORr#(Nlva^FFBb4-S!7zwSeh)oZX&yO7q89_RV_=rsx_KWpV>IH z$6drH_*3<1$i32;S+PD0&Teo%xq$g+ss8^9Ss@dpA>$d*zhYk-NR&L&Y|77`u zn9p?{J;!AN6Yua+InVan=Z2d3qB)n#UD?s&HIWGm`1~UcJk*k7!>$ati;=QS4}ia2 zj)r+Ce6wyFZV5H#bB_Gpq9b!oo}D#OU}j2R-!LU}Cl3bNiEPh^xNz=#s?0f7e)nFw zxLHZGhGZVLp8W15s46jc`#4~$Ln@Q>DE)fy-L#eOF5>L5x$%AGTQoI_zXO|oySY6+ z$@zud_cl;ldaKJ|5WpnG-sz&jw*Uue~8w_Gn8y{-@q9UZGH(s>&>;w83_LR-6j$+th36a-UdO5{Kt>5wE#Nx>z+;egiBMz>!Vjb>qdSGVt$LUw}ONIpOB{> zE+PL1d*2z=WVfx09SdLs1f(c7Ksp4ZT0u(ay^0V@5#+Q^gbImo&GoLvZ>SUauLFrK%!vn>9 zG9F7tZIzjN4qiM$Gerhv+%? zfD;K^^&luWY>JHIMxGt~oMZ?a{&k7EXaeojIlwNBp8b+(+b0UCl7jUIT1+%>2*k;KcRF_dIJRJtX?z~Z&Q2D->L2B)22Mcg#qRwbI_-}soKV? z>47hdOG?TLC^TJndnn7fv95XRFVZLb9l8!E@#GG(AE$ED`Ds}I<%d3YcI!4Y9$M!} zyd8#h&{u>tth}Aba;PvJ&81Vwq~3FOpPqIHZb&r`IYI~Oi?RbG!PKK z@JbY+bBXFY3CThmH+XCxD3U^AM_Jcx+mB_M#&Y^e)yH5hQ`yq z3<+zEz^c=y@nu*Hw`qpelqFulQJJGe*@Xx7q}H`aWPKjr}r3vwGmS=Q^)z z8jdBiBH?!WQ!LgYGjZGg%MvrlECy*tLUykNc2}e#Dt6KfhV#g_F3EXyb>g%(m91() zJqcB}-la}9x;|Wjt0AsDf1dl@MGqor_ywkQOMMEQ&%P^5Q!C(d#DD$8J-BbFU-kM6 zu&D&vrcsfaYTxVRsUBPH^&jx#?+u77oY0ExvG0J$U%v6^TSR_aQS7&hC=1UY{mpyH zDHb3xxP97nC2ZSh2Y#_DGeu?Ttv2~)!D)8_szMoxZ}`}#0+#I*9jXT~zCn8_)T+c! zS3}+AaGpV&qwpQn#NgcZsSB|UL&_|0I~TUMOzlZ%mpqrr(PxB=S7k~AT83H;>JwyH zCRqO1I>)pL1zY&#;8d%P%iR(Ertib)z2C2*b&j;~czhj3XuZrU$}UC^8tIt$Xgz$T z_$o>yda;TR4KRw{Zs(U#YqPkV5?8{>Qd#{`?~rjL$Viego*{?ze_&2_(Yth#mE(5i!cPc8TLBo5`kni zYkvk+Qc2?@4|)u3Lsna>BCyY{rfEGAq1ueZUM0E8QolLc0+;T`0#$%BZQfQLJkPi< z6eQMUQI%#-owjx#n-_tsG~FJ_?!NXmu*i*wkT2o4M{EXq2ObUZnL6cYpXtqUeqVf^ z(HB7^wwqLR3YMJiGZUWMiO_dBFJ16VO-pBV{9%s2r2z3qMqXv~-CSgq5yTc*#_l^c zc6!)9XR18AvdQ56UguV1hGN!;7!0?at}*uIZM6P}J`vo(Bm=NqptB3>#Fb5;q2eo= zXFMM)lZk(u=s=Ez)_!uv!Ca}pVJ~}nn>m*5J2-7#2hp6&-GpiClUN=YW8R^(AZ@Jd zbIZqN^NAL9?{#=$0b_lJE6$!TTpyITJZ1s9H!<~1^tQH^q5NKNW!x~?;Jy0`=AO~l z;Y3;@XFo{jZ{<9JpCE)kTc?{{IEC%t@0IauzMR7sTf~GCy!=%wXqz*)`9r%EMD$Yd zt<6XWe!K)V9XEI1wQW_oxuZwL7Whl^zD#7=!7}>fov(?wIia*O1FZiIu>Lo|`WFJM z-QAV>kGa{NW~*zazBN=CguMelI?=J}hkw^HIZUz?6xh3=Odz9i@)OVTfxyE5Puwq4=cwM5*g z4k5o_DUbCQv}dhall)sDzz2LJAc1oqF-8X?ZXm&GF4wz4_jF4Oxa2xPrV&vn# z5{@6F04pO;kg4mkc5enMht&&?KI^tP76pL0eP0vH4u(%F{LWpj;Oou^& z<&J^Arny9NYjj4MEM}z6bFo(+s}zZg`+)DDy-bwxh-q~1NpxR&B_rFb;L46&yRrRt zCaC|L^mX@#40@%@%aMp27Dh)$W5$;2HH{@HR-HzSJ=fdWi(OP)`iV3I4ELZNOw(5V zkbE$|?SctoGQj_w~k7$2fX*R~^9{j#o(Ky2T)ltKNNIiqAT!57SJtgF98a zuWt&g=DwYNLpW`Mg9&dESWzOjso6?+YYhX*;sBF6kD94-jipGBd7;Mh=eWZNin&vb zc}4D1+5;l!-bigoso3v8&bF_2atvJ$uVJ<}4}=TC$n)Dr;*t*+d>@6taAY-`FVJX= zicv{VyuTg{SCxW~^BGJuWtZip40A!HzM$SXKezU+d74N;hm}}q8R4_Im0&{Bc%a806rJahr?sUM`qrVANy$Um` z$Sa>uH*~G^Hg>k-gpmog`Xd!&iz7Um+r$$as5q6WystqdX)Xh}i51=4sj?>x!av_(md&ndv8c5X+g`6Bu(~ zc>|^R@fzxii7r85leU=}E6O{4e(0lD#TN`zMOIg3Jbq|-D;myfr`VMsiMU4_uTX?E z9jID(&*4s#$rf*Jo(N+6#;2~kTK?F=DZb+CLn~>J58KU6ChQp=)(mpSqYI1(-EB`R9z>2DzHQ}8+lHHj1bnY^WsOh4x?oC z@QCxHt(Nb|xe27ztsJ6-&y)NsLdccWa zl@lt51rc5D3S|&l0Mm35G*(DT2xq_u9V(mQLGNu>hP9c`0qZt~BH2G$xv`|ow5u!U z+w^KG$G@dbotsD}*TJ^$Ym$dy47|@O1^Y;eeG+g@1kQ%Z#1O*T;Tcn!zq~v##V5f$ zFH)Bxw29%5_qd+Jmf>v%ZRJLD$5^Vy7R^km4OBLJUC| z9Sd%DcEr`uI!UdN(UdXB2`XxLusV;~zmM|hRiW@tH0O88_a5wuMV*=A=lxPBIyGN= zllQT4D>qO5?vmByz3^Sr6I4_?zd^DuzdJ(;S$_q24>Z)s^6LcR5kc9SFwQ;Q8F+@($t|a2ZDR3VLZ+Ks~w3srg z^~BWF)PU-YNT7@y#VjXOYa?R}RAo3m!=~ts+S>SeF>bU}RHIL2lqqj===yK^meuov z`#$-d*3uXZ$0;4n+DCO$I7TNmRLi^Y@J8{rHy|-Q=E&^4Tl<1oE7ElwFnX$?>=_&P z(~%oAKoU>mxzNy>d!RAJbhTd*%j5o@(#Bbp6`S^>V?$sJt&^vP^aKJl2gD z?Mj~a?yXAbSLexkYdf6hy7VdIYo!Tfqvj62Jjs6RtC;~OI*OWVv2Li?HR;=p#G)B1 za5E|L3s!T0*~Z7!T{!B?&CTuQ)*ATq!)DqiWoH&lQRQm1si6gzcfa01PzbAqpHf?^ zU+DSjuhr=$Nd>%J<)+9sUK4W|IhddXl7cVyM9CO-uROOEXlq6iSncO*wMnHmt1x~2 zO48@2Pd}tI$~S+aV-gTpD#ux2KgU!w9HC=}Dyry5m)Yn!zVZk+Fq9*3k@UII#e{Zz z=yG0mcJZ=KMp8(EK+{%9RndskL-XV80Tt68T|IcA_#K%@jRZJmrjSlEQ1ug(v@`2caR=Sd)$-pHh|0V=`A-OYTy~rmCsOqgbr!7 z{E_8ApzX6K_^yH$6%SQXkMwXvk@qHD&a1NJsx=MBWho(oM+XfJ7*Q8t%4?NbP}^RJ zT2fEY+E&rTEe=vxqWMhcBo1L<@U5-=!CYMKJ*8HrqNHzOVf@t;2tJTM*VrO=k0$adc6_ybOg2 z1GNkuMuWuwV^((H1Uz7rZZ4BmG7yI83wJ-Ygd{Zj(X!`%ynF(MXfIQY!;%kPG=zKl>!)Ci0$@x+`rK=B4sOKdsCR;Zk!OihVIZ6 z?wQT2UkPRXSpt%_OQYf5+ci@I#a4ZNzFsU#)9=o3%7r>r49n$y8%Wdr9)4Ao)t3)l zZZ|TImmRg$;6^L7a1kJbH^#1isX_TO$v#r+i7U0?(aEPY5^Ktk#C-7!g6@+(~xKZa~*2qQYS zZrurk&KOqvn2-6qYt!|?jN`02Z1PKCB3HKWW{^ZW6D2XHr7xohK?7r#F42m?iV>kQ z@PW7pLOR@rZO{DppJ0iU@Lmanqtsy^ z_=M;95++NL8~%h%So!Eq5I!+BvpL+PB-zQwYOR@N0kuqyn1h_iXRz zeIR&(k2?9DitJuP=(!9LxteKCl!C$;l~_5>G=#1P+8!@Zoc00V}Ct$&$|^K zg5f%Ux{V_8F}t(Fn4El?<)`42>~Q|sG8&Wy=IKN3ra%3Tc5knx<9fmdq&Bo`tE<{F0>jKwr+1;GA=TQ~MmRa^ZUgd1fQ-u3^`XqhlKC1VI zUH|xvha2+RN=r-oSwyKo?1EEV{(E1%9Gg|HRvUfT;})P!l+QG3v1dm>>p_k1=4)YC zaX`5>fS8VZ$7n#d1OCy6{_AV^)YNvaI6$-RSZL7E(3b(h>_27)giRAs6ay87mhke} zJzol(Z7udJaO4N6z6Q?@RI4tXSN&yAzm}U#M7bYlK#ympr(?WpMxBx`V=2GXb`MlV$rmcAWNg9 z61&njd&fW2d*xnq#q*RinO>6{pgB*4?p#ck)#b~XXU~p`nb#Rt+{KCr+Gqg>y^+oK z`gM$yC`t!7IWYL_^EhWSEpu4jQu)F#3azVz@iB)9OSrsd;^XDPedAs0@IF&|O%p;Q zk=ojLwr-eGQN=wFgJM01n(#UtYJhaQnujQb~~+blgkDU@CyVT?Uj^0V@^loXl7 z279jjw+UsFG%G8H=*|OB)k-O0mna7|l0nEItbaYQz+s!~mrWbxZ4A>? zv51eCv`@hoRZdO$j_^+CLqg9htr|d}#;3QnIrEPIZOl{A)z%&k0eWj!u z2i4${i7+QX+$Urj1ik%!mgWSD;3u!vg)gO^Ek)WZ_F#hDPSB9`v%L<2MbC}pP}5_} zH3fVgH*c$`*frXgv~YQNI*8lv1E-qCHl|T!1SLegac@OQfIy8H27^s9*M)g&hdWmE zUgng#_-R$f+uZF=z<8ecGV=}K^%llMCeeY$&M z)O!=HkZ=P%sWdQ5nMkyi^g*`Rg042kKfLX&f|=cox1M^>xeH0@E$k5cg&}^OZFSgI z!!!S;rpxb^?i{93&}r%qJ>P+Ta8+3)nC*3PbJisfnI^xSvy zX55Si+CNKCW~LHKUV~SH7LwjnLqN61r~b~3;_*dHTZ)Q_C(gxK+dV1B$y2Df)YJYh5)sQHVo;{`c!-wzXtzVx0vS-wLl;OWpw>?M3a%eRdjyO=u0mx!Q z%X>K`$P7JhjWU8~QajR%mc|a;s62F!5De5*!f?D{hbe67n@vO4_8fiw&&F#l4IN&bEUVg&?T{k1P zCl@NJTj?)aEq$N~8-$qI)TkJ7sb6u*!AJ&fv`>t<(eMA#w^~~N8aYAD9f9rIEAdfL zoz%L9PI&@6HWd{|mKx;F0TBFv(UfW_NWVS&;$VHf_m{z>;-M;Ue9fW25xI;Yw3n3h zodaNOE67UU-s@qh<}D`2e{E8Vo;X5R4EwfkX?CDEv38T5F?wyiGL_eT&O^mq*7j3f z@yg~LFXL38n`BMGNUW5| zOQ4P#mRP*t#o6DGumlE~uS@Ak)V+ZdG~k=>i1~ag;TvfLxn!4n$0`XD^Ja$WDrede zxCPkOBY=S@@kv{bkUhQcC~z$vYtzAFh9J4DHpkoH1)uqcJd(a=x;WCq?z&)$R2Tj6 zJsW2)fh!*`1#{x0!Njf9q0iE?3!7%-mGW3!7)-mo@a2ym$MA0wr&=U%#koiimBl&L zw#}75?>Tc2VkqBNR#9fY@!-L?cN16JKWo+}sHX+I3{g^MPVW>K)|eUvn~U-ljB4)h z?X^}0VNMIq(weV!a|Pd0KNO+so0MUm=dQE^=|t5OAerkHBs~r5tAbRH#=R2&E^fMM zM~)2t7Lmb3=hQbF9mC6lqfCNPnXf^D?P+vmJfb(YlSCYKh7Yn1a@lc;A%}aM2ZmQk zPjr&X@P?_Wm0-LqCD?KUWbMEm&2;l<1iW%D9)UaXqFH>unovn%X>$!13=49TXb-&exi2X=%BIIG|rv-RuY+Ch)#z0kGvg)WKAw z&zGDzkYG6+z0+5XbsWW3XKI%2C4eo751G3#M`*pf-+6+RT0~C!vy|>sd2W9m?idk_ z37Id>$ktvX9bxzEKs2PLqapTAtZA-}&_$4n^GvNrOau?2x;A7 z;m{gWt+$+Jp9|Fsbg_qN6*Z*A3<+B=l=`nP>*Com{b3TT6ChfUaPPm6iTzS$JoRCd zW_Mr}q}=jBY*PZzt1hqCUjhxa8~lW2)~mIw^}}k+d>=ziNV)$g0T%fax;|0HNkvjc zDN84}*78c$IA)4BUIbPZ)j;{;;$5(EyS1VPWTk^1gE=~?OT)dYN=ip)6xbxZoQcZ= z<8K5B)ZJ{I621*mO>^u#!z&|xP{Wcplr<0&=M)s!A?p!_Ha4ZDqNHk9vWVsP=_RKr zUXg0^FE0g^qVjt_gE`KKUGBk!Bebl7ozfn&&#&}lj6@gcLZlfjXP3}WUaeVJt(ksvwE7AAo zJYaMAu2%)={g%$t8(C7xJOs7WM8HaIH9x7qzg;F!vQ~zTOhVzE^xc+t2!NFoLe-zN zwyfi-<4J8!aAF?Tune6!ZQVQHZZ3s{!B~>0j)%VNerFqUxfI14;1aHXs=ILA zN~B!+n*pSJZfz+y))Z|v7uYeX!I z!x`=A)mV@7&n37^7zWqkl1Cfb8;dX|fiFXF!=lGEA*B<&dQg~5Vq%Id>1I~)FZ;IZ z#EXy!*E-N6`C8>J=mX7f2AZAjbah+H$~D7z`lB+d#ryXkVLUqMBOq$WGi9h~EyoPG z&cl`6-CuMBqhzuVr-Y}9@uK@vCHAXBWY?@%5(*Fx@S&bplvPAIRW0I6RMxK>IF`5Z z8Hh&8_!l3_ijVWSD8bX;k~4%uIcBNkBu+~>j_o|_cQ0+qXCdZ&ky5(4KFAv4cZL!S zkT_RyOrmw*$miPZ@$DnDQ=>KMPk;x{Dd_!puy3bb6p@dqbaDg{LmB&}@a?Mt|AsBO?FkwO^`g1_viR|Xx~ISh@+R|V3W@SB+=iPuCD3BZcIYX+q| zw>eQ;%kx8~R>d24H8*knkHmSrKnx1_=7Wh6yZH4=QT>D!L&k5Y!Ms!p;#=;35V>NP z!BZXueyA%89;R6&r*gZobXIT@VPbmpv#6AcijSlWlPa&$sD^PQmc0zVDF-9>r1Nl7 z6As?wXD8*2I@RaqPs3mkJUAVIwL=oQx>ci!iBLDcLQK!;$$vA*Z^yhON&;_xr-`nij72 z{gY?@*bnFI_&XhY2{eSDr!9vhY~WKkoMx1*&??i11Q<_!`sa~TcUb+P!s6oV1x zfnKw*cTO=gO&&O$VOFC%pps1u6xmJ{en0D9Y-C8PbHdv>#rBcfaK%UuY3kB;j|Pc& zt1yo-$fioV_U7#a@*!+uFwHhgZ{_pi&UfuMX`dha<*gTGbMqo2q|_0gtD_eljmBq? zYxkg5_d55OsdKs#q%QZ0#&!N70(1E2qdl0f9oEfYr)$lJ;En z#1+j{W$mjB?vFRik(thG4_dB8S|)B`PpnSUXXCoBSc7aJPou^QPkhU8MCs`vycc>G44#0wXlJu_RWEdd;AE>4B!(&bF+NbG%j-{QEz z5%@ug?EcU^LlG7pw4HNQfiT%;dqQ?IRjJCUm0Oeu?H4soAd|>#IgQ1LMda*4*umu>!G2tiC3ZvIgB>AqF5!*to6oBfCG6F^50DxX`2{iZ zrBj3-9$KEpr{?%^5~Zs{C7V5QZ-&}5bCdb9^O@Y%l6zO?RaRAAgAa9MMQ4DX-q)wgDP(;O-UH=dxH=EMz<1J zXKIYEu1h#Qs%=wG7qXoo085)MY}F~qkc%V^t7b||G;4}L6NsQ4ZR&z$kczDH{)IYq&pG5tfkm-)|-|$z%>etB%i97 z)*DxRJi!jM`)WFKSJditw5ju~o!vbhZ|f?gfopIaBy*p%%(nJGyr|Vql&vJTP(?;m zG+{DlG)_<^3YuVvZc76|h0j3#D!_S*J4|~Sy4>?r!YG*?=@d;0r*^=`hF?e}99y;C zF@_BTanaRLUCiX!QU0FF5)_RJ!gi;!@pDTHMJjf+$|bQ=TewFR^#hrae88mdJt>1t z#xbuH=3EiSsXs-`KoU7C0*We^{PUga^uJa*)Xc8}*SauJjq#m*;MAf3y;Tfa62`7~ z8Obbk^^Mn9S`{d3Yw1AJki^J>0tetGNg9=r&;*05H2q+?T%?^zA3`U%2lZ{RY>d~$ z&X1C2i)qa;p)Q~!SD{Zp_3dvNSNSKkZKPFt)_r7_%o%}1Px;s*@0HZId#4O;+76*0 zvJ@|OgG^hAXG#fz@`#)w8_N{>UUcS4^5`_kiGBO)0@trryN~gC;EJ+!{i_nAKGwXE zFe*Ui*u-fIJD-@Qf9ryAMQR%h_mC%NfPo_2%K9-+u@;QBrod6WXo&~Q7g5_s4nC*) z%kBg-$uG#M?NFji@)_;5Es@~qsPn+0f;xn&S7u2Y(lUVv z`L5V92&R%cE8N71yUx-!uF_kVou5-aR5u^j+;C(UY3@@Vunqx6XW5|H*#I#j$I^eb z)yv#-!Q^fh_F46pU*WYY?=G`hO|LwpPS!T<8h>k^rx`6Etbs5q z3soEg6|2}x6e~Td3N&I$PF{jPZb^NhK5QoKHco@>9|q}|rC1|$J1gaV_t#ko2^N0*T*$4bq#FJK9M1tO8H z2!NF-LolqA>vMK^vae}th6>B_Lw50NEyMR7xS0&}Hkgli4}waU6D|W^1QLhTs9Vj6 zW$3b+M#F*SDl~v)DoB~NgniuBI`U4Q0q)W{wRU`%%@NWoYu{K*2HZ&><60h_3DH_D zq$ZiZ2ibMj#hFqhQE>bejVUxgJ9}oNydELFoQ`Y_(sv3E)6B~^i-hK*Hu*hc<}!rr zYG1&;v9c3x-tHbzP|T4OhQ=+!SN+aQJ&}Zqp3buzPM*&~`0z#9M-A*3sF|Rv4TFsQ z#cc?T+xJ-eUBblZI_t4w{dL{Be)pokr8R=Fx2&vMg~Z(9X?G;)T#P{cZNCyU}eIYX1~ zi#80*0?`8P3&P#8#fcB?MEZ_;f#`a$*PtdccXzE+3KYuvV?ZjFV~CnPU*_4#Z*p~- zQZl^tlp{aHvc$GIl#nS=->2D*F>^4Mq!^*zgA}sB6zjBk=oV9KW(hJb`I8|&r>MhJ zYoNPKgCbo1eMU{IK?EUY@#UJ6w-HI)n_xs?O!$Ph*C#gefs$efS+}7=sNVEGy)uto zfuVar0)EPa7i}Vja!?2$M^Do3g1Q~Ez^W}#t@~BhPM&f7JJe7JbXL+f6}Zm61!p_^ zc_Yg30$xX$`xUt+cjkKn+W6@we@s!Wq6Q#%V5LN&vBiU)l_VnYpMTQ^82{mjyOrBC| zCuglx{fde1&S^`lclNP~>}GwVOuEm2(>vZ1IL=GEq(YLxJJENqD6@&$f!H3zrX+9W zwqpC;Tejqv(-poxJt_wXE9SKda6LM;xxUBia)piSo@m+ansACI!nnRTyIdb@+?+y8 zWYEK0$;ZGkH`13kek^Yse=0?HyEdHkH6VZ`Z#(s={S~+IZ!iiBz-QP}27>h~Yr5 zVKQ6BfX%Uf{d+XZ7I2cE{81Q4$mlrz-?mv8x6>~HGa#mpn} z_0g8ww{70r$IU<6UARC0qR7v8&V8w8X|pZbw_`}a4DoxetjRudclNh(hWQS<@q&V{=#^o^s8rPD=Li?NAryd53&&6=%Zswb^w@WcQPRqE zF08n6(^*6k1ylx-yt^+8c_b@9p}}&A8*|E_YV zG{@uD-<8;vtF+eYX$f1CT{PuhZnKsnff=K4fKCF1dhGhbaNs=Tp)$ybK`!m-Cy!mX zY zIfk=mb5e6IfJ%5gIQ)z0hU@5uUnzPX0S(mj(=fIgpQdX;>XeAREOHso1BHVi^_kx# zSGvG2n{628Vqnp9L~&OQ0n@<1fH#vgm~ULKAPZ1jXrw#9ws{l#79h5x4ALAId=>?4 zO@vJ`$J1B^=W++)F#Rg%f`HnLIpkrjSEVJEH(AW!#OqM#kUUHNyBGR});54NLX$OO zSZ#6~(}c?dSb)&+G+tTv!Jy|K#|0gpVRKsEn9pS6toXrUF!J}^ER@YRM|d!2mWQDm zFOvij1tH~ohWHfPZW`6*#-~hZ88cdasiCevvw3iVk=}+SC!pG-2=5mh%$_s-2Bera z4>PH#ed?AQHlq14+Px-RuB!L812dBD|MEvQJW?2B&XLL}sAwxtg&a3@Ia1bfxuRnz zpB=PZ0uz$+)~lzi5iwQaHMuGgtE=S##X}sgl!f@x%BAM10fnecl%jwB^Z&DjIA%PHuiDK}4 zDObduI;3c%+!ocm)y_nKLQk)e$R5530vh|-N&|k)$&&m$pK?oE0~D(Cu+}4=L9&zi z@ihN@lj70wt(ZWibAxvs$k)+~{Kh+l+J=3XX%OSkCqJqLJbgwpLo!&atQKU1<#@hi zE5$JNPaHqCfOr5P04IV^?h{bZ_qp0 z?(=S4onu4*b|&ux%1mlqreT4BU(8b;VF3wQF#yrQw7?^A{<=<};|Sd|Hw6&gGJgse zSQHO_U0?MSocrdQ0?6{>bRnJb*q-8Lm7VV`nvt|n@|UGEU;}CeYyv!ww9j|9In%=* zAX@6YfIk(XIGx@$P(Le~%uXL2;XF6s`r*5lXhu#BT)4s4YpW6!t8u30ji=@T+4)hD z{!wp!^j=O^Xz4m-mzb8qi5VzyM<3SmDLob}tqUEvt_NzTi26Nc+v zrNJ^1a=Yp+Q!(Mn<;>X)8~ZbzrFH##+X}bPVOnvPt$Q)}c4X0BC9YbmmM_Rd4HPSA zr<#WW_Q@^-Up_F8>y*sig5T6EZnXp%c2*9;twZd%78yL3m|tmKjoK`rGc46U~G7USwf^E&bMayr93g26t~ zYQSfMctr|H%qJz4;2u}jcOwS0>Tw6OK6#NY%f_gY&uOML@GmI`5agf#}0mIH5DU+WZ^=MGH z_{?d4v0)Ngs6j-Byy;bvZ9d^|H?))%Yj3{Y5&dfk6t2>0YFH5;s4*!g$arr1u`>?| z0mNbKs@ux2yDgLL^RDcQmFIt^2Ys0sP-jaK11{QNk%umVicnY)xo<4gMONsK54%&XpRUi zZSCfdG;D$%@u9m1vUd-uf|%ohd0fV`A?rJPY$Q;Sdmozt{s>f@o=1_Ld%)I{(QDPLtjlz!2QSBzphbZpybh7&p*q5Uwwl`vBSgYzb;q}l`jbF zwgph6p}96?!}e)dOg136F2&5s?V>He{5mY_eP=Hp_9k#%OxO7M1by>?0Z%E)&KMwk zoI}vx+F%#-X9LAUP)bcsEgCq@6mEPMw|w>ImH$uFWboPl8mnsWiT@UI^#9vCNJwh? zV{ZHF)k{0q(I`s&ncp+#kFNhUruYkx`|knACx`x=HGT4-=QZ>nLy(bwGwgUS<&T-@ z)bFJKnulEGU-WxQ^o5Tr|Cu-cHWgIwxGPIX*c#d)HJsrMjcWabdi%#`yp&B-VO)d{ z=ppy$RKM?j$?EA`T*eRuTCEfQ=cn!{zh{Br-XTP}{JdUI{OcmqVQ1Ra?`nP}C4zrGEAZFJKk zu|rcKP}+1+VI%(n<8fIDpTMF&@9QLHsdkm-Gxyqd`b65YEUNt$gnYqVTrpk94tA>c5>D7VjAUR}xjs_|;u&cp-SKSpEUzAag|TDR-Y zF|~{%{@56c9^qR5`UNViG54cBp)q$srczHQ?a6^qZlCMi`1e*!<$WIptwxzVvIXih zR6@7L{OydmFxwKVf`9Xd_RgB5diIJ$=NTUtcU#zYpvu(+xblz5P5pGyoY#j$Q7=SM z%x7Hdk~dZveQ!9MFU_6Slr3k7lJQ(BT63>WEvU*b4El4`QW7k^LNy}EMmAW&(;l6f za;>4m#@Bj3_mb$qsgdkQ3S>QWFe-7n+g=~~jxeXWxYtzVFbSvrp&p+lna4a$7lc*Ryw?IoQ7_pkTyL0DO_PVs}(D61cZhKwnq(m|} zO(7?oXj(nLOL7^|7i0F>*lJQL?KR0H|G8sM588~5_zE{4Y!v6Z=(U0*8 ze{Q_zCi_jU{;9a9J&w91{HZker!W6kUpNW2)xjEd2m>$r@9xBMD{^xme`N5zHcLGG z&mHoyQ$6!|83}E`#)7tF{d39hAAkPmUH|8{_U(VC-T3Ek?sE-&`_J`U<<=Px$$$Ol zH~2n>>w)2xq0st*0u{R4-R*ntbz}cH$1qT?4>JxoH%Y6NzrGFmvk*ZG71c!YfH;$vr0GvAzXGP=M1J5uT`+e@m>(@cVM8%|>q+?$ZzLH&r zQBZs!Ixc~j&!+nOl#WZ6(t0w9Q*AJ)VQU7;Thl2oH`f!iv`|q|-^lUg_U;$OM)9Ew zym4A8dlzrs7pm=y&ahD$aL$j9+B>J6>hbHZI;&pS16(4ppA4?-Fxe-RE1ZFrbME|I_IL|Kxg`Q^6n1r?MtC4WFUsgha!0K6;1zj@X2($zF-t`2jq2wdY{Ijn zSTemAw`#fh(ru9;5`!en^O^k(}r43Fj2=bEpB<*9(10Ty@xs$r%ex&Yax`m{-Wk|j9 z(frUl)$mt`v81|O`FF}(Y{pT8tqKML>K_>%XySV(96w)b`!=gBe((MUex*Dni4kEQ z^e_S8LLdzTK|Vdp9XmhLbgpv+`B1>q1X0b;F2m{`L{Aw5HzwxDtP}5L)h! zU>y8vW>!G{8Zak&lq2Z1-~cP6=4fxO33KK!|$Il#Ox4hrIB z|F4b7pThZR+5b*BKh^XfwMg`z3P*TP>;4CXBP_@Pe*cLU{THn2&nV|Vco@h(|K5A* z_#eKv)1J>l0f!`Zj9=LXc^5c+8(IerRK!x*Ud zA92^7;{M$y+%a=DL)u&I-IEpY_W$Vgg#X6S|BA^3ImE?9fi?WUg>9nZLO1?4ZtK%` zH`4B_+s)q|BAxH}e8b=A^*ELPcrpP@%jLqbDqy+pTy~^Bbm-ubn~y%bD`L6MKUG%f zZm)3`F5>(4T0boPqxVQeRqb^rWQD~@B9uCCbqIaH24%lm>pMC%*Cer7-M_KzgV^?? z7<$@2-uL*0kHzB)cQodGzcq#**cbE0BVmR;b~|T!ur1O{QI+E;gN5c=1)pyOGkY2oK*9-DPK8wQ;n(A+|d&2e#yRS=}M`M z48+=Ur#A@uW+?9ds0{O%7|+C;{p-&yAvdXQ4iwY`>FW=TZY`_Bo2l;OkNpTFlz1IH zL-pb8w$Y&%`iEQ*ySD`Lc&K!pHS+c`N_6ODk2a5qR&EyrO^<7?oexW?KUKoc!+E;9 zW#*$H9Wnju5T*>$wlscZ+?C(*N+sDRNu~QviuU~68idJpS+yeHcuhEJgKC)j%5Z%` zY54Hx&0A9IsLOdzD2w9A7aCvoRX^ZA|2*vx^XN0xuS#o)3hnK;^{$f(_aViVV48Xm zbjJ_93x=)z#TsSNtQPVEHY;qK&%ImfqA#^ve{ug^m^?EFO|(WjmqwY0aclUo^zB~oPbe$KZTKuO@C(bsKsWUehy*@C>Y*CMM$<#bv)M7WeFOKtPJk{}I zyySYlq#+PWiyf)`orQva6U zM@?77-re3SZ@T7AcbBL}#;6WwYR{vdC#qLkl{tjde-+E;cr(9L2J&m#*`a$_5A~8Gv-4sIEW_KL49&QPlLkgppvpnF}5#7{Fobq zPJI$Lr<=HI9;d#<6plp-KQeIN@B1olJl}PTs^~IH{`=%x%i)(5{7j8n2A&Bw4Bd|Y z#5ardcVVawqs^OqsN|{q`dp6728?Lz$5Cp^^dyR*w1-;hIXo-1|EwCjTfGH?31}PG-koIc&uf*Z8i_1!}&}~ z(dQl;r*2zP3#!YIFO2lvx$@=ZuO^ADtD19x_F;)u9Q$(y?p=GDwsz>sR|ogkNWVZm zfBHwkmg*Z1N23AE;QiK1%*Z7k=A?t%Dju95>kY-&R09!^=K&<(&MBCBQdQHXQbIXCNTSn)c1qtdRnaJ zgQN@tbG#hx`m3guV$Hl;#Wbzs=VgM5mpID|LZawC-$|+H+aE*Qbjj2ILt2aF@%ygn z*EQZMktdyX_L+X38RWXO3BAV|N2a$qVG}{qoZW%fyPsJ-05_87(UxmWR*^Ic;q(bh zHok3e;Jf)n<*OwxJI3#H(I}ZD3wykT8mf!{Jx7{X2HwSrqy1E^yq&cDqX5*;(|#-6y+^98wF*>#g%F zzLy=3U44^iK)u8~X_#Euw6!Lrc*sF?ipAscq*vp*-x?L-Z6B*maC=lrHuW9AX3)rA zZ?-=!nqV`p?4oXPCI2E*Klin8i^D~eA0)XEUN_%z3TYm*t-F#xnE8Drbb5+|`o)Ss zUYMT1!Ir2iaaRj2)VV(8+(>hpdakx?qYy^h9nO1O48wYR+FkY7t@oE~#PVKqZ9g=E zj@5}YVg1}33;RFRYY^A2MZHhGT>px|&f~VNT6~rUUuN_s(8iuA`M_Pz10s`N;E#Bniz^pYq%cvd^*+4VcP!=%w-c|M2yW!I=eJzjr2? z*vZ7UjVrb}v2EM7lZkEHwrxx_!4=z1CU53`&T~-bty8r>?CxHxtF`ur{{46N53gZ@ z4-=|tx1wZ<4%8}Rwf@kkQuP%L_AU#(5N*~bPje$5aOk{0#f}OdO;?g0fWU zgOZ&%#~VgpgUdI2L`$k*(YuH4XAsbrf;BS4l(`help#uFzCM=n=@K;kDTzKKN^n^` z7R?V2)rag(ceU!pi-s3-sVj#MJd~xk$`?W&M7bCp?CR2-oazYq(Zt6TYYz#Ts7CPS>VRyVpPgR)Z|Z!zFze3mL0sN&;&^ox^GMV61F4He$C( zf?=ToR@xfett{-x+C!|1hA;Pi8mQ({G$g2K7?X9h%^%FWsG-3Ja&QPipW3moTDG;pC4&K?6U z{`F_9&xhzJn{ zJ--qU6gPlQe@96$SV2~CE-~T-F`~)B#GrlxKoenJ^SAnd&_wg22XC%XqHA>f#M0C7CSWw&X`3XLn%#w@1eJzP_N%)Ht(05O zm_eD7ov~-@V}?T>HxEThoTzd$?z`t}7-CnFyANoFmA$=fHwXMfZuDw4anBVE4HaqX z4X#YpJ<8J*OpG%)sCnNOu}P93Ehn-AW;G{b&I(#M039(3TxRy}{-`7*LVuFnURf@mD)k507UG3Q4V%NY{&t3MJ(8 zny%{qbP^O!IFq==dcS3T{s}YHHq`cZ(qN6kp-m5o-HdP}_|ti`TF>hhCk0z!WH{Uk zJPTVG`t8?C-=mDW^yAUGEg>J_C+op4c~-_{oS|wIDf471J^NcoN8_X=Hcjb8ZZ=gD zilGnc3u*-HCu%%mU6c}Vx|gx_&RO?bo2(&L%z?Mtd~a-3p<*%Vd7)T?dD>f$9P1wM z*oedLy1DCZfo=*wPw+K2x;21Avt1KAaawi2j^jt8BWD$CG-azb^ycvjS9bijT_m&v z*78HL(N>e|GhiqC8N|x>USvn+`=UGJRh(Tmc?t7o z3uRg>SVZQ};&>C1v5F6b>38K#!<0$5bd@gBniyImFz=K&!c1n=#$vvy_fOw!@QQK2 z)-+6d-ZfJ<(NdQCeI3b_2QV7vC$2n^*1%--chV?)_quT~xom4Cd7_3IOFgoAd?`fz zAJD4X>znbX-7H2MwhbcaMD!7w@k6eS!d1%q;l}a(d$!YNf>qpS6I|yQ@{tFI<&>hYbE(psNw;8Oc6E~qHJ zgX7RPCF5k&urD`tM4F-;+5MWhv7Nw*SB=?3Uw4EgJM@Xsy`@qhTRV(AJ20$Gn`Ez( z)JkXX&9ew#?>9xu#@|K4~Nmk9XU@?|g%CqjrII(|*bVb(aBbPo=nX)}3;5lGPLlWP6=jYwYT&m(HZ1;uZkO zu3_*%b@BcBQN8NEZ?w80TJoM5D6pnb(3qO0ifLRUSc#AoU|NHSkW&4$`XE<`TcX}s zF2<=`RlRjti+k77Bh~JsRc>}hWXIt#klDoO@30dsjlDF1V9(h3BOK2d(3Y+hIUJjz zZd0XKHG{Sl^^g!+N2G|5OEY_L2Zq1MQ}U-~ttLi739$^}+x%*_i-A;*EBJzj$hQ^j zyEcoRf^RMaJ?vjc>0rz>v|_PVTk2A@q$F7<$3oibQai3TEKp6KxqrO*Z8$4?=Dm!p zt5mAevqdq{$uHmxkQhUPjpDzd3X-X|f6uYE ztG7M>Q3DVOwj`ovUEP$$v5q@6ZvVL`;FbPZV~G*vxw-ZHH}rrtykm4u4=KajRnO;t>-|hk8&?vC+M2|sl z>F4vnO*1#T4&Nk~cj{ZN_jYEt7hNuZjfS{wGE9ZQ7n|Vea)&66ZdwZ$dFf*RuC#W9 z+LNGQ>`JCyzqqtRfPdT)MAvYuEC`LAzqAK2WL02emZ$_*6JFLb;r98_gQqeQiV|TJ z&tEF3xx~vV5asU2OPD2Mj_00!bsJ?(logP;)-L01y4`7eC$uDN82pB>GitbO8)fVf zmDQCCDtm4e2iNiY)Fa84?4vz{S9158?}CqNrh$E0h7J!t*+}hHmBP&AbH)Aj!S2Cs z*&(Ktb3p>^$vnoGK-I-Lkri<3^wgJuuEr)HWqp`|t@mMbr5X~!`p+w_s$`LBLe!pFv0%kl&p$_tCZV?0(Ea(5#(cAa1R<^xR#d+UrCs$uwuE$02FS4X9i zEw3*W+(GX`p(2$V1?A=W4;GDnpOt`R@gF$tTR2DriMUEgjhrP}6IM(ZMw*7sO|}OT zaLzv|TT9M21OtWflDHB1+HZ$Z#bJ)nulN-?{1*R`h+md#*Ij#Px4Lh+rDhVOxL#0k z*VlSfH(6cH{LZn^r70!IVmGP3wH3J{T-P9m>!bB`?{#SM=(>8Fp8aj!F82{S|4QAw zo4PIM`DA*I9*ePav~ zI6fJi!0@l(i*9|GY&DRRr*b7&p(NnaM>6hr9`jdDgEczI5l@jX?h)!Z65?yt*$KG( z1=39vvHrrihk&of{kxl06$Cb%1*0V1=CEuVzf{OfMTjT)yO2`2(9312^q#0PtfVT$ zR6%m5KIVA3lvBGt;ZzYYkm;f!a!D2aPjd5g;kHb{(kD*iqh&5zh-rqnldRf9MoA4x zko#XVmaXy+<$~#-#U|yrSQTRQ2?gpk{^ljWHnj_!kp1|kbMj+PAWdXvC9=8MNopzC zD(ff#{IdrqIdj}p{C;9*;nG+gfL?t;gUhBY&Kfx-?oOVYFQG0KthQvkQ{>?fQ8f^y37;IJL$P%b^4dpS9spN0e=zm45`x_k?G_%!P6s3<*@w?wa zEPn3B>P2-|+VN|@(PH^q_@mch@AnzxZ7ui~<#4T3eLnK%R=6I_djWxOPH--C*X5V8 zcJ$V&*gYAlHg=dMb?-S@tP3|R^}8?ibpa%Q{oZJ?yWoyE`}-`}^DfhSX5Ul9`v;l2 z-(No6-tV*9VMklA2S?v~Fe3fXo@@F(k)AOET#BFNY&iVH^=&wE9(J$-O4YPpEGT-g z!r4IOp}mE7&Oqg1yk&Qw18QM-=&#fI3RQU;MyBJSs`$L4)nIwFlSdE<1_vh(D)>7+ zR5Dt@E4yxU|2#+brApuY>P!8u3gfM?(=X%QAMNM4HT{_sF{`%vd}mu#w@Y9#?`J&( z2AYf7rnl3`zDaSN-fj9f8uBT_L7qGXRnmj%620xrf@GWQ+JYqI0`AZxz0D~sw@Km%St@4nAO4`G3pY9&73*Qe1innBAIina972Bd?Q!ekLM77~;IfTScP&{>rB zfqgf7_uk$lv5R}c0sZeph$S%Izf64@p_OnsQZ$}d32}`^=Lf-_%>%|Eyajg3-srrO z`rha`6nCJov54%S8DRpluppsxSWhq0=4l$x~jR(pF=pSe1 zWagk}W@cvp;sXDi|7FoJv#`-~uyAsGSt&W2*r*b+ex<*XEF51jz`$O@#KO${i%_$1 z(El^~vXcDT#kVjLv^BFfA^bwv|5_sSA3jdU#K_D@&&CMgU?QYrWoQ1XhLQb?C<8cI z=vmnSUlf6bnVyxIiQ^wK|L69#uW!QqRrUYiApZ>x{z0Sv104Lb{V$LI)n&r}jL8@A z5HfHw`DgHd_FT!u(D^?a17S&#f2IG(@fS(>N-5ikONz)E*ni0gjK2oJ!r9|L*-9Qx zU%i*KHMRRE8c;Mbv-pyNco0$weu+p-s9+f69gR&KEo{vQDgWE;D^tnE-rm~8=HECn z{sVhz|3m^>?2L@`jGO@Wf0M@eg?Rw<8~`RpPMv=|S&N08@xO-qe-(U@5cV%A0V^Z> zmkB2!GY292R|Yc+BP)QAg_BSV0QjnpiIa`xE1&7h`AdWFRWAVWr9@z4X8HHd{7;qe zpMfR(veIJzN^&r>eql;>7FK!yJKNVRd^vnMbFzGS>ktB%zKs66NQaQ)tI?ca)iE*u zYv$MFh^YOiKmR=;{~LAwf1wy=&i_L}qZ2=CImie%a^(wy*D5RtB)xzj`l$)Qd5$>w z2vT0{96HPt>ovA9o6><`TDKckbd^|qK8MF`1!`>PtI7+38MBO^`T|57fSw(R6bfXg z){f9+gO@X|Z_`WlS27#bV1*ZW#4nV-rrErB@E-7r@Aiz@T4mYv!G9h57;d-Anu8b< z-3T0EqUJ@sG)Y5ZrrvPo8j)28)E_eJ8M#0uwC&g~RXI2W3GuJ8M3Tpqh8$AmsOBwy z0=a9rVot5DlXOPTc~U(x%Q%pd<3t?gl`qmbR2{0k2`j7$(h|(Ike4|ZAlY3`c z#bD)VRz>mGLXt@*)o9gMHdj)34^&c<7bq5)ZBdmmuJ*3YjaZvm8H{dPlmVT}$(M+t zAjx$9cclMc(Coj~{{LLg|JLzW(Ea}}dQsaiMbp1E`ahR8oy31fy0O7mynO}27t>?; z50(9zW@S4STZ?}pC_tfk}L^g3(-aM%L!sB-YVV^`_i_nw`{H`6km^AAPTpGtw0SzfIuHBxHTxL zfEHmfT~qNd>2G27lKv?I!cv`jROhy9wynkQot;e^I<5IylubCZPdOyxq8lvEji@cWnu0udQl`D;?GBoEdH)( zTPAyGUhLYQM=PD*fPX;PtN`$~?XMIMA#5N%@*v9Dn@zs@Kil5zwnpyw&h=WMarP7F)iw`3Sh5=`=0XIBE5jdp~0RQ2ej9ne8834bq>n`})CG^)|Tb zOg^l(S!Rd0bZ3+8w%MDc2|`3c+_t1=?Y7%}y_DXfdjA!5!}GKzY=F**}^xD6q^Q zb$)yf-1dXN51zUJ244hGnBn=JKOioj;Qf_=sE-j!a0oP%h*AJf7>WthKm?xk!zWzm zNBu7YI2hzTByrk6;vvIOvY%DGki|a()ges64}R8senWvP6$GsZEg@1B0yjicCRPBlLM{Oia+rW`>cng^$`rg z2F1(;WQ0kG59Y4&u`(X~!q7vj=K@zDs>3hlNO%t^k44XeOu}g}Yl08LEA!+( z;k99CkXY(a9N4Oaw82tO_vR2Qks&c_LfFF3@(3J|AnyHw9^e3dnnN*l2o9*$0-ICU z%&TReG};K6NVWdc;aWS)AHVC+=*2fj?76iA+Q3=}FN3RJd;5^Ag*U-BkZXhS!aEHp zfGUi^?ri5mn_z0hx?pN2y@6J{mP6fjkT+aIdIJyk@IXfGD0i@P(RVoQu(r5evt7?2 zoLz_yy0(bj={iJ*?|e}lFaYAM0ek+#1xBI7>n?LMaX2yt}w~=RLRD;@tRyoOMgkT zUy=sj65Ejy>lhPDp%QUo#-)H@38wI%5n zom0xE_Z{vJJ-yBhanvPMvpeylUuMU``ZbUT{dUK=t zV4Ow#FgW9>$bk6T)3`p#ewi;EJw+U$t|0#JxB>LrA3#+{DSpt6vDSw$18xsw z2T0DSwnT6FPYAepH6*wA-}jKaQnzm5o#XQNwf!pl@I#g3{HJ;$y!*MxwM3r<{2;#* zwvY7!y7%3}f5*Ea)l&E^T?H912e^ZYBk>QW-!lyG%@l0I<{q4f103Z(@Y^Ep2)Cxd zk;L2T{(@s3z&y+j(rH5jeQUIPVQmknAGmkf=_A~^)xzBUGm8m=gS5ebc-pAI>`mP#V(}#ek&jA@O#z`#;y1Pc|P?n0vY+ zJTpERHx8F?uW}sy-GR^FpMHnSJJz0Y?@(P*gv&eG9dGQAKEe9XWC6E?yhGobeZhGq zKhSSDFWthofm_QAVRlY_3xL79tXTJqqkGwFP&*;-_|{{bUG6TOZ4fi})E<0YV0XCL zi+>M7&t%v`^EIra`u z4Z#-wCoAfonBPZ^y#i6sEqwj62O^rkTOE3LprOn;x92JDp)a8>B3^0EoID^m`t@M# z5)p0@T9Mv9x$$xOqp+z8!EJUm+hsR#x+F}Uwn34r*FYvDC{EXf_ScAs^B*)KTa0N= z&#{`wKg@|ne!aG&a0oXq;GjAp`5D)oVpPykM_Z;J1kYz-IW*%pZRl7BsU|__Ns*@u;RL5l%*Wwu+_E zpPU&qSDW?!cFn}LU)WUBP0OB)gi0Sy<*+%4`RLfFm<%^901Mo!7=cbS4TGl5X`=nc ztk<{!7B=;dzBW~Dep5ej&yLIT9#%ov;k4)G_)83w-iCcfntWGeJKM~#y=H_jI$h2;tzE9nhnU zxaJnqla?ks+CPyY_X4&xHlvl5b)N$Ka)vBq!t&edD%Njl+$&iZ{_xlb{fA^e=Lwr8 zMwcl}$9k!qmQ@wi$$Y6RExo;LZ~o3z>hjxE_i9@_x`p8KMRP$Kg1JUhi-9s!wj0}k zHUruP0$h=o&AbQjLZcHji5|52o(CGrRKr{KwM_R;%1)9_n4`!1t(O_+L!tPx2M0l4 z@B?&q^9!i@Lr!-gG1q$P1M@rF>bUPj+wfNjXM)lgF+pfOWyL``z>{J+y#C`zbM_C6 zxF1uziS_0(UHY_GIOMrhUb&z5^9|i6V96FXXIc#IeNhl>hxm+u^-+Ebaf|p)CS4*$ zSJ!>{8_}}%)sbDsstCvV(ip+k6$~u`Eo5OVDYvKjb_GqAzcYF$ncIyGaSq%RWYP>3 zCbP3?JgGD>4s?|M7ZLh7rB!^X%M_J(1YCd8`KvE5jP6p;OG!o@!2(-)o#1{NFP3Go zWU+C6*ofbuTM>j?G_3Ua?G*VAu78X!o_uUEMT~xzz$*gJb?Pnr zK4GZWcLari{LEs8@R-WO*s-WHq%j(XXPKi_^``4v5*s*;7v$^ogj(TY%5%*@qwZmY zZ6SFSf<7_kmu8%v?Jv1LiTo5hE*ywQ->y^(e5EnZZ7{47%~kMq#GnZE13%H@1udAR$W&t>`?7tql6Tv7Yn zuv*4={B(~on&I9#@)OnSY5gqc%jkW?Gm_HFZ(Y4S&>O1YJUaq=cuoY_7rg|O6@q?W zKnF8J52w5)N2u`q`2a@Tdjs|k=;kUGNk-vG*pJ;G+IH;aypnNzo4qO_nG*ecg*q5uy>jUsdGb>&?@#Ci+Oe4G)I6rRJ*C!K`T!&vlH1o3cgC>;p z7q(?83z`SNzw>44*RSHmw1~3Lkf-HQt0WtM^(0`+lcO$Hp7Gjp*-CvoJ?I*FeNPRjX~}}gON8^=P%EdlTKLwMlQ*M%F>HK z(G}D{TMw3d0SffxmS67Rp`$u_XyuIcf)xLCU7F4A+YI?SDg+$Tra4O_ zVYQyn5()wamwi4qU;DCDXW}IJzA7ltIg<*HSO;p(Bms?rmT^1*kLk2MhVKQMCw)5L z@F*uw$9$J+9kz)OJ-10%?K&@=F9tU1@E|fe-SJl`);45J#LahJ`x$7Nz1uU|OkH?Z ziU@5-CgQSaLQ%G4?W(z%@=L~4DR%pDt5)mw6nx`KIz=UIZPfY$r-sw{qa3d!d=>z0 zS($pBfhm1y*BIfsKzV8&x6UMvEgJFaF{7wVmO1m9O)IP(dK=pSyMg)+I0vD0hBBRt z^v8nhIH_b;eX3q)WI#a@mb^)WP&3z^6ge9os!4OeQfX3};Zexc6b*F-i(*xk&_N`x z4cpO?6Ps%8DBVwsK8k0yTRZG`r;bPrZQZT24waohpjRkefocewW@c5v>P;I>(-tx~#rZDszp&1z6 zawrCGp%Hf4uBTwEj>w5S+M$73xt*T}=h4Y*d5jUO3uc^z4?=tHBqmbS@%A%Wl55El zq*Sf@fDyMWSw-|5tWg#fmFt0UCL*OSIk8T`O;@?PJ4@vl^xsP>to9G^-ZrtBWq~{m zY45USo^tBtl<)~75z>;RYeAU_!;5Io9EJYXew7I@uV5VrGqUT4u?S zikw*IRW+4lTBuZvRpVtV%a&l!nFomj&kvhh28jc#>ul%eUCMTDDY1efdSbk2zF@8j zA~r)+ikafyh6W*B8i)HE2qTwqyy$z~OeoUYS~ASTT9KU6^~G(E%sI}tH14szHl%{Y z(1!9zOiYtUwUyZ#+SZ(ek-Je8dt)#z05m8ow_L4WJag@>V(%Ej-3eqqWh?y=t` zPy-XUB^1}IXN;Nm(&0$-$Voows!f`|C4ZY;rZ}S`t$>bd&y#5dEow=fc5E89Im#)B{)UrHA{CCq6u=RIj|Xoai?td( zI2lol4Tq_(geIY4n_+Y`C2_!vY0(0YT065(T(jET*c`Oo@}cqn19l0TEg{43!PruRHP-8wp3`(q3G=jaK10n$cw-G2wpt3dqQhCbYFSiW`$IqmPBB7= zE~OGSTL@Z;53*|}A_W$-Ox55v&F9+?CxSb08f(ZOrH^Uya{UG*)Xw5c<`v}8=3z#g z&B)yTK_katc1gIC2r9#FyxZ|%(aPnBr-1;6CS&A*a$J`Zh>xC=6?rQV zDF}VRBOVYeDgfnsKB2NdzACn|-)b1NP5dE=G>u+4Zh8H6T%Q7)WkMotouR>)u}fx^ z80xNj>11`m($BzFi6ZHN+h4@(XwW}Y*r>i~J1quW1VDn;Lcqm>jHjFO+pX?t71}C= zsce;VsYqI+WK_wPm^O_p;VX4ZDtP7;S2PLpRZiWjG2!e>M{B!9A|q6W|?4%`l{jXV@z&`sZ<-5jPoE~GY%45%9w8F~!g zRL|n`vHJbZADp!%Gk*DfH2eALnAEA!rpq8Gtqf{cY-D0FzE&SWVSqgSEODJfI699a z4j+GR|6^nVbZJB@5BBb9fjQ&2&z9uE(6|H^Cs)XW1)nN;UbplQJL`P|wW3!o@dfe| zSJ}5x;7K0udsEn;P%30pxSHlVj89WJqfqDknK{u#!Edq0k=1t0pZyRk-|k$Kv{@gf zwg3&_{%8?A@jBr9jpN2Dkr6iJg3Qn)Ftp8gOY9yYQh$R?I%~G9j>h4$)fg%(bUa+F z3h0W{VWvVNl=FIOiLf)8y;Y@iM;V6BxNw(KV`=sH94(qjCqr!$|Jc%BuBO?p&S_}s zU$AqXqf+5mtr<^!%GNa7KNSmca_oE2Nkx^2uE=$=+h`=a%>QF_SZlJU<~_moUHafOAB<3``42??#~P{ zilK?n7UQrS+~*(%y+>z{|BX8sDN64Gbx2K z>iA(HUXkG}1bz$T0%x@niP*jDe50Jv>&FClaW!eq*PT-e@ zBDt*&0kEEanNqXL2+zpX(hCVnQtcz6T0x}H4@+OoPTLXao&ujXx)ITkP)^PRi0ZBuVj*#CywcMPcdAyFz|o5auH zWOb0uJX(BUo9;Bp#!N9*5C|JmENLBjZYZc0C1WZ}p1CSqGecO2dL+J@Q5Wi|n=aF| zpe_^3tE+eW=nnL92px9j9_UQ>DXWr%e)b zURbH{>msGZ^r0R}UaNR6Xd+tsCY5|K9pv;de=_n7p&6-q+%xYQxx1!FcmwK51M0)w zKj@afY1{Ex<+;u0#HTY3B-YxQfiuuNPPRfRRdhw0#ZO?K{CU*h#ic&lb7)(Q_r{$; zAaAc+nnsU#jh6UEjvaq&SXm1n7KAdk322c^w{zGsr#KxXkzGwM9T~QH|6r_iUCvoa zsZ?EAsp+aHcA2eMhhIP6T3;`2WV3l(SYO{-!`5gvbXGArsF+84>2fdM!`2&7Pi<0t%3h7NpPwxKw^cuuR>Br}+%Z;tud_cj z@f!i`;4g5#wGqqG#YI}ooR{d5{FqQ=urPdQ4?j+a;LxN&ll&cBwysea*Uoe0jeS#+ z#Frm`h9yn#)0$O20Y*|8zYycq59evXh~G}3Pa3eJ7fLOCF9ASIbJD=l`Rm;)uQ zOIV>Hhc%pIXO#JM2CSJpzd>{3K>IyNCiAPZ zG~e3zbEX98XdST`OHyDBqXh!0(JH3vR5fWb&JER*>QA`fK92DseCfP%z=U=dKWx+Kh5(mP~47b%wS&^g|`t-JC0>C8?g?*rjP zM5rRs-{#KsG3_DV$kX8m!ox;eZiJ$YO;o>E`iD=!bbnU6`$%gO4(Tgx_?O_62t4WcyICDrRlNf>MI3AJN-KXGp* zXWScXUMrea!wgSbERvL%r7V#(Ex(x-?;RR+=z|dj6JWFBvfAqthGxal-%bxTh1Fnu zeU&tZ%?}@B4tem~z9X@PGNV-l2kiM(9{es@bgFyi(Tr&mSj30F3Xt8r z(g+t5vPpcZgHFc!iti%n(+_dNS*x9r+z@7nDac>hs~=ToYl*@rI!xhRQ}$TUL9PM2 zESAPDTztYLy$ce-r)SYn?d#&F+54$-j>+lK_Qt`#-u#2h+|_>`x`vFQ5)D*YFu;ch z`L_B|A~`||A^u1h@W)9vg@+u}&K9y&2-hMq7_NpBT!lB7meqAZ1!!9l&SH-dfgzi4 z1qwDr2nY7lL4|gD5HH5Rp><>m_E07=w=3xq-PxvJH^}0H=J--J{1Mw~Lf!xab$~+t zrZ#Kd#<_%R?zkZ^NQ3yT9eWId@M%?|H>PPlWu2oA%XoO3lpR_&)ReE)vd335|BPG~ znrwMB?ZAHIvv3MwJFbC-BBl!^9XU5Ern>GhQE%dWEO#@Y`+(qO##GGl$Zak;aGWD& zkj4!OuHJB18(PQt#8flQ-QwK@c#O{IQSGf^nAbwl(vQEwTI_5xzK|d-Z9<3AQXBQO z1Sg{iWEEhwQnzt5O%&v{)d5={00SOZp@q>JN|Wu!HA~*zL=8F#!C^6QkJAd4O}jzOdZCF!<;10 zN&L+^O0A9VE{?CK2{flQ7Gyb-dU)F2#=8R~QILM_YeTiiukmx+M5UZ)YMq+T4(r&( zXLqdF2WX0RV5u$?5A0pU@Nad=427Ut?B}L@Xb*4;Fb`0sbG%|t^RE)Tk|oFMhOH8H zgk%>{b+O1Do?K2j?*6t+u8jimuki654bNqQ65P-aYI3D?$C^+U*zOG#sGU%OL17AP zbBR^hvYZ{|joC%wwy?qA=e1@4;Th5djW2)+yx-@uNA_H5_Ha6KP{05V{(XY> zoMc!&w^WfJ&|xX2maHYU#3oiUT?spS=q%qD7GxVl_7l0*TB&NLn67J=uTbAnG-w>< z_ILjJj0NhfW8nBPt)v<$c4Rh>BkxXicsYAMEXFs4j)!fhZ@S+pL=5i7^HOwTwq+>l zc1rmY{0RP>oS;}}BvrGk6XHi1Tp7HW=R4(3vQTf_=C{+eO4^=90FmSuOU&JW9NVL8 z$RC{$db`=qhKKx-;A-)tz)Bx!)J>tmv8s5PYt+rh5q0sX;3;TQnNsJYP+VH)FSYnN zxvDgLr#5kuUOa3O(q;3I>6YE3Hm)b+mhSEOTlkWM_>m)x`)^>{dpd`sdVn9YbuEHFw53fTC zr*#A@JF#PB$;p6Cxba>FIbF)kRCKddg(iVU+mK314Q)o@>X5yI5cP#Rz-&g}EZtbk zIDVyu-cBCk0w`3d!B{~1b3IF3qmIM{KfMTnYnOlK;ELBkl$TjC)U$3lR;cfgzL9ED z+=!SA6y9jq$JccvcRSo{G9+dK_3Vsa70Ltan{U#D^m-Ornr&zDJVD3|S4ErGeu%l( zDg-!chUD+8LsnvADYkOCBm_zZSCmeFnf-5MI@(+;^tD-fSq)}Q{Uw|q)uQp7lV-|I zRQpkn0+h?T9hTYpJNPNHu%>1XZ?7YqL3qV{RMGf_8>ljJboj=-v`BP z={8Cw*UQ0;;>J5?cjq51qhL2IMzM5lHwaj^boN+X!O%TA85dPuW#F+qH~oeXiO#0H zck8a(^DAYKbq0$+QBux!Q4WFwzuAB1RH^}VWK2_8ZA#avNGdZ`#d=GQyvJCx%iA-` zP|5R5^LH_cF|S2Nxh#Y8O|ad@s^;@rrYwEESvfI1Yv&}_ijB?rP3p?`^4z5udm5=M zSj|O+ps4V`M2RlT`a%~6?!z^)sC02Nbma&n zNv7?plGyK)rqYqDvQ`xyF9%bax=GQ0$j>%8(O@ao+h6CpU3JSlXUvQAx@!a4+-sXA+m9e&yE z`|2o5b)4Q(l(6JR0fi?=m zN0oN6wAeR{<%e{MUGjPWb)wi-R@Jy~l!(<@Q##?qPyzF@A4#Sl?x9|ZTr$6;CiBK% zD5%A4-s=QnCme?c;QYQtj)Jwj=a{bN*lYt~l1_0Wu4W`7(oKQRj$=&?PN>qZMWJ zVuUmJ5re;F#@gn1#nLQ|>_=dBbIF*;Bpx)9bbPSz8lN^A;$qIByy!JP_^mp8esegk z885V-?oCfW1q&?5#Qs!*cukgAu8ERVzCCW5VjtEnTp(-x4W@hgyDk><^YQy#5ZMHK ztBgm?5J1UHJ?SJTfU31$=w(2R@$l;jW#2zlakeO^5QRPQWaU&5&o=LcId(%AVYe9U z7c~Gvp)zG*)^KQY+UOeRFf%A<;}&Tl2yU05xo?T&q7sZ67gu7s6jW&8-1KH@Rb7wu5HGqNbIVl-*&+K0%>0bFU|`saH(0s*mLwjvS9VT=@6sLj>;;|H0!h{iytw z@_H)e;Lo2f-VVw@aV$rlXr_S|ofX%5Cd0<|xgQ7k*)=+!GvM>w4uaqLoM4F8nyJHq z2?&aS;-pL7pZ1HX(3d{;v|PAk0bPyQt7Zm|%LC_?2Wf}J$jPZ0pjTyu+({eZ@CUkt zA!0GS8VrU!t&$lJxVLa*?cHI5|P^ zsa2&fuhOsVw&#Oj>cPyZu!MGHYM!zkvtr#?5so2u^KQ}0&IifmT04c0uvowXl;~1i zXLJP9VBAqd@~gT}^ZW<`_}~toJMb1;m=pyD8uvdO)#vMLX%iO|x^*{`CG0ONQMRp1 zM?$D*)Lt{QxMMFV>Bn4$mMFfEw51gW+a4iIQ;fjA?;}t4OAxS0{zx{)zD9t2Gr^}1P^aVCSvY~(? z+Q<3T_V9%UMhf_lc0?ERY@akVv_DYov+f1$YTZlD_3r&6J*y2rwM3_rW)oD3oExKR zjO1XPr)PU$OwUnb=IbzH5pYCX6{4{RM?mzOB25FIG%{B(y zK3k~NUYAb`w%%Faqf=7v+qw(sxs##1bm4Ete9naT0lK9y9^`lNbdzz-@@vTvK23^Q z+ih9KgCRJnQxUIQQ?DJN_CDoy!ntOe4id_^Cy@ynE&3LM^Ht2V2WRW(>uBxWWVm#+ z57K`JPSv&I6p&tQ6(U5E{ZE@#gKm@+MtN$>H}(sendSY$Hv91Mdrz`mMc!5Zit%49 zP#$sMXw_TyAY}T*=U#6aJe0{ZHv&MFJEjZSHHtdVnEz0wcy(<;ITv7m`h)L8ygzb= zrcouiJf?3$5}B-sE1weho{)`WJSCUX%6WN-+Gw>W><)z-NhuPIn;fGo>HjIfzOBge zTiCWIE}P4a&G3E>mnH*ZyOtp*qb?V29d!>e)8aq0aZhK{bEC4pGR5P?kiV@&U5)o9 z^sJf|e5O2UP(1OTCI5JVuYq(zr{GQJbi&j8rYQ}HJ$ZktiIU6FYRWWvhwH)BdL+FC zJk}j;l;=#F(r9EzGxry3{nF|4ec#9_kzT`N7lQUOlyicdjH2O6qnvf};Ifv>JjN~Y zitpPH>DOloA6$c%0sN8J1F;+VCRM%5)R9Sx!y#;2xNva(gF8fSkjEF_1XS8u_(D8= z%7bSnb}Vtj(s?o7wp77jQ<8sM-%tX8aJLcR&FfKVe0N{G2uOvKnlCUErJ|3N%5wib zbj8paE#W4+-C`naaS}?mahzH#$6D&w_cHo&RXTlQh*GeDgWuA^B>syEKsF9-_gEO6 zW#mSGAvDaELQDevz-rjD`8(Z$#pj!Z)j19yi@^&jJsSE@`J+U(g$Q|B> zL`LSK3k2FE;0}H+-S7Rre%_2xSXiFpmxY!mxwb~-!EhYdCG|u4kwCFQ+b;`e7Cy=B zFif6(9mE$3#P-p zH!?lm5_z6!qwbf`rI~13MfubhpFg%t%OmDWni@&xZ#p72&51i@i;?vLE(XN=07<i%}A(D+jyAr!%o%MBlOhdi)LJ;W~hP*}mn;P0>qk_kGEl8n=KQ z_YqP2k&AJ$#KoH}$Vs0l=#e@_=6*|-vpJJE`C{cEcgRFo@2bfK4kxh_1I+)W9 zK4!Tedv4{A`1s1gt-juV7pM}zPI?QUXa`+K7k}k?a~2qf1*+8Z5mf(v8+X0XNJ4;r zHGqfh`DXrzQv*vY#3#%xxW!-&_Z=I?lln~xf(|@hC=3N2l1}GPfTMz=Kr^7Yx2U#Z zZ)s+-t!4v9^^8F(ID@@M1X$Xk>LM!h8B~KBzN`Pn zE=cY6ZkHgw_L|6P8ucdba)K$^K+I#++q}jD(*3aFr(4? zQ_7JjSKV;7U#|&Ct$ZQ*!Ku;e%|OM}$|i}%$5Dui-gb{Gmoo&l+BlC>)0yixvzaO- zEj#(o-SW~c+m1%~qv@0C{UZ)L_$^NGzt$i-rPP51*4N0EfW<;(8a$Ca2$ejAb`3%? zY(9U}k>{-gmvOn;NsIrFxOWb&v|HD`(;eHkZQHhOTOD<5+eyc^ZQFJ_=p-H6$(jAW zYwf-ExAwQsIe(q1R6TQ!Ip!GS9(bzq%gvF##;3aC8?q5 z$Tg_s(-U_xyD>;T>r2Hv@#U&K7z^xuA|_5Y;CJ@NpSN9t#HTC{74ATqQn)vG`l5IC zGR@KFti5Wcq6S`r`R=DY<+3XAOsVq>?BHKYw;{92nvM#k8unUb>-n#G? zQfu?EUq4(#6g#oovpA}h??H^jw?nZMMMk+ccw0G=1BoSHJ#DfYGJBeSu=a*M5WCg;HmipSIh>%D*~F2yHA|B7Y;YNdJ{4jY_#8Mj z_33^Ya89B-Gn2v`ZyXn0wS5?}c1G-A%k`~qQ&qOnbrx6ihp84{xhV0s?BrF9>m35y zqq5Ysb8sNF!u`S-usm2j(NmNgJA2x!Xcn<0wY>XM7j~`F+NAG1?SojtYC}eA%6pae`-%Q?}$e+=3gy*kCrB6kCJA(a$otaEh3|N~~ zen_V!3e)KDGY_B$%a6ZNVbG`>btl^;RpxnhF2Jjpr6d)8rtDXC-=jBer6lYe>lb5T-(h}&97@rQ`|3he>jp+s}T9D4W2N~ z<1ubDjm%JF*yGF~%XC-*9GANl~!#25@WG=Sw8Dy@OnRPu$D1F?nafW^)Q!k;Wm>^@o$VrL<#*#9R zGV`%HW@gNztgAN8EVdz;E&11Y*KiV+E*KP5CYn4xC zlFnR1fthR6^ZyKUxzPNG?8?WHFH3R@2Z4S_S5l z2a4Tq927H2n+C@zqxGsO@mu-&Y9_yvM%k9^a`x78m^riP(9QC41MSd1T6mnxBhH*M zDQ8q_5^pBG31?6;iL_CJuVn;5oAb}VJ>kN=ire!f^Eo=TVa)VvW;6cjupiLjyM3PS zD07Qdan7=PoH?DQBK#TRir0Loj4zsi5yLmk20sJMWZG9O#p}$ zW5|EwRE0;6*+sn52fYzB$~{n^tU`2+e7m8JbY z8Z5YS%1$sXnV~_qs!uuP41d?jsipFZH)@c3E5BkMhd)b32{OA1Ptl zs&ny;9lC@^fB-7TPVeXVbrevX=WIQOnTH9+nUeu~B5JP}TVdGa2r-~njAV^D&+ zcAY(sYl6Q!1-9|Z#s0o>r`c_`!aGP8c68rFOx<|?>%Ma6uBLTR>}B-Q%O*^d0O}G~ z4CueJ5C5jT?`wEFab6hwTX_vo#A*&kp5%R-7hdR!^_L|r3Dnh}NnP1t8|N>_(IxZb za$jW9l2c2Q0+bmv6#O(zzuu2o83Tq=TggVfPrh&QA^HtOXwHv6pK!(tAsSs^ z6n&Q9i~puUcPF;+-}#xuh;yVvz%5mWztm>k1WM1-!5z*!SX4;3k3L?Z}5<2MaJGxVV=;=^E} z&QuX)2SBHhAyZI6-v15{2HC9Pw}QG2(*ih}#zvOw=tpqc7}*^ip&nXvQc|8LX2?wh z#vpNUkpg&dTVH>0pU{*thKqoPoG3JOAM%x$FzQc*tA(6ZeFrKkD$2gfqAw>G4ot$M zI6j)md1-*~{45ppba84*`%US=7Ocl}dGwSZVHFavY1EJ?DWQ^3xCwt{DC=ki&`H;} z))q6A|9#BEML=Jn`9S=973}@LZY;b&@fvrqKcasjNA^g1%l>$e(|I9nZZ)KP#`@-E zGTFjke6CADwy5cm`auc|R1KEkZgQ38FV2fsB9WcAbxZ)X1C^`-b-`gSsRrZ z9f}_dUi|O9Xk+jeb^T@?aXOnx99C6 zy+I)0G{Ei#tB^t7Q8kX}H8<0G_{QcqbWx!-+pX9f=v5nsNo`Rk}=H%jel?*B66W@&1nf$Dx5nc=PvZA4-C>}A6 zI}CgfXourql|Cq-0<-VTX1CvLl$KVL*LvDs>Nxo!8SX6bBKT0pbWYw@X}qj_nZQG6?rtR7K6u85zWQU7LC8=^Dt zd_}};5BNP#if>G440ufrUmm#B#)*9#*tfNnk6Yv(-n^V$e9yP%k+!>4Tx0mC>sVf? zgyzrKdx~wdVKU`o&=}f4KRQGLEtu@%fw}d*2Rc{~0 z>bM-<$8QM-##4{E#OrdjeB_-A|KKTv&BEIYb@0ntu|M5%e1F)Mtx&tS(`hPp8z`5# z+$~S;I#ttM?{Hm;*zQg-?V8a3?wPtdx76_z^W4SjHhFs9UC`h*hYRglftGN@?Ymv( zcH^wxbk|&Cbz!T$wAfJl7^GyD%PnXS4=30YATwp9JO;PNr7LzVE zlIwO@-n}1$qv5!4-XiR5@u6WMxw8tKhk850RU20vj9m+qw~uF`7cbGPKopOG^)l*P z)^IAN<~LaFC0s4nQJ)y3iY(li@M;gg+y5Cyu8zIlWDQ|2VBcpaEdG@Z1a|sUzf015 z>c7d;{x@#)pXBQQ#1s6DEBKqpplSp_D!Twm{=YN^W&n}kKR67G9Gw3oFaWaf|CPPK z#>xCYQWx0R31|V|CSYa(B=U2zG5uG%!aup~|48O%`9q!l-_sRX{=}#BuZiaWjN(61 z(f=Qi6<8Vm3=6mHg7wb}HUJF)08wE12TXy5fR&8} zQ1sVFx__t<+H8N}5ZC~~d3J!?0V@E8zzRr-XJcm~U}sBjp0E~l;gFu@Vz+7MjECmao!k;TED_~hT z*Z`ey{M8W?0M7uZ{)ZvY&P>3;2I!g{FhWj18K5=*76GWs0tkVH0npB$PXJeTc6PvE z7ztQ7*$G(K0dcYb#-z>0@~0(0DF4oDVEGsKi2o^DpP7Z_Uvu?!6DI5e84yGty@FFu zi28rUhX%z#NRps=mp0-HoDqsr4Ktba?W|-&hO3YWnDeYSkL=f0#w1^mq4}%|E;H0M zFO2tdY*vD}`dgO(BQh?Hoya{Udm9JLhM#);$gTOt4Wc=$@pPg#GB$0aTKe-Vz2K7_ z>Z+Xn+V74^+!c0XpFD70M!W+~<=OTuJ?z`%yI!HBD(b`K4of}mDdv4^wq7C=LA!%o z1D0rzjbmyMOgH)I`UcM%pvIS$ZsMh)Wd7)(vwl-&JX>e^y)YDX3B`aUhnQX=e*(l3(vivbKw+1{Ey?WLn8~WQQB8YZw{NO%CdwM5=Ee<5x5>jlNJqyxnpTI z@pNQ@PWc3?VUpQm7%~Y(oSz#CBV*x865X5z45S`X-ZPU`QLsPf9@QASR(%*mi!yy;h!h({}Au+*9re) zKk}b=hrf2jA5)Ki-UR-I{{A0$2LNsaz=iprHVh*JBNNlVZkcm$NH6RWm&Z&^9B7)_ z$X60SP(dUTK?D*4#X`D(lG02R(fA~g^dt$X2p0t;Qt2eq=M-6dN1F+^Gn|-Mj%Gsq z@U!)6QfkZFvGB}6-aQV>%wkJy$}((nS-!{(cIY^?u|i9qX5aJ2boh0CGjp&8=F89R zO!hd5FJFM51HcSi%!xQzK7MTg4F)xNpJu2(yxn;oeV|>s0kv+g*EjfL$jn0RS`I%% z(1MGZ9NEkIMn4V!Ei$rnx*YkVXUczhss@`CZGO1K2E)bxIuKt~Zoc4PxzjkN|Afu8 z0QLDbZVSu}Ukrcm3u*Av4G7701MC(24tU2Kc>{N~#|&Fdqua;_-yjtHGP3y`hjaD0 z7B8pAm@wvZF=k8qC6(2sarcS*OKUXuD?Hrk%FWD|vv<;mRJZ#}935=#N4Q=-=xO`+ zs|#=9aTf;!gHO0+zD_rXr((}&!p^ij@8~>4nXs>Eh_X}}f+8q_LP@>(o$zS2L|Uqi{j39)9j^BMnj{QTF&NQK4i=@N3;BMylZ!VWW{HZO z`=t&s10hqzCd6zI%|g*9Tx~0&6(ohASrB_qNu&7fYf7Kf;9>1oN6<K5(Z7v_|Ze!e@$g=4b3ndd^8A+D8c zQLl{#eFJc7aUIEZqFSL{Dfol8sNe?V26=0t9cv<94KN%*9w|`TN>Z#`$L0Bi(v0{31csJN7ku%!>|is9F!k`4QnCzfZziLU?8B_ z3Ae#=#5#3{_8p-2a2+ac;5H#!2)Bcugj=!g#5=)bh_|8L2)4o92z}5l#5(aW1igSR zMBi}sHm*Ec;jf{uG!MbAL;-9EK>*u9`igTfboX|Ar+@IZ!4d$_!F*S8&>Zm-svAmku%-`kFcAQC zaHisepP{ht%jr``)c30)>@M9~LF|F2?~@!%{pm5NuHuENC*TFEr_v2xvU?g#l7xxfG zEWbzn170jYhia!^;*Ne?-++Xxk@f4L^PzNN zlF?2`YVpru6=Ot)6|-_!h};qtH#C)m6G`T|iIqy(Ax$RHHz?oYUB)3b#FwcxkIB#} z<%QtaDtW$inNaV2zo9&ITorJo()W)xiM_!v8U1oNQ5zmb727X*z;uXsOsq}?FU;Sj z<^jQ$$apAS8@yS`0|9)Xb{NSZaUp<1^hl8tT6N$vXnO!X4qThX6ZJ%Sljg*)Ba^Mb z2hBaIJnmha$P?Kb$y2il+%YCSzQrJ;r+N{cFghIq8eOeM=MVU` zYtM1L3dfK87|fJ^Qxb3lMcJu|9oV zZw*X8`UQGw?On!~!g|bZp&YfBpN=oAMey0VGt}sPiFc%?$R;P&Qebkk3*%z$5kAn@ zmM^xZz&ye|6?gp&ceH~w^Y|3JSFA6_Mc8ulJ?hJS&UYnJ=sfbDs+!QgVl#x@0z0b9 zy^(XXFQ*H;sWq-)t4t) z8*Rk}-uLCn)G74Z>&=BtMQvqugt|TMbN!&Vr&dQxld>wq)KbzBkwn3Su>)4|lL2$R zr!HEs;*cthB3iEpHj?^k%1D;hkqxgB{Azdl3UjH+b>%KrIhC6wu8AcNGR8A`mb?pX z*(YP!gGBT}!Pii2q(tU3EaC@=Cf?%kDfU(|cjIdfRvtxK%Sol|W}T3s*T_zh=GqNE zNWGn;o9}y@>r%SSa4v%kY$8}-vG&u#u|a8|G{#fJLgeG-heT*+=Tn}^DXz>OR%z5X z=lSDoFOMxPA3_JZtZ-S%j7?o+HM_V{Ivi~j zETXJ2vAI*4hU-n^f7z@Z%k#7z^x23Owvl2-?ix(2$ng1@G!3PM@jT$|9uS-R@--Fn z>laWrcY;@rrf`&z+2l|FPs5srokEAM>DY0khfKLAc6AnzyU`DreJaPv4SsKEjBV=V zncF)vqD_@=l=11LM>11sx;y;DS^YJp*R2_&p8K%GKlB8?aY&;+-{LXB_OQ**fo5qp zePU}X&$bm6{LR;=ik7?_X|<;Z9=$HBEU$n(GYrNYH-1N!rA@zBD zpFrzJahv<_<_le=-P;l~2K2_1Mq?@O82IRFIi)^OD{NJdBIeCb-i-8*3j8Y*tNl=I zsD$&a2-q|dsoy6sY;`Ce5%^`k4U`;s*3Kt6UWHKGSsBaXyjmz{@^4~KkNGl^`ufPN z@6q`7X`of6{ZPK(^mVXm+qMxhb(%1^1x5bBRLaKR_h!-Ko1Jt*^l9)0GIMN`X|WeE z=Uf-F$6$qOJV$Jvr+X0&BlexxLipqXubHjbI(g?XEB+Ao)KjJTR;}K3T(`Q*wVqag ze4dP@cR9^BK>6M${5!wL23wWKiAV#_uy~4FOkF(j^A|xp?F>+sH5M-ODqFd2Uv0)t zQLR_vdQm&vQ~olYZjUn&E?&0H`4(F~Z1VbV1~l_)4YM_J_OdgGpA?=yU}sh*R@jEA z8J<|O!{Sc42EW7Y^5YVMXFSCVAeB;J+x;{f zP^2^dx*nXgKRI0STHz}COd7D=1Uu)XA$0(=N>s9Pfsd2#S9rcl0~t0Fst;`B5xf;cVf8RTZS0 z4(F!;$FVNhE9i%$R6>fXm9IM$&lU63h9S-=*`X!fBrqRz69jC(H%a#3B~O$%wwv78 z=_G^PfG|j$qKvRnfX0iytfG!;UEs(hFYU5#op18-bVA{=ch(RpCJxU#vC2r~1uU=U z3egYHQ*e;#6C4AH$4dw_hAk4Jg||fFgn<-PhK07Gy3QG*A8MZs#+=@?>&k_0BQhh8 z;V>!paGG_mOiG&N&mlK#=jr!l;&wi7zzqrF@@TW**WdElXNK&v!1WXJnvLIn$J=-3 zO^GII;n*f;q$L$*p`ABrI7-Cg3B=yJ z5!VbYlGAouU8>C3L~rvDf*@Er;J{=*(N4(*+{G6u~W-aTarB zl?!nJOcfmGk|fr7pB?YJwcCkwcG|)7E>M0=sLc6c1Qa%L95HKWPUmtYoB|#9ULhL3 znr0RyH7VlGWMkjwZ3|8paAi zYkpG&pe3*;L14kHOBE(W{+bHCY8Ih7aUxZQ+?W!p(45^I!i;W?&?swFrioTvjS{<{ zi#BM+I%)X%!3+LtlC!pifAeP5d8P)F$F0=Mf&v-NJS1csJ_}pt_RTrANkESLPEaQu z3p1|ba?wu^+I2X^ zQWCrnV>{>nnw_Mw))hRF65W>E)cRUZpb+K)z%$rqi?r!{jg6w~lQQ zXVFU1pZ8>1MyOMe^i9)S?%z%lCfJr1^}ZDbcO}A>u|k`8^kt}&JNx74&8DC6Hs{ql z4b*LK8)H*bv*Q_~MK7GG)2>JAp*yiT+k|Wy_8gFpx-?wp&MX%%e3{8iWgMPis$S!n z>FK28S56qjD2hZh2Z3FSc0E^-?My&=-VViUt9j{O+-_U0Eo(Q9X4aC{-}E?%-{LQb z#eBA=cs3jA7YN_*`+-_e98g+jrI9Mv=E@z*#eaVAgV5W*xh-g_ltgvbMoxw7RLG<{ zJLqoP12VzSG}#m^6+J6D^ILONQ#IW{bKHTpIV0VVp$%nBlWL76Q_04J3Cr2!NCYl4 zf=xj<_1;EoQGhvx!=$-P4V6tbC5_c)W3CGY4m^$Ivf4&%cd>W%W&0_0>QZtzY94GV zglkR_!v%9NlB}vKwe?rQ4Z|_qgmb=4kzV$Ih5$#`kRBHofR6`yAg_mU1+gh?=%s( zpan#{ZDm$aopCt_uw*666n^`ojHr)Zm%DRK56R;C4@gFLx0c7Dph@YVP8Up^AX1ID z?;)knYLSIknkkttDg^&lD&zfRTF{#6Y(tJ;G!^e~))Kw($8Fzy)yDKVnUIe z-uo&|G`q^YLV9^F;X;=biQY2u)v>O=+9Z9)E=H}mS+PCTsxf~A?K;sspy_;R-#4#i zV;rl3YJpU(N{prqB?_DstP5>rz5I<^)`2Hm$V4N(x)V(}PawAekN4ieQ1$0wunH9n zs?v7BsY7f?Q{#rVz$RYS^z3;()HCR>{HvPuDKna$>D)P?5R*|HHs=bggrmbPYOAbN z_>qHY`L_Lhg=3Azr|P}sJh0DzcFvgn?F@zU_Gdw&O(UkLPwc~Gwng|R(WcJa0{)w* zPdNtB4KPiZ23+ z+mX>rtMn-EjG^|`pe;_ky`d`LlbdCS(R3JAHX5y;`e)8BYNYGUtifU3b`BoFBzpas z%Ph2-rYK^d(l%=Zzgc3qTn=5@xpZB+1mF;m=3Pc@>~4;Ot%BuNemY1jpG0p7^3OSL z6-!ptM^34zmRr%uR6K0nRoYaiVaU`ad(_bD9Z;YQw!SJC4ltJ3`S%!>HfiXs>SC8a z;E@YWXvH9n8DR0}BD>p;CG@@AEjJ@2I!puquG}f|S+x8jrrh}A(oKlJWSDK;z>h=V zKMf-PG+?TP=|LiuPqt`VCj0wA1X-v{094TW5#s(BcuQu=ocW&8?An}$Q^k`A=#}Okbf6BHiZoQ-)-<6*QW)Z6vbHu-%xa zPEkDO3+k#3?a1n$VH_saWr=>mtg&2beXiOWJr#onG?a}wIjuPjJaMugwFJ1o7)|$C z5<)CC(-0!etV6vQO~K*L1}_nd_A>NhTG#b+M7|dTY74vj?ow*&M#{2r-M+Bn(QfUOYkplA zG${&6uH1z6rK)PAD2RG1*$Izcj*E!sz39lhiZJ1#4D*wE&rZ8^C8_~`&CesP?wuKT zBuX~m$=UtvJLh?Sx`sHbPH23L776cMri;6dk$jDLN#6CrGl}%BQkwgu@)E0?9PIiL zd<;JN5gO{0DLU#Ul{Crtm6CeJTgISclNm%2DdePAsGZ83&d&^C*Kn2^K{`KIq~Pk3dpo6Jq#+KuPMgII zLex$b0q6+s!eeR0aq)ZHkhyuJf|=6&)_#Q+L6j=EeD$XAVn0bjY3y{<&Mr#lhx4e6 zEF+fbGQP31^&yBlL0|oJ;2} z$AeQ34o86tro235!ArUPhV0fN@^woqxuzjKoFj9hwfHdLy9-#Gw?A2A2ECSFu|AS* zTWK@g&Sgfb)Y5XXQkpgWc6(#vx0B_e$k25u>5UMymP);?`T4oLi+X7bq3EwnG_vY= z2-T<*-!fJYitQS>$T!R!@g2|+O2Rq#loPtv`b6~@D z*is9$?4O;TOk3%ms{B!!C)Pxp%*x(2u853OFuY&HohcI>98AVkjM}*QM0ZnteAt-g zzN?(y8rtKhlRN->;@T3vTDg4XnhoMkbZtT)VI%leupivJldbg7(_1i*3-xny?f?Rh z?^ev^-N20t~WhToWr$%`H3|8p_hvZ9=*y-jHcBc#Z5Ar^mi-74z>+PEXrQWuU@^H zI6ehb4EZ=E72j3Nn;;+ZL+)7%-QR4qu@d9Bug1+=UyW_m@GXw z92^W1`W_O_$QmtJ{c!D?04rE%-e@nTjTq#DC#;MO$Zx&4wLtU0sK@)a6}HU98nez6 z%blfCPnxkpDGQcle$Ug=kJqyE@Ym=M0Ra|pV4r>7@bj`SM(zCVgbT_li-~IpUA}MX zz-_9|Tskh4KVUe+1zW?%%v&MD246EYFcJNMV;oc%^SUEp%yMjv{vAN+mf9t9i;W5L$Hd@qh9ErGz zKfTmbU2O6Z_81!8p3cvo-i}5+#9nqot!jULiN8UelxxJ`?kZ)(^ojSm6K6wepsmGi zc1)l(DTrPBn0x@<=vilhUmYdH)-)lmgZw9Y=_?=qHMeZQ zu1UFTh$+R*%=Lo4A+34CHQi#H0#Kbs&@AT^L$}$x*c&evwH0ctI)-OJ0GeLrf z1@KhgXBcBm`-h!SOD!6yQ!wQZ>~E>Yg67NEyFI!acr^9#Gz}ixB5{fsDOpj(pb%2O>D|q3^ARI=|%!YZn&flKL=`DM^xO zA;4;VdjmE(I9z979Sk6y*YQN47adeCdQqjXRH9b87Zw9$V+;y2o#v%dO6kpC;Y< zM21wja~^%RZ{F#?e55K1pCo3V_CrQvtIsB9C3XB>aA_%Qdu;~UTjt?%+0dh>=p+d^ z^f#~f?a=U$m!Bh`Yeo4omFd4njh}mhDFlk^0~AwV(It`lr=Ie3&w2y1XWo~Hz}R?e zMx@@8=(wt0z&BXIvgE+EXtyy1OWsRAI43J}kM9kTim!{(^NdV}fjR|k2c;P>;yQ4A z@nH%VPMf~-Hd{x1$3a`0KZVU*@$Q6v3JUK7GHdX`(q~rru|HADwr9$Q6;JI$rQex- z)WkFM#B{wHG9si$&k&fF94i+`KQ?(}krtQkm1hoVfU+poIT--i#w_zQlKl!SaN0oO znQ6CnvIC}{h5kn}Jf#@1M&XIqlmlckeP1El9%=d{^AnR!Z>j|Yk$&fRs$oh^tWq3( zg-P0YswRuCp*Fl6o@wN)_kcStW848in*3{YR`AvofusnS5u2tWnD_B~zG?IM$zF>`!q zdr2CkXeb^^*XP!x7vGpNWyo}n72cQ%F$-KWP2JopLf;%VLiwY@3F_Lhx_`{4& z=>!G@BNmno^XC_fAv55bjW_a}!)9(83_@Dvb_p{{q{4Ks^b&YBYJ8zH*DKGVGOrW! zLWpBo*V?)rmC~C-7Y;_YUr(85Mu@a%i9`KQHyX3Hj@%6ra&dzvfm7q52nQ8@*DgQf zt;zJ!lIh8*%e^>tn=!pK0kl+;saw+_5#b+)rv>N-)Vrx4*j}7{d}FCQht0-8Kl)RL z$kr;!DpU_AA`F*FGAg6!{|*WV4npoIGABMjTeVxKa`b_%XJg>0Uj8J&YfU5*b_3Q2 z`^GdyBy%X*yeZc0OAdo$hajAWlN~c5^Rtk=Q()qI5+660aPPjT{>1Z!33|tn9s0TJ z!NhS(!A1sc!q#ul3ey*Zh8seVXDIN>g{O@8fQ^#t!~3a&2}74!{53;;Sn#vsW@Il- z{%ugNevs#gAREBiO~Q2TKGYHIQy)+}7$2f^pUGt|5OQTv>C2TMi)?nC`P6O{|22zo zHG4vycG?*T15w1tO#8sGIjESaKLdbXGA5i2(L*OLoHTXM&TQ$vwdth!t?ES4zuxtk z9STbbeo1}FWF3T*L1Rqg)Thv~(+<=Qgwd-^umtoO+YtdDVGMVxX}o$@vL9liJ} z1XG-h{k4R%8;F{zn@AATxWE%ipDuP_zxg{)R1Hz=NZ?7q)IN;=!u4MpbyVGB@pzqkS1Hc$YFcD0^48^i zn57t047WPt=uqWojPiAY5+*MlN0Ia__8-Ce!2%L=E@mswg+ML}R44xBS3X0eZ~@t5 ze)L~tgFM8bBN7@=@k(kYUaHAML>iR(tE3nYp{6Y~#vM&kaG{LvkK=h5Anyy{naS{k za}<;Epo=|>=_rn3Qs`h|f|60Fn%d?0NZwTpPKM~5NMR`7p`qv4&&z~ZfbIQj7;wNj z8N6#XpAnSw;AEkpodLTi1yfrNQh;@^Tr3w>@z>k;%_Rt_vs)3186jAJDJ*?}FI2!A4vlzBlQC zDS|6Knv%I{Zm-iSrUplAJT zVH-iBevtN5Ls&STjpBd*sGJ=C>ks97#QQH-g-6yKj=VJP?J&h;Be?`WJ)o+}S6YiD zUb!H0vd8u!6X|Xl0db~hCQ#UusZ>sg_~++(Fpz}N)FuO>crVS+d%TCtI@UAnDea%@ zUg^7#jx74cy#w1`>48HGpdw>vS$wgX%| zKn**~vGkbQuXXsI>#nQ$eA?6eH3{#rUo_0_0|7*qc;3ipZok7W4Lrl1BA?+-t)*+R zVgNX0y#`CX>i2r5@5<uX;t$;pH`|^09^v5`)$yB%b8RrUb8MWr$4e}X zP3l-1>>n5vE|1mmI=3l;ZSD0?WWIV*Z6WXYh0KQ@3@+=93uY}D(|&=R0O^i?g3g!R z5vk$$4S~C=iiU-mB6MOHS>mEzz~9)_L(}NuK)|x9g0?=-kFdTa|5Df9Vob2O#ftE| z|F;~?nyyvGE^AIEFtWVL*jHR}L0{HW(lr2KdAMkrOlhB`N;nK*t7<8UxA!@7Wjt zN@qY_hQDgEaIgY8{kt|RD_}f;766?9eCGgd{zGWY&cN~CNR0o*knn#}j50F;eDMeX zPI{(>wovXrbd~;+7d)dGvvc(q0BPdBl4CcWnKLCey6{bYgMLF+YT6;G&!+6*CrnK&Iwvt8fMd}0rB=}TJ|ebB|A_@*fTzakZf<#HU!o!4Ty{< z%pWXVPEXU_{Uj(s22k&}q-v#dP6phzJT`Tso`Vq^3!+p|lNp|*YPvj5#d9SaZM9Aw zleO8loz=Z)!7Q*CM_7y!7&7(z&hIfL#@@;;)}B-mXK!|V{HqrTe7*y$%+#4v>Zx** z#FM%R#)-!{^Redm2z($)J$_Js&_~aO7xYp4g$S8mHulBlzM7aQc?5 zTL{eQyHGRu!BvH&|9;B@Nw{-(0j^t$PJlq$o-ENR9x7PQH&bK~ztHiiHKbMT8tP+2D5(d8iIH4LU~K!pogXSbf6RfMsc<|-&1y~ zXK=E=4*lp@Z+i}9lt~sx$j53X9o3&TYx8x}!|$NQfu<6s(&G8s)rm1jcfk9QUukfq>_DT{Eja&Q~DC!Mw zu@ljLtHcbL0cK*ZDkGNM2m@8f{%(qrhMM{pB@F1tjaguz-$!X`{Bh30zJfh6>TRW@ z2(h$*$wL`Iw2I&1DxtEK2yoP>lvM1?wgX-j=V5$`y2>0D6mRqny2>SVVcErYXS4FS z?VHYXDAy$(kvhMQ>{4{b%%)ISa`OPm4?JhC&h%kl@tg%PJ3zP&9N4RHhkakBp7pVK z`?WUKF#E-Nm-5G>;Nl~&hEPBdDF3$sF^t|eULAZlLKgJuIG2=`c^@@Im+T(;C4B8$j6@~7Ah$7x+%v=uoM7Rn49XHaesUlzT zqKa-n%TmtnWE(g5t})j7D1_}0jc=gW8RY|Pxtt%&XDor(F<$QLqm8}ugy^e zQNl7T86^anG)pNW*sVbc1#Ds%js9~hIbS}GUwPL9YSNS{kOOD+oFY#{vX| zme(66^NDMtBB1~%(W1)gIMxWMysQj3?%?jt+df@jF^%6dbL^2*{vDl6*aB+=r%+%m zW5qZg`5Kh+I*)az>f1y|5y^C%p;lGZxS1s{r=1aS+s7-{kMs_kK{zO~<8rIjNG{?7O#vXm`-W?8ejP?!g`>I`u-6|(RpAya} zFYETGhF?*$PaF;>U;4H3__Ja}o4?X`F-qe-A4Fqq-6Pm>o#8XHxnR5<%s9^!BiAii zU}CJpCwf~~#x%gAB2F);8b7ruJ3Dj}RWdHfB0H4c&O9Q)0;aG}rg?9(0Z1lU$bJ^Y zB?Vr(xx?6xD!YdKuU~L=laVEZzSq#G5)pvrBRb!sawrh(j`%gHQ}rd`8kPJYNr@Fr z%{a8GxuqgfWaKOp8gBWnBIVke)k-2r zV961)T6-}}Pg?|*EVpuM7D{h;_$6*G45BaEPeU)Ds&Z`Bh&6uzl}2{+2B}ZlhG9I~ zY!n$(UD`A$HpX75JpV*Rk+ob_Hng-Pf86YGjhK`^Rj?i*3xl+Au}rmqgr_(zcj&FM zR7qhmRW0K#K-~t>+bEMj8joHV+a-4Iu#_1kN8DJ|ci|Y!JTJ31=3wrNOYzxs-PW;= zM+y@jw%V3ZHm?*~fL2{QokVh^Vz6JzOp1STEz6RL^7PmCJW(D`P+~hvQ(^E|l5o3U z%_l11937k#%O27wc0BSIEmZ~1qynsE)$}tHLj_fx@+2G9FC_I{c6n~IVJ$i5_uD=p z45%MY`a2+n9^jx}mJ}KxMwAI~AY8c_R*t!Zk1d5MJg03+QB)lLsX0RQ5M0MP84D!7bbs8$PPEQ@eay=LA+(!p7;hL z_gfOD?mkbYDgcjw*PCk$?dP!|9Hr6Ehme{QJB?%Bvj0`wSBAy4E!#qZ1W$0+;7&s~ z?(QBexVyVsaCdh|aEIXT8r&^dkl+yPHT!(`oSp3Z?z{iqf*;-0HP>70`+Ia>qkb1WFwU71LUF1*jeg}>f;Cm_+ zcFdSk-MzXUTy;9~_Sw*QxQd7k_`+xYgv77zRKQdPxmp!_hd*EG=O|GLgM?6~T1;vV zF(5J^qVy^iIJU#efq;-f(GpspeuSrHY!ITo#788ds~Q+*d#$ornt@{Tfv!Np-G81N zh8-i_-#9U8Er%qPeTb%^>G_vjoO1Fr#pIobyge6)s6XI!TH%3PaKa3fm1+`k0q%l- zci<7Oj-Ws9Sj==RO9D#MuRu8J0DyrRm@p@d&KXGp#fPG_tXN1ks= zkt)D?7Qr#pJtkHEVccB1KsEWw>eq?F`O<7l%ZJ9kj3G)39Up_~!H#>dM#0CnweLSB z9dW_+L2F(Q5b9-H);?9GYZjzv-ji6vH!~%t?qzcW%+NCR^<$1>T|X(c;N3_3OS2dv zrBtH>Ze0VGh-JlD2Le=o-s;zj0%x~hCozOqNSL)d8yS*2LPiXQs8Vv(zRgUa+l|+c zGql5$2`vl#sCe7E1e%CDw#cS4Oi7*@;J6z6bYt!1I^Q7HQ0`XU_O3BJG1Y!xT5Kp@ zhnyGGH<>Av^n5sQ>UDlW)E4P%-L=rf43vn0M<~#GPzI~hDx#vX*_F|c!4qcB;u^4~ z@$lv|2VdO=&-9oViOI|yVw*P@oNbA-qUxqy1+xoxzpXxR*xAQL%@Bd30CZ6;;3z)b zR?G=~ULR{a-r*a_?eKiIT5oN=N|&IJAg&HX@j}O~iF1*|f3I>m z0t{IXp56aI%U-CAKw=&Y*6xX9cJpKwSFj_@7BM0=9+fDLBbx#C<-QA-&KuIUWX$63 z3q@wz%hx+I#IH_I9ZnYXAv^rQSLSZ4_{&Uec{OMU-s8cY$DYjrLg;%5M}kuqi+AD&EhdOS=lCNZk4bV+ugReD`TzwZYDQ&6`TCw>z;|eyC3ueaNVskp# z!tGe@i4O-?^Bx`^i*N9O0Xdq7B(3#OP&B~LIt%Ar81RQb@J|t zeA}Tj0Sl(ZPj-rOLgSGDLW7K^{r6^~OH$9QF4|luSQZJ8N|Sjs)l_+--Oj4-$N9jI zI_q}`h?&-b~J$Ask3|ZE3VaAbYN=nNA5I~wkC+OESF|>1; zl;Pez*_RNH7*$)VeJ7NF)HU{WSS$C;a(R-lStXzQRe;XpQ9X#cW}d0W_%a5ELQ>+)yk69x;r#$51xtOq zutAxCjEmucjGl0QzkYJ+_W}ij43VLX=GwcndF`4)?(A|Ej5`phf!+Y+z4pC8h=F$M zy|YqPZEf3vu)_gP#1K>kE{k3}t3>`Tnv&9G%&Smy2HNy_O|=nrZY?D)rBpQ_+pNB! z0XJ`?D2FA%@LYin%J+@5YnOqf^OGj}Om=8){aT6*KRga5*2_+Qo3rAFL12sx3|)^G+%}vR9O(!ic!4?I?W){Pzl>sf`>s53jv! zMuH2za6~65tKS~o-At-vAU*p%mVP081d7yrcI2d>9@3Qn9x&Hn(odfqi>W1Hmn;_f zI2Mp&a-FGlSy|;NM6}+7$(TgT=m_n^6q8h44ehnx^rE>&#m-DpwvnwO>_)A}b{OzE z1dj8D@a{Ap>;pd~NTY?Tm48)EAF}L^G;Qcjt#^e;z+6Rb9+bd!gBH<|7~L1${81aM(!lSyaleKRSF{w^p|=T-~- zXe@fN3dT?Vnb2^#5__S}vBspS_CVHI7Y0X@BjD9xWKf2|j^D@u?P6f1c8fh`f{x7W zL?nJMce^Xkw#^S^pNNMjcOmuBj|DEDecE%fRG#tNpE?jK^7mlaL!1zf^S1@cJlc!m z)$l?dfj1#}_;vcWpf2xueVbB(q2~`*uu+e5f2ByX2qs`^f zeK!{>gIEm7ELl+V1!5AjA~bWxwBvt=F5!2@kaSvMHQ)tvQ=c_7-wD<$(0)Nb&?r7P<0}qLjR7nid~pVnaH|Mc5I!zZ{OS~+UkmOEy#5?{?Goe8{n~BXmnZu1 zm2KQzNOm|+;e;eHU&Q zW}X(LKGFhe*}JmW)e8Z>7+BF;P1=Xr|c2ZjS)dWDnGCPm|P8<-AuKCVBqw z%JNZOZjM@E+o_5cuOng@xfdVUT!7DFH}9WNPV~Je_Qb#i2pr4IttKfPAn7P%H18(6 zCWDlq(rFcn-7v1v=j(0hr}$`-pB;DXnIKQ;{>NWrAe-9|aiV7Whfm3?56vTd&D@Tu zi40uDO^hw&4>)m90Et)Q=~M?MRY*br@5P^`ILWvoWRlNI4$$H3~mfpT5*ha!BRT}wedEslXiMN(AO&{L#0{L?H6?K#xXN^e3Fj2 zmmQLrGd3rfq5y>^oZ}hn07p@_TR{p&M07+~7*1Gs80FWS7m7>#Tf&WJtnXw!WN$K( z2N@D@!(T&gSbJ&FsVF$&?}PRI864gz5!q0wY; zJS?4=wRt#LWPRxI_6haLG&QOz2g<=xwax`CIbn5_PaokT_>uBDdwD|gegNZZ;Ugv< z&^=(eYNEQ*aXr|p=UzEDIh2qyL>o2blZ(kY%52bGZd-vaLnPe&NS{aOC*jrf<{`s%kbb-Z${6+oCA) zpJT_baDj}@xpotNE;o*CG+HriHjcwxh&8<3Hr8|KGH%!qsL?}<1s+_UFht0~Qp`)1 zeePX~*{TDYW>^N`lKl|VAe-y@X_R-c2UvwCJ_|KFAx9{^ZCMF=AU(p;&sIyA^t~yE zsR-$lp3kaD{0WnU7>BNZ%(z`ue@-Fn>@zAs(L=T7_Og+SX_5&lF_Kk7y`3 zX;Qmi2hL_sXx0GymeYzXu-nXdNTuDJ2tVLJIQA$lsf3`l>oKGxQip(0Y}^QuU>Fz| z+^)w&V~brkq0hNfRb8Dph{!#!gg)s->kYmIno7O{S?Y2@pupMB2r3);9vzofjtqS! zoD8%mHOe%Jm2McpajHu+#~eO9W?`k%+BqgGm~S+?v8E#WK#w)+X7tRiQ@;}7E9^%I z6|wz`PX6S_;mKh;C8eS``jLM|#)h zeI-qDjvOyRr|tB4^*Ezr_0Pw`U_9Z!>GAU4gFn({`bPG8j%GI2GB(yW|Aqgs!7~at z7#LYQ60-wX7{IMi*uX7l{@tnuz{JGB0`7bQ`mcsHYybup78W2IxPQdo5Fs{p1|SDB zEA#)_s7pKtyBIN zJ#Ai=71 zS#?_Q(wbr|CrFz{&o&FQ=N%`0fxZO1puLCK=GcI0?O_lmuxi!2w|cMPR-ix z69s7k-m3kvH>`?CRV^x!J!5%Spr{hM-ZDA?-BZrCx?lAK@A7n)=euVMKi-UA6yIvG z3F6ucn%%y)oue1~_61V?U5k>Sol~)4NpHt5Kdp}w9U9xS5{EN(8JzX^hU)wS?{iw= z_Z{IfPqH2wdw@(_(CW@4HlmqXAqAKNfY^E8^OV7`B6|+*S=>H?Zd{6{PV{78;tS4!&ClDp#LqT@{+K>w`lq6 zEB+g#!uGd5P5%X{Faw!@{|`(B#LW5|rgEI_=88U_xIfW0d#};vQd(GH&PGpC4}8zB zuYy2t`uaV;@T(D31UO+tanV-+R=`EI8bs{VmPo6J#)Ue>SALOQ$Zt)wEeFuj8RJ8f zhqheL^A@TNOyY2wPFD^w{dU@JP&^qg+M>;8D^J`H*BmA|oLWqMA$&vRA?ef-bQbO= zP8pzyDd?;;6`3pV!U=qq!tQ1vPHIQyd)+&sR3O&i%O=#@bLFxeb%K5G2q6x&rfTiS zg10e>Ar!4&PX?;?yL)uPx)#=Sr?tK=yo1O*-GJ5bzzK#?m#rqbVL7v zQXXn`H06u@J@Eng;(Tc#ZT#83d0j@ZRvtH>CX(DxZ2=PfTUTpzD8#;T3vE@4?gh*#pl}*KkkXCIg0vBvMy2 z4Lz-^`w4+gS42ZVI80Y)sWYmM*3lR3019gw+WIwuvugmM3R zrc=w1UYYDi4vacV{h*utKzraFJXR;SVL-R2ny=Oyq(KpQEFrQQI82gcst05`V;z0~ zD~YBqoc-r+qsdWklzD!H8jK{;${?e`9~-zp7^}&!h_3oU=O*N4{G}Lzw+0;nvO%;t z1kI>PWGy*p&G4#K&v5HOiGx2dDuNkyaMgmqEgi^OVmpEe)goIV=c;@@Il+76;w{30 zi05fnAb!Mv1R3qgE=fRL?$;bEP0ocu)_;4rUWvGlsQs2N*U&uy5)1UKr&K z(A1+n2QCD!KrY8N3h~)PSc@QcTMcrdBX=QRTQs3ri=6~Q?l3gHZr0rV$P~Ep+NDOP zYqbi^4dqC`BhW(+bk5s^;Kp|(zzg9*Mil4~gVNPD_-T`Ohs>7mT*1}%@fBeJY;1Io z&>$r`FI+V7O?Up$`UbTt;$2<0$%fqyudBZo{6x3*j<+lP9X@xYCt;RAyYB;(cA(c_ z@`n1(%?8KL2)vHp-r|5Qgf@TwrpOLcYoI4a`zP)FrRR z@7bawlSX%u>{u}QdlKAL+TtUVt^1MV(bTjX0{^UHrAI$EeW{=`VqKq*? ze}a&$@$qZKpdgKn%Iv@mtq{#CjomkY{|iU{Gkd&_ub?kd3IP5MbuL>$FGYYP;PaTGrQJy1{n(}VQ`w^12h%XY| z9M*o0e!N5bl}g^27jB#wVe`{bF?Q&ho(VH*TXe=Nq8b!t)JKFGY+ijL-S@vh*Ju&K z+0{P%;+LmKUJ=3uM+4ZQ?SkX}HVYoup-&NXK^I3KLr{m;{8;jg`TRMAC!Syv&;T|5 zAxGIcaZQUTxnTuWjd~0c27JEeapU9sNN{8p5|~^_PVbX5{oNHqGQ^6i8g+S7gSGgL zt3kPb3DxnF;$Ifv)WpqW!w0#Y@iF6r1}SO++mNNi5ze`GG_G-3~YisT7y?QqxfkTJCS?p4bkxYeheBrzgZIJV-a<(3Ye5V(XH&ZuSrJ|f^GiPmmAOR zt0h2a4694-meKa=;|}#TOBw0?;>||O4)o5|4#qWV8AW9cmL3vEgqBoP4OUKihVFzA zid#4jEGPzG$yY|kCwv{}0;cEV$N9xL|{278%hdP~SNXdRe*ptnPNiMp$e2X;f0u!|i?9}o*>HfjxfsIhFH6hor$_ADE1Dv|e zy2dy+B4WCedQbu(EIu^`5r=;vBWMBbEMSXz<3M@M{-P862e3)~+JKM6LBN1V3L)vOUldHirXgMmCU&gS!N;>|8X?Q7%;OuNOH&K|Lz)_xmLsNu^N^(Q!h?OMZZaPW9 zvU$r!LlliZA4>yOp&wSlI!X&CZu?X@a7Ur0t{UfC3ymPXy{ELqgwpgEL~?_EX{HdK z9Z8!HLHLwb_C~GdLi6%Qn$W{|K-^)W@0r0`E1`H1DXjW5yv#EIX^L?QNq^b03|?sg zlikKhgw0_!vDVz`=9+FI#0DxO`HI0Xi{Whzk)+nJXq=OTPY$xk$M_hzZS?wwZ=8B7 z%%TvOk67O;BO@X8TE)7mmXKySeXDF`|32<2Taw2@2$x&+H3-X^f9tRcJML3EB)+HV zkxOz?Zyb4A)h*J`_t{&}YDuvvez0kwa{7XtE?W+ zl@}2avi1MggtxAP2@k=b0z zLZqyokn1Ke>}&b3qZ@L5X$X#G(t9Qf>T~~4YW*nRoIj1QcMU2Zz`IDb=;3Tm{S}1S zuAxT!fke>3SU)Iaq|op#Y&?}3gvJ*E>S=ke`E!Qco{21Qq|`03vnA=nJ@{E#@0kxy z93KaT6MIFAcv1*7R)0d%#Iv1g=$t3Ny1kJ}pUCT0;Sx@c&VstAI@*FQKekAgha)Xo1p1mL&fl#i<7~paECnnJ5dcD`iWZ-nc zDSU5dSNCTs0G~7h)I+<_nFm5w zCe*rx^sUVW2h4yt>|IjD2i{6b-fo%)&wjoyRfi^rLx(7+_t_}c-n);tbwA1g9gx{S zIT-IYCpV3~y`Jw6N$0wE)k1z^jw@#`a6zt%V7!WH+&{Hj(}>B>bLX11Xh6#}hD|MA z^;=hw9FQCcxjn;vlA)ohfwoF@#f;+#+T+XV;4@(?5ZVLUazq~CX;AFj`d|jfn(jhX zjv-$u`sd;7LK|{*(=O$#DU)_{=O-H^c)1Vi2f6o9-E)6w?BuQ=_ro^QA!MbQpFqK_ zTBf=;tAkjEz2}>H_mRTYOE&u($5s^=f%AYi*P=P)HR2}+KSrlXYwJs7e+zlj&RidM zRrg;jsnevSSyon$ro=Vs+-$ao=x1R>bz7Fif}~gkhCpf>MET@zf5NDa6$*1(Vw;Ltiybg?sp{bE=J4mb8?AuT?2 z&tJflyA$l8+o1ttQyW1_>D3%^;Mxte*L@`k$5@an${f3Nl5NCZEs9%Us6Pof!m-X%otSAs`c^@WfU~lhnC00q zM9)F_3xT$FxY21e@3L{LnJnull_VP5`8g;qV`%|h&Utd^xbn4Anpmc87r~G5{FveP z2;4Eu5-j2Iqp85CvtLRTf_(G!Q&3lg)_$t*mhB1+5d1Xtae>ryiZ^1fksxuYf^9n- zXb^*YRC{tNbKlPT2-{RLj1tu4^^dpVQ4bUaY@sh`z&a!36~xwj9&|F&8_u1 z3ISemRJw4My;-rz3&VqMN9^137nb@4UoO^CVlN2=t6Y$W_ryvWj-H3R#K-MCCT5r- zVSM#X*2wWiLCcx_34|Y+Km%RH#XHb+7!AvpUtGpb6g&6lBlfMBY_m8}a!H2sxRHm@ zqC}#Nj6d&t4eMHnSJ2ov3@fl(LMRH9R^IZc1W1P9mH{h(#d+a&nGdX-(DX5)a3n5n zp&%%Kni6;zG2v3Bx-iuMWDBH&eIHd7dF6wT2#CKp^&mPv+j`K{draoY^TpO;acvHi zn`kJgY@d86K!U>*NaxU`63w(Do2Eb%lVZ`X?wHoCxvvpKczr;aUbu{&1@tj5QAPx} zxAAwY5t4Gcm>^;>FQGw5WhqXYk*4Hh$lxQN%_~(&#Xo?Cv?jU2K4=%>6OpUxjx!y4 zwXC`fnVxgpm_`m@LkOIH2bu9IVatU~BaEb;-}LQLAdkOf70!t~99v!Rj39l&))}+T z@tli>jeHS+P+lWkFe-2KGJ-n3cISfr*_%-$iRnS;_^!kT-}5P6Jxh;UeDRzg%oV^>!|NY<(VD4(usQ8GLK z^-~yrKn!AJr~x9@o{$kIQN4D`*aFu#)N$F#)3&>EZkUC5k?Tn> zVxJH11M#^lzVg&Uf8{e#Rhu!-D+kONx6zWRWE~XvtBzezWC~s1o%fwKfIGzUa(R3m zdpn#dNbuCEesDs1dS}ydB`xJ7E&k5SIDGwR=;mkKfmxJ%m`Xmcj?9y3b)j3m^Hf3v zRN+ieDP0$tSeHM=vCx&d@X5{a>!FFrwbMSza5A$^WI}zbp;q$PXqalh(sgX3b!SOUA3vT%dFr8MC2Mil zbfJr1m_LjUX@5we4WgP;3EY_xciKKT(4V zAf1h*Y2I9F&OX|U3c!p}0bQ#b{aTbJb)%)b<;Rkfb@GkF%iU2CMR8Z#1-NJ+i0t;p zg-J~}zTLumO}d}#8JNKL0em9Yu#S;5!sF9@N4ZHh*S4qNl1I?qG92NCz3y(Q5T7)% zh2_bLV70p%_Q#bPWZ~+GCE=*4RjQdTJFmNQJLpsQK87l1O!!z-D@9m3aKMDK>Q`3x z)d=}x+jxb8xV6uq-nqo0+2WLC@|vOQY^gK_!TcreHHKSuI|Si=#4gv(*N~BEM(j)6 z%&7u4vwAYzdZm1Y(pgH@Q#0PFH@ICEiUFb)_>;5jcReGU70yfO2qMr4QC_`7w@m{c z#aDS^+-W`0@O=(^Hat9^J9}j67Zl3+-j>g91cv|Yib5&7a8gP7VUXGrwWCE2$Q5imU=+IurUoH#2} zHAO!^N$`C4V~!&?G?WIO3X6zgVWzSW!Ao;qc9k>NcPXIXPY!^;9} zPelp0ZZ&_~mZPpehsxGCqMFta-&!1NWKY3z)n*Qp4(CVY0CeYRhdSoXk$8|9S?4KE zSbWTx+kz3ddK=+4>ggakK6;suhpvA+2hgm6^_r`alXi)#xe()i7fm@~!%`Fm)0p{e zh^u(k+FvsNel1vgEf+FUH1Tc00Ah(U4N?l?2jK?Hy6qaI2aF8K@;U#-k~YDbdh_qF z-*tCtX0;j;?|Z+G%t4CQ23n#S%M0NWgcyI!+doI<*>ASQ=S;bao@3L9B(%hQ#E2`G zi&~D0DW44xV%36M6lKD$ThW3L9`#i%X7l}KEH3@s-UzSRl3_3@CQ@M42%rtONWp~b zv|TghVOwhWD!Rv!+%Uas6e;RQuOH4#`x>HlF|~r@UCkAofUHOZq|v?BE-lIOD@+H) z1_S`rvMyxDvOT$>W|uj$?G2Qz0gP?9d64o1Ml8MmY+Ax`7b3Pa71x-B4Eo0k%PDi| zH|O??qVWoWzNcY>4SrM%j=8@B6hPqC~eRdldLiSV+AY?nGR` zcP2tNzH_~7TOq@EpuP^wp=&?0Yr_A`#5V6kZU{>pbGVa>NsI;9aBO+S)J9CN;OO=V z(cU*5mI8t4wRNRf@cEV_AqnHn8zJ_cZ9V85Y`}(;jKUh3Z&h@n(3iV6792jkf`Jp8 zBT~QWWBATpT8Fkl$vjcdjL5iMm5>j({?1?gkf(dvo8<3Io_Ky$eqsW|4)79e8x^1& z4jIGDgk=HU^P?+fx!ew zRm~kKqWoqaaYQ{-7u>?aD!^4XpngT-kPB1EtcFyo%aP_pn7}_pPQN3ip-lCecfWth zEhVZ;az=;f(3-QMwQgN-zjx_sffwcn6CcB)z8lsJmDp#VD!Ao}Ztst36!}(Io$nuV z^7XRohrQhR)^udoIHEl$irm~N=Wa;3sscxjJ6Stih@Qu$*CVSWW9MBYPQOdGNKn=1 zeD-==YQJh`^QxXLO=3LIns52yQLYv9K{25u1`PwFde&>zVy{o1_QySE(a6x(piJ8N z%BXUsG|DA%n&B1?V7X>}O{p9MT?(rNLv;DEc8j^2Wqm~Eg<-Sz?D=?oTPDFd7_!Rz zvD02LZs(`6YH^P`JHqu{!VMaZ>(w<|7T4{w%;Wtw)w?%d^+Kp4qo%DaSn&n=0u2N4wy4WP0w77IQGTKSp#GoHoZ^d69RV1A(t&-3$$b5CN zS(QOKqL^AG2Yhi>qB;KhjsCdRq1KUdT!D~;%oS&eS@Wv_@kd;I{zRm~*U+y8d-#_j zzS|`C!^q3Lc3oe#i-2{`SU6il)`KOVwp#X_F4w$~dUUm>w2@j4As*5kQbl*!VB&~K zZV=-6RN^Ym>v$ex`{qIuh#`?~!;oaXI76~3?NFF*%QSCwxF!rzXsN57pj>V84zJ5? z6w;6bN_ny0H>_o8(_9a?QF;VvGbCpapT5&`9EmM*()^lky)gX^Y8865&SJ5qC~>61 zLZiB@-t4Z%B5f(To|P?`(d?J3o6@&Do{Kchlg}3BD@w~VRmDYSU0HWBcVJP1G&ys% zNG2C`H>KGc4w=M};k2(KgIgl`P{?0H(<0({obtPEFz5Q5kVdu)nFzIeajdj(=MnpJ z%?@gI^#q+8j~40?b_-_vzG1Qr+!WQ%^p!Hd`yOhQ;#;Q&8Z`?Q&H_(c1 z+Z5Qe#RZ7# z{y$}E=$XMq122?KK|vc=VoiGHzl3VQY(@YZn0NT6P|aU}=idR)ziCwbCxm~U@IQfo zwN(BD_5X0+27kZvie{HNW)T>i}iHSdQ2ezI&ukQPD)(za%4x93X z_bgQ6Ef!;ZDba1@VoCeWA$PGGK?xNZ&!n(So>T#goTH2|S|N=l@2_+(n<92Gbvube zQa7cmpewe)DBSt3S)}dK>9yCSM(tC#ZSQlRQ&)bLP|B`$E z&ZU=x1S9c+dJaY}2~N!TN7DT->j3^z1Nx&5;4e<|e@Z`G?Tw7#Us3{|>E8!2kc|z% zMr=&{ZyQ+p=&w(St^Z{MQ+{8hgnqMu-!Q)<%**j_Kd>MXm{R<^4a^~aNyy*)!1KN6 z9sOnl*Q>lF@ZW9V*UTK?%7x!-01yYbzUL1cJ2RLE{-+JV{>NBw9KaV&@^9y3Wd;EL zJRcDBBAfJ^A9yUs%kJ>oSRe-zco+K3#tfF*db#cX?gwB7f$6Ki+nAYI0AP0YZ+^^d z92|dM3wSK+pKHYoWCnp**}shi-~B9qt{=FHiuHw^{r78msjOo8P21aB(8jRi2XGl3cUzu8#Wnb?{CxE8=m!2cWz9{&4Suz~f3$o_Kt zJJ-NAuq@W^HWpR@`ycZHz}j8Rf5ZV`VPpEo94u^X|L|jF24~D4bAa>Z<;Uf>YXK{V z0sf4QmF1t;!p8C<&h`6PHt-7m!vNrco&o&( m1Fn&iur{_K1~1xQEN=%#J$uK$HX?A&vND0-$;n0JME?(}(M~)7 literal 0 HcmV?d00001 From 08c012a19ae86b0d8b427eca475ca73b079eb14e Mon Sep 17 00:00:00 2001 From: Kaarel Date: Mon, 29 Apr 2024 11:18:48 +0300 Subject: [PATCH 072/114] Add index.php to the root of the module --- src/index.php | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/index.php diff --git a/src/index.php b/src/index.php new file mode 100644 index 0000000..778ada9 --- /dev/null +++ b/src/index.php @@ -0,0 +1,30 @@ +. + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ +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; From 5ecc5b545b0c2715a03c1b5e93fd380f6fe720ec Mon Sep 17 00:00:00 2001 From: Kaarel Date: Mon, 29 Apr 2024 11:57:53 +0300 Subject: [PATCH 073/114] Keep only estonian translations, add missing ones --- src/src/Form/ChoiceProvider/Autoresponder.php | 4 +- .../Form/ChoiceProvider/ProductCategory.php | 2 +- src/src/Form/CustomerSyncFormType.php | 2 +- .../ModulesSmailyforprestashopAdmin.en-US.xlf | 377 ------------------ src/translations/en-US/index.php | 30 -- .../ModulesSmailyforprestashopAdmin.et-EE.xlf | 20 + 6 files changed, 24 insertions(+), 411 deletions(-) delete mode 100644 src/translations/en-US/ModulesSmailyforprestashopAdmin.en-US.xlf delete mode 100644 src/translations/en-US/index.php diff --git a/src/src/Form/ChoiceProvider/Autoresponder.php b/src/src/Form/ChoiceProvider/Autoresponder.php index c2e59de..d71ff3d 100644 --- a/src/src/Form/ChoiceProvider/Autoresponder.php +++ b/src/src/Form/ChoiceProvider/Autoresponder.php @@ -58,7 +58,7 @@ public function __construct(TranslatorInterface $translator, ConfigurationInterf public function getChoices(): array { $noAutoresponders = [ - $this->translator->trans('No automation workflows available', [], 'Module.Smailyforprestashop.Admin') => null, + $this->translator->trans('No automation workflows available', [], 'Modules.Smailyforprestashop.Admin') => null, ]; $subdomain = $this->configuration->get('SMAILY_SUBDOMAIN'); @@ -82,7 +82,7 @@ public function getChoices(): array } $choices = [ - $this->translator->trans('Select an automation workflow', [], 'Module.Smailyforprestashop.Admin') => null, + $this->translator->trans('Select an automation workflow', [], 'Modules.Smailyforprestashop.Admin') => null, ]; foreach ($autoresponders as $autoresponder) { $choices[$autoresponder['name']] = $autoresponder['id']; diff --git a/src/src/Form/ChoiceProvider/ProductCategory.php b/src/src/Form/ChoiceProvider/ProductCategory.php index b34bf56..3d223f6 100644 --- a/src/src/Form/ChoiceProvider/ProductCategory.php +++ b/src/src/Form/ChoiceProvider/ProductCategory.php @@ -57,7 +57,7 @@ public function __construct(TranslatorInterface $translator, CategoryDataProvide public function getChoices(): array { $choices = [ - $this->translator->trans('All products', [], 'Module.Smailyforprestashop.Admin') => null, + $this->translator->trans('All products', [], 'Modules.Smailyforprestashop.Admin') => null, ]; return array_merge( diff --git a/src/src/Form/CustomerSyncFormType.php b/src/src/Form/CustomerSyncFormType.php index 7635606..d777b89 100644 --- a/src/src/Form/CustomerSyncFormType.php +++ b/src/src/Form/CustomerSyncFormType.php @@ -148,7 +148,7 @@ public function buildForm(FormBuilderInterface $builder, array $options): void ->add('optin_enabled', SwitchType::class, [ 'label' => $this->trans('Trigger opt-in on customer sign-up', 'Modules.Smailyforprestashop.Admin'), 'required' => false, - 'help' => $this->trans("Opt-in will only be triggered when customer creates an account and signs-up for newsletter. Changes to newsletter subscription in the admin panel won't trigger an opt-in.", 'Module.Smailyforprestashop.Admin'), + 'help' => $this->trans("Opt-in will only be triggered when customer creates an account and signs-up for newsletter. Changes to newsletter subscription in the admin panel won't trigger an opt-in.", 'Modules.Smailyforprestashop.Admin'), ]) ->add('autoresponder', ChoiceType::class, [ 'choices' => $this->autoresponderChoices, diff --git a/src/translations/en-US/ModulesSmailyforprestashopAdmin.en-US.xlf b/src/translations/en-US/ModulesSmailyforprestashopAdmin.en-US.xlf deleted file mode 100644 index 98e4ff7..0000000 --- a/src/translations/en-US/ModulesSmailyforprestashopAdmin.en-US.xlf +++ /dev/null @@ -1,377 +0,0 @@ - - - - - - Smaily for PrestaShop - Smaily for PrestaShop - Line: - - - Smaily email marketing and automation module for PrestaShop. - Smaily email marketing and automation module for PrestaShop. - Line: - - - Are you sure you want to uninstall? - Are you sure you want to uninstall? - Line: - - - Smaily for PrestaShop modules opt-in automation trigger is active. Set up verification, confirmation and voucher sending in Smaily to avoid sending double emails. - Smaily for PrestaShop modules opt-in automation trigger is active. Set up verification, confirmation and voucher sending in Smaily to avoid sending double emails. - Line: - - - How to set up automation flow? - How to set up automation flow? - Line: - - - Connected with Smaily account. - Connected with Smaily account. - Line: - - - Configuration saved. - Configuration saved. - Line: - - - You have selected an automation to trigger opt-in email sending. We have disabled Newsletter Subscription plugins verification, confirmation and voucher email sending in order to avoid duplicate emails! - You have selected an automation to trigger opt-in email sending. We have disabled Newsletter Subscription plugins verification, confirmation and voucher email sending in order to avoid duplicate emails! - Line: - - - RSS-feed URL updated. - RSS-feed URL updated. - Line: - - - Maximum number or products is %value% - Maximum number or products is %value% - Line: - - - Product category - Product category - Line: - - - Show products only from this category. - Show products only from this category. - Line: - - - Product limit - Product limit - Line: - - - Limit how many products you will add to your feed. Maximum 250. - Limit how many products you will add to your feed. Maximum 250. - Line: - - - This value should be greater than %value% - This value should be greater than %value% - Line: - - - This value should be less than %value% - This value should be less than %value% - Line: - - - Sort by - Sort by - Line: - - - Date added - Date added - Line: - - - Date updated - Date updated - Line: - - - Product name - Product name - Line: - - - Product price - Product price - Line: - - - Product ID - Product ID - Line: - - - Sort order - Sort order - Line: - - - Descending - Descending - Line: - - - Ascending - Ascending - Line: - - - Enable Customer Synchronization - Enable Customer Synchronization - Line: - - - Synchronize Additional - Synchronize Additional - Line: - - - Select additional fields to syncronize - Select additional fields to syncronize - Line: - - - First name - First name - Line: - - - Last name - Last name - Line: - - - Birthday - Birthday - Line: - - - Website - Website - Line: - - - Cron token - Cron token - Line: - - - Token is required for cron security. Use this auto generated one or replace with your own. - Token is required for cron security. Use this auto generated one or replace with your own. - Line: - - - The field is required. - The field is required. - Line: - - - Trigger opt-in on customer sign-up - Trigger opt-in on customer sign-up - Line: - - - Automation to trigger on customer sign-up - Automation to trigger on customer sign-up - Line: - - - Subdomain - Subdomain - Line: - - - For example demo from https://demo.sendsmaily.net - For example demo from https://demo.sendsmaily.net - Line: - - - Username - Username - Line: - - - Password - Password - Line: - - - Connect - Connect - Line: - - - Please enter subdomain - Please enter subdomain - Line: - - - Please enter username - Please enter username - Line: - - - Please enter password - Please enter password - Line: - - - Unauthorized, please check credentials. - Unauthorized, please check credentials. - Line: - - - Error validating credentials, please try again. - Error validating credentials, please try again. - Line: - - - Enable Abandoed Cart - Enable Abandoed Cart - Line: - - - Autoresponder - Autoresponder - Line: - - - Select additional fields to send to abandoned cart template. - Select additional fields to send to abandoned cart template. - Line: - - - Customers first name - Customers first name - Line: - - - Customers last name - Customers last name - Line: - - - Product description - Product description - Line: - - - Product SKU - Product SKU - Line: - - - Product quantity - Product quantity - Line: - - - Abandoned Cart Delay - Abandoned Cart Delay - Line: - - - Time after cart is considered abandoned after last cart edit from customer. Minimum 15 minutes. - Time after cart is considered abandoned after last cart edit from customer. Minimum 15 minutes. - Line: - - - Please provide a cron token for customer synchronization. - Please provide a cron token for customer synchronization. - Line: - - - Please select an automation workflow for customer Opt-In trigger. - Please select an automation workflow for customer Opt-In trigger. - Line: - - - Please provide a cron token for abandoned cart synchronization. - Please provide a cron token for abandoned cart synchronization. - Line: - - - Abandoned Cart - Abandoned Cart - Line: - - - Cron URL - Cron URL - Line: - - - Copy to clipboard - Copy to clipboard - Line: - - - To schedule automatic sync, set up CRON in your hosting and use this URL. - To schedule automatic sync, set up CRON in your hosting and use this URL. - Line: - - - Smaily Account Settings - Smaily Account Settings - Line: - - - How to create API credentials? - How to create API credentials? - Line: - - - Reconnect - Reconnect - Line: - - - RSS Feed - RSS Feed - Line: - - - RSS-feed URL - RSS-feed URL - Line: - - - Customer Synchronization - Customer Synchronization - Line: - - - How to create an automation trigger? - How to create an automation trigger? - Line: - - - Smaily for Prestashop - Smaily for Prestashop - Line: - - - Account - Account - Line: - - - Customer Sync - Customer Sync - Line: - - - - diff --git a/src/translations/en-US/index.php b/src/translations/en-US/index.php deleted file mode 100644 index 778ada9..0000000 --- a/src/translations/en-US/index.php +++ /dev/null @@ -1,30 +0,0 @@ -. - * - * @author Smaily - * @copyright 2024 Smaily - * @license GPL3 - */ -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; diff --git a/src/translations/et-EE/ModulesSmailyforprestashopAdmin.et-EE.xlf b/src/translations/et-EE/ModulesSmailyforprestashopAdmin.et-EE.xlf index ef24a22..dc2cca1 100644 --- a/src/translations/et-EE/ModulesSmailyforprestashopAdmin.et-EE.xlf +++ b/src/translations/et-EE/ModulesSmailyforprestashopAdmin.et-EE.xlf @@ -182,11 +182,31 @@ Käivita opt-in kasutaja registreerimisel Line: + + Opt-in will only be triggered when customer creates an account and signs-up for newsletter. Changes to newsletter subscription in the admin panel won't trigger an opt-in. + Opt-in töövoog käivitatakse ainult kui klient loob uue konto või liitub läbi uudiskirjavormi. Uudiskirja tellimise muudatused administraator paneelis ei käivita töövoogu. + Line: + Automation to trigger on customer sign-up Kasutaja registreerimisel käivitatav automaatika Line: + + No automation workflows available + Puuduvad automaatika töövood + Line: + + + Select an automation workflow + Vali automaatika töövoog + Line: + + + All products + Kõik tooted + Line: + Subdomain Alamdomeen From c97ca9b2a611d79d7989ad40b88349d2b2137f35 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Mon, 29 Apr 2024 11:59:12 +0300 Subject: [PATCH 074/114] Fix wrong selector id-s in RSS URL generation script --- src/views/js/smaily-admin.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/views/js/smaily-admin.js b/src/views/js/smaily-admin.js index 1d6a3fd..eb594d6 100644 --- a/src/views/js/smaily-admin.js +++ b/src/views/js/smaily-admin.js @@ -28,22 +28,22 @@ $(() => { var rss_url_base = rssBaseURL + '?'; var url_parameters = {}; - var rss_limit = $('#rss #form_product_limit').val(); + var rss_limit = $('#rss #rss_product_limit').val(); if (rss_limit != "") { url_parameters.limit = rss_limit; } - var rss_sort_by = $('#rss #form_sort_by').val(); + var rss_sort_by = $('#rss #rss_sort_by').val(); if (rss_sort_by != "") { url_parameters.sort_by = rss_sort_by; } - var rss_sort_order = $('#rss #form_sort_order').val(); + var rss_sort_order = $('#rss #rss_sort_order').val(); if (rss_sort_order != "") { url_parameters.sort_order = rss_sort_order; } - var rss_category_id = $('#rss #form_product_category_id').val(); + var rss_category_id = $('#rss #rss_product_category_id').val(); if (rss_category_id != "") { url_parameters.category_id = rss_category_id; } From 947dd3347f0beb3794962c9354b15151f69ca241 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Mon, 29 Apr 2024 12:11:43 +0300 Subject: [PATCH 075/114] Add missing translation --- src/src/Form/AccountConfigurationFormType.php | 2 +- .../et-EE/ModulesSmailyforprestashopAdmin.et-EE.xlf | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/src/Form/AccountConfigurationFormType.php b/src/src/Form/AccountConfigurationFormType.php index ff1da9a..5bae2e7 100644 --- a/src/src/Form/AccountConfigurationFormType.php +++ b/src/src/Form/AccountConfigurationFormType.php @@ -76,7 +76,7 @@ public function connectionChecker(PostSetDataEvent $event): void $resp = $api->listAutoresponders(); if ($resp->getStatusCode() !== 200) { - $form->get('password')->addError(new FormError($this->trans('Failed to establish connection with Smaily. Please check credentials and reconnect!', 'Modules.Smailyforprestashiop.Admin'))); + $form->get('password')->addError(new FormError($this->trans('Failed to establish connection with Smaily. Please check credentials and reconnect!', 'Modules.Smailyforprestashop.Admin'))); } } } diff --git a/src/translations/et-EE/ModulesSmailyforprestashopAdmin.et-EE.xlf b/src/translations/et-EE/ModulesSmailyforprestashopAdmin.et-EE.xlf index dc2cca1..6dbcdaf 100644 --- a/src/translations/et-EE/ModulesSmailyforprestashopAdmin.et-EE.xlf +++ b/src/translations/et-EE/ModulesSmailyforprestashopAdmin.et-EE.xlf @@ -232,6 +232,11 @@ Ühenda Line: + + Failed to establish connection with Smaily. Please check credentials and reconnect! + Ühendus Smaily kontoga on katkenud. Palun kontrollige kasutajatunnust ja parooli ning ühendage uuesti! + Line: + Please enter subdomain Palun sisesta alamdomeen From 817938a1186bc3315975b7ebe3de8362f37d3a49 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Mon, 6 May 2024 10:01:42 +0300 Subject: [PATCH 076/114] Use isset instad of in_array --- src/src/Controller/AbandonedCartController.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/src/Controller/AbandonedCartController.php b/src/src/Controller/AbandonedCartController.php index 819e0d1..e944a6d 100644 --- a/src/src/Controller/AbandonedCartController.php +++ b/src/src/Controller/AbandonedCartController.php @@ -181,11 +181,11 @@ private function generatePayload(AbandonedCart $cart): array ]; $syncAdditional = json_decode($this->configuration->get('SMAILY_CART_SYNCRONIZE_ADDITIONAL'), true); - if (in_array('first_name', $syncAdditional) && $syncAdditional['first_name'] === true) { + if (isset($syncAdditional['first_name']) && $syncAdditional['first_name'] === true) { $payload['first_name'] = $cart->firstName; } - if (in_array('last_name', $syncAdditional) && $syncAdditional['last_name'] === true) { + if (isset($syncAdditional['last_name']) && $syncAdditional['last_name'] === true) { $payload['last_name'] = $cart->lastName; } From 72612da9f35098d1076ca2fabed2846a6420005b Mon Sep 17 00:00:00 2001 From: Kaarel Date: Mon, 6 May 2024 13:48:50 +0300 Subject: [PATCH 077/114] Refactor ModuleConfigurationController --- .../ModuleConfigurationController.php | 161 +++++++++--------- 1 file changed, 85 insertions(+), 76 deletions(-) diff --git a/src/src/Controller/ModuleConfigurationController.php b/src/src/Controller/ModuleConfigurationController.php index 597505e..412f105 100644 --- a/src/src/Controller/ModuleConfigurationController.php +++ b/src/src/Controller/ModuleConfigurationController.php @@ -29,7 +29,9 @@ exit; } +use PrestaShop\PrestaShop\Core\Form\FormHandlerInterface; use PrestaShopBundle\Controller\Admin\FrameworkBundleAdminController; +use Symfony\Component\Form\FormInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -46,16 +48,38 @@ public function index(Request $request): Response $accountForm = $accountFormDataHandler->getForm(); $accountForm->handleRequest($request); + // Customer Sync + $customerSyncFormDataHandler = $this->get('prestashop.module.smailyforprestashop.form.customer_sync_form_handler'); + $customerSyncForm = $customerSyncFormDataHandler->getForm(); + $customerSyncForm->handleRequest($request); + + // Abandoned Cart + $abandonedCartFormDataHandler = $this->get('prestashop.module.smailyforprestashop.form.abandoned_cart_form_handler'); + $abandonedCartForm = $abandonedCartFormDataHandler->getForm(); + $abandonedCartForm->handleRequest($request); + + // RSS-feed + $rssFeedFormDataHandler = $this->get('prestashop.module.smailyforprestashop.form.rss_feed_form_handler'); + $rssFeedForm = $rssFeedFormDataHandler->getForm(); + $rssFeedForm->handleRequest($request); + if ($accountForm->get('submit')->isClicked() && $accountForm->isValid()) { - $errors = $accountFormDataHandler->save($accountForm->getData()); + $this->handleAccountFormSubmit($accountFormDataHandler, $accountForm); + } - if (empty($errors)) { - $this->addFlash('success', $this->trans('Connected with Smaily account.', 'Modules.Smailyforprestashop.Admin')); + if ($customerSyncForm->get('submit')->isClicked() && $customerSyncForm->isValid()) { + $tab = 'sync'; + $this->handleCustomerSyncFormSubmit($customerSyncFormDataHandler, $customerSyncForm); + } - return $this->redirectToRoute('smailyforprestashop_module_configuration', ['tab' => $tab]); - } + if ($abandonedCartForm->get('submit')->isClicked() && $abandonedCartForm->isValid()) { + $tab = 'cart'; + $this->handleAbandonedCartFormSubmit($abandonedCartFormDataHandler, $abandonedCartForm); + } - $this->flashErrors($errors); + if ($rssFeedForm->get('submit')->isClicked() && $rssFeedForm->isValid()) { + $tab = 'rss'; + $this->handleRssFeedFormSubmit($rssFeedFormDataHandler, $rssFeedForm); } // Allow to access settings only if account is connected. @@ -68,93 +92,78 @@ public function index(Request $request): Response ]); } - // Customer Sync - $customerSyncFormDataHandler = $this->get('prestashop.module.smailyforprestashop.form.customer_sync_form_handler'); - $customerSyncForm = $customerSyncFormDataHandler->getForm(); - $customerSyncForm->handleRequest($request); - - $customerSyncFormClicked = $customerSyncForm->get('submit')->isClicked(); - - if ($customerSyncFormClicked) { - $tab = 'sync'; - } - - if ($customerSyncFormClicked && $customerSyncForm->isValid()) { - $formData = $customerSyncForm->getData(); - $errors = $customerSyncFormDataHandler->save($formData); - - if (empty($errors)) { - $this->addFlash('success', $this->trans('Configuration saved.', 'Modules.Smailyforprestashop.Admin')); - if ($formData['optin_enabled']) { - $this->addFlash( - 'success', - $this->trans( - 'You have selected an automation to trigger opt-in email sending. We have disabled Newsletter Subscription plugins verification, confirmation and voucher email sending in order to avoid duplicate emails!', - 'Modules.Smailyforprestashop.Admin', - ) - ); - } - - return $this->redirectToRoute('smailyforprestashop_module_configuration', ['tab' => $tab]); - } + return $this->render('@Modules/smailyforprestashop/views/templates/admin/configuration.html.twig', [ + 'accountConfigurationForm' => $accountForm->createView(), + 'customerSyncForm' => $customerSyncForm->createView(), + 'abandonedCartForm' => $abandonedCartForm->createView(), + 'rssFeedForm' => $rssFeedForm->createView(), + 'accountConnected' => true, + 'tab' => $tab, + 'jsVariables' => [ + 'rssBaseURL' => \Context::getContext()->link->getModuleLink('smailyforprestashop', 'SmailyRssFeed'), + ], + ]); + } - $this->flashErrors($errors); - } + private function handleAccountFormSubmit(FormHandlerInterface $formHandler, FormInterface $form) + { + $errors = $formHandler->save($form->getData()); - // Abandoned Cart - $abandonedCartFormDataHandler = $this->get('prestashop.module.smailyforprestashop.form.abandoned_cart_form_handler'); - $abandonedCartForm = $abandonedCartFormDataHandler->getForm(); - $abandonedCartForm->handleRequest($request); - $abandonedCartFormClicked = $abandonedCartForm->get('submit')->isClicked(); + if (empty($errors)) { + $this->addFlash('success', $this->trans('Connected with Smaily account.', 'Modules.Smailyforprestashop.Admin')); - if ($abandonedCartFormClicked) { - $tab = 'cart'; + return $this->redirectToRoute('smailyforprestashop_module_configuration'); } - if ($abandonedCartFormClicked && $abandonedCartForm->isValid()) { - $errors = $abandonedCartFormDataHandler->save($abandonedCartForm->getData()); - - if (empty($errors)) { - $this->addFlash('success', $this->trans('Configuration saved.', 'Modules.Smailyforprestashop.Admin')); + $this->flashErrors($errors); + } - return $this->redirectToRoute('smailyforprestashop_module_configuration', ['tab' => $tab]); + private function handleCustomerSyncFormSubmit(FormHandlerInterface $formHandler, FormInterface $form) + { + $formData = $form->getData(); + $errors = $formHandler->save($formData); + + if (empty($errors)) { + $this->addFlash('success', $this->trans('Configuration saved.', 'Modules.Smailyforprestashop.Admin')); + if ($formData['optin_enabled']) { + $this->addFlash( + 'success', + $this->trans( + 'You have selected an automation to trigger opt-in email sending. We have disabled Newsletter Subscription plugins verification, confirmation and voucher email sending in order to avoid duplicate emails!', + 'Modules.Smailyforprestashop.Admin', + ) + ); } - $this->flashErrors($errors); + return $this->redirectToRoute('smailyforprestashop_module_configuration'); } - // Rss feed - $rssFeedFormDataHandler = $this->get('prestashop.module.smailyforprestashop.form.rss_feed_form_handler'); - $rssFeedForm = $rssFeedFormDataHandler->getForm(); - $rssFeedForm->handleRequest($request); - $rssFeedFormClicked = $rssFeedForm->get('submit')->isClicked(); + $this->flashErrors($errors); + } - if ($rssFeedFormClicked) { - $tab = 'rss'; + private function handleAbandonedCartFormSubmit(FormHandlerInterface $formHandler, FormInterface $form) + { + $errors = $formHandler->save($form->getData()); + + if (empty($errors)) { + $this->addFlash('success', $this->trans('Configuration saved.', 'Modules.Smailyforprestashop.Admin')); + + return $this->redirectToRoute('smailyforprestashop_module_configuration'); } - if ($rssFeedFormClicked && $rssFeedForm->isValid()) { - $errors = $rssFeedFormDataHandler->save($rssFeedForm->getData()); + $this->flashErrors($errors); + } - if (empty($errors)) { - $this->addFlash('success', $this->trans('RSS-feed URL updated.', 'Modules.Smailyforprestashop.Admin')); + private function handleRssFeedFormSubmit(FormHandlerInterface $formHandler, FormInterface $form) + { + $errors = $formHandler->save($form->getData()); - return $this->redirectToRoute('smailyforprestashop_module_configuration', ['tab' => $tab]); - } + if (empty($errors)) { + $this->addFlash('success', $this->trans('RSS-feed URL updated.', 'Modules.Smailyforprestashop.Admin')); - $this->flashErrors($errors); + return $this->redirectToRoute('smailyforprestashop_module_configuration'); } - return $this->render('@Modules/smailyforprestashop/views/templates/admin/configuration.html.twig', [ - 'accountConfigurationForm' => $accountForm->createView(), - 'customerSyncForm' => $customerSyncForm->createView(), - 'abandonedCartForm' => $abandonedCartForm->createView(), - 'rssFeedForm' => $rssFeedForm->createView(), - 'accountConnected' => true, - 'tab' => $tab, - 'jsVariables' => [ - 'rssBaseURL' => \Context::getContext()->link->getModuleLink('smailyforprestashop', 'SmailyRssFeed'), - ], - ]); + $this->flashErrors($errors); } } From a696e67b98ff3a4f93262adcf57754e8e8962758 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Mon, 6 May 2024 16:24:23 +0300 Subject: [PATCH 078/114] Remove prestashop-data volume It introduces permission problems with cache permissions and stuff really bad to debug. I didn't find a good solution so defaulting to initiating a new environment each time. --- docker-compose.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index 3356dc6..d1cd27e 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -13,7 +13,6 @@ services: ports: - 8080:80 volumes: - - prestashop-data:/var/www/html - .vscode:/var/www/html/.vscode - ./src:/var/www/html/modules/smailyforprestashop @@ -69,5 +68,4 @@ services: - 8025:8025 volumes: - prestashop-data: prestashop-db-data: From 7b824d14347b31267eba35dcae95d5741c296b77 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Mon, 6 May 2024 16:24:47 +0300 Subject: [PATCH 079/114] Refactor ModuleConfigurationController --- .../ModuleConfigurationController.php | 151 +++++++++++------- 1 file changed, 97 insertions(+), 54 deletions(-) diff --git a/src/src/Controller/ModuleConfigurationController.php b/src/src/Controller/ModuleConfigurationController.php index 412f105..cbe7d6f 100644 --- a/src/src/Controller/ModuleConfigurationController.php +++ b/src/src/Controller/ModuleConfigurationController.php @@ -37,90 +37,99 @@ class ModuleConfigurationController extends FrameworkBundleAdminController { + /** + * @var string + */ + private $tab; + + /** + * @var FormInterface + */ + private $accountForm; + + /** + * @var FormInterface + */ + private $customerSyncForm; + + /** + * @var FormInterface + */ + private $abandonedCartForm; + + + /** + * @var FormInterface; + */ + private $rssFeedForm; + public function index(Request $request): Response { - $configurationService = $this->get('prestashop.adapter.legacy.configuration'); - $isAccountConnected = $configurationService->get('SMAILY_SUBDOMAIN') !== ''; - $tab = 'account'; + $this->tab = 'account'; // Account $accountFormDataHandler = $this->get('prestashop.module.smailyforprestashop.form.account_form_handler'); - $accountForm = $accountFormDataHandler->getForm(); - $accountForm->handleRequest($request); + $this->accountForm = $accountFormDataHandler->getForm(); + $this->accountForm->handleRequest($request); // Customer Sync $customerSyncFormDataHandler = $this->get('prestashop.module.smailyforprestashop.form.customer_sync_form_handler'); - $customerSyncForm = $customerSyncFormDataHandler->getForm(); - $customerSyncForm->handleRequest($request); + $this->customerSyncForm = $customerSyncFormDataHandler->getForm(); + $this->customerSyncForm->handleRequest($request); // Abandoned Cart $abandonedCartFormDataHandler = $this->get('prestashop.module.smailyforprestashop.form.abandoned_cart_form_handler'); - $abandonedCartForm = $abandonedCartFormDataHandler->getForm(); - $abandonedCartForm->handleRequest($request); + $this->abandonedCartForm = $abandonedCartFormDataHandler->getForm(); + $this->abandonedCartForm->handleRequest($request); // RSS-feed $rssFeedFormDataHandler = $this->get('prestashop.module.smailyforprestashop.form.rss_feed_form_handler'); - $rssFeedForm = $rssFeedFormDataHandler->getForm(); - $rssFeedForm->handleRequest($request); + $this->rssFeedForm = $rssFeedFormDataHandler->getForm(); + $this->rssFeedForm->handleRequest($request); - if ($accountForm->get('submit')->isClicked() && $accountForm->isValid()) { - $this->handleAccountFormSubmit($accountFormDataHandler, $accountForm); + if ($this->accountForm->get('submit')->isClicked() && $this->accountForm->isValid()) { + return $this->handleAccountFormSubmit($accountFormDataHandler); } - if ($customerSyncForm->get('submit')->isClicked() && $customerSyncForm->isValid()) { - $tab = 'sync'; - $this->handleCustomerSyncFormSubmit($customerSyncFormDataHandler, $customerSyncForm); - } + if ($this->customerSyncForm->get('submit')->isClicked() && $this->customerSyncForm->isValid()) { + $this->tab = 'sync'; - if ($abandonedCartForm->get('submit')->isClicked() && $abandonedCartForm->isValid()) { - $tab = 'cart'; - $this->handleAbandonedCartFormSubmit($abandonedCartFormDataHandler, $abandonedCartForm); + return $this->handleCustomerSyncFormSubmit($customerSyncFormDataHandler); } - if ($rssFeedForm->get('submit')->isClicked() && $rssFeedForm->isValid()) { - $tab = 'rss'; - $this->handleRssFeedFormSubmit($rssFeedFormDataHandler, $rssFeedForm); + if ($this->abandonedCartForm->get('submit')->isClicked() && $this->abandonedCartForm->isValid()) { + $this->tab = 'cart'; + + return $this->handleAbandonedCartFormSubmit($abandonedCartFormDataHandler); } - // Allow to access settings only if account is connected. - if (!$isAccountConnected) { - return $this->render('@Modules/smailyforprestashop/views/templates/admin/configuration.html.twig', [ - 'accountConfigurationForm' => $accountForm->createView(), - 'accountConnected' => false, - 'tab' => $tab, - 'jsVariables' => [], - ]); + if ($this->rssFeedForm->get('submit')->isClicked() && $this->rssFeedForm->isValid()) { + $this->tab = 'rss'; + + return $this->handleRssFeedFormSubmit($rssFeedFormDataHandler); } - return $this->render('@Modules/smailyforprestashop/views/templates/admin/configuration.html.twig', [ - 'accountConfigurationForm' => $accountForm->createView(), - 'customerSyncForm' => $customerSyncForm->createView(), - 'abandonedCartForm' => $abandonedCartForm->createView(), - 'rssFeedForm' => $rssFeedForm->createView(), - 'accountConnected' => true, - 'tab' => $tab, - 'jsVariables' => [ - 'rssBaseURL' => \Context::getContext()->link->getModuleLink('smailyforprestashop', 'SmailyRssFeed'), - ], - ]); + return $this->renderForms(); } - private function handleAccountFormSubmit(FormHandlerInterface $formHandler, FormInterface $form) + private function handleAccountFormSubmit(FormHandlerInterface $formHandler): Response { - $errors = $formHandler->save($form->getData()); + $errors = $formHandler->save($this->accountForm->getData()); if (empty($errors)) { $this->addFlash('success', $this->trans('Connected with Smaily account.', 'Modules.Smailyforprestashop.Admin')); - return $this->redirectToRoute('smailyforprestashop_module_configuration'); + return $this->renderForms(); } $this->flashErrors($errors); + + return $this->renderForms(); } - private function handleCustomerSyncFormSubmit(FormHandlerInterface $formHandler, FormInterface $form) + private function handleCustomerSyncFormSubmit(FormHandlerInterface $formHandler): Response { - $formData = $form->getData(); + $formData = $this->customerSyncForm->getData(); $errors = $formHandler->save($formData); if (empty($errors)) { @@ -135,35 +144,69 @@ private function handleCustomerSyncFormSubmit(FormHandlerInterface $formHandler, ); } - return $this->redirectToRoute('smailyforprestashop_module_configuration'); + return $this->renderForms(); } $this->flashErrors($errors); + + return $this->renderForms(); } - private function handleAbandonedCartFormSubmit(FormHandlerInterface $formHandler, FormInterface $form) + private function handleAbandonedCartFormSubmit(FormHandlerInterface $formHandler): Response { - $errors = $formHandler->save($form->getData()); + $errors = $formHandler->save($this->abandonedCartForm->getData()); if (empty($errors)) { $this->addFlash('success', $this->trans('Configuration saved.', 'Modules.Smailyforprestashop.Admin')); - return $this->redirectToRoute('smailyforprestashop_module_configuration'); + return $this->renderForms(); } $this->flashErrors($errors); + + return $this->renderForms(); } - private function handleRssFeedFormSubmit(FormHandlerInterface $formHandler, FormInterface $form) + private function handleRssFeedFormSubmit(FormHandlerInterface $formHandler): Response { - $errors = $formHandler->save($form->getData()); + $errors = $formHandler->save($this->rssFeedForm->getData()); if (empty($errors)) { $this->addFlash('success', $this->trans('RSS-feed URL updated.', 'Modules.Smailyforprestashop.Admin')); - return $this->redirectToRoute('smailyforprestashop_module_configuration'); + return $this->renderForms(); } $this->flashErrors($errors); + + return $this->renderForms(); + } + + private function renderForms(): Response + { + $configurationService = $this->get('prestashop.adapter.legacy.configuration'); + $isAccountConnected = $configurationService->get('SMAILY_SUBDOMAIN') !== ''; + + // Allow to access settings only if account is connected. + if (!$isAccountConnected) { + return $this->render('@Modules/smailyforprestashop/views/templates/admin/configuration.html.twig', [ + 'accountConfigurationForm' => $this->accountForm->createView(), + 'accountConnected' => false, + 'tab' => $this->tab, + 'jsVariables' => [], + ]); + } + + return $this->render('@Modules/smailyforprestashop/views/templates/admin/configuration.html.twig', [ + 'accountConfigurationForm' => $this->accountForm->createView(), + 'customerSyncForm' => $this->customerSyncForm->createView(), + 'abandonedCartForm' => $this->abandonedCartForm->createView(), + 'rssFeedForm' => $this->rssFeedForm->createView(), + 'accountConnected' => true, + 'tab' => $this->tab, + 'jsVariables' => [ + 'rssBaseURL' => \Context::getContext()->link->getModuleLink('smailyforprestashop', 'SmailyRssFeed'), + ], + ]); } } From 7ca016a8cf658493c6da29c183a9b9171bf9d164 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Mon, 6 May 2024 16:27:14 +0300 Subject: [PATCH 080/114] Dump optimized autoload --- src/vendor/composer/autoload_classmap.php | 1097 +++++++++++++++++++++ src/vendor/composer/autoload_static.php | 1097 +++++++++++++++++++++ 2 files changed, 2194 insertions(+) diff --git a/src/vendor/composer/autoload_classmap.php b/src/vendor/composer/autoload_classmap.php index 1d1b834..75ef56c 100644 --- a/src/vendor/composer/autoload_classmap.php +++ b/src/vendor/composer/autoload_classmap.php @@ -9,8 +9,877 @@ 'Attribute' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Attribute.php', 'CURLStringFile' => $vendorDir . '/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php', 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php', + 'Composer\\Pcre\\MatchAllResult' => $vendorDir . '/composer/pcre/src/MatchAllResult.php', + 'Composer\\Pcre\\MatchAllStrictGroupsResult' => $vendorDir . '/composer/pcre/src/MatchAllStrictGroupsResult.php', + 'Composer\\Pcre\\MatchAllWithOffsetsResult' => $vendorDir . '/composer/pcre/src/MatchAllWithOffsetsResult.php', + 'Composer\\Pcre\\MatchResult' => $vendorDir . '/composer/pcre/src/MatchResult.php', + 'Composer\\Pcre\\MatchStrictGroupsResult' => $vendorDir . '/composer/pcre/src/MatchStrictGroupsResult.php', + 'Composer\\Pcre\\MatchWithOffsetsResult' => $vendorDir . '/composer/pcre/src/MatchWithOffsetsResult.php', + 'Composer\\Pcre\\PcreException' => $vendorDir . '/composer/pcre/src/PcreException.php', + 'Composer\\Pcre\\Preg' => $vendorDir . '/composer/pcre/src/Preg.php', + 'Composer\\Pcre\\Regex' => $vendorDir . '/composer/pcre/src/Regex.php', + 'Composer\\Pcre\\ReplaceResult' => $vendorDir . '/composer/pcre/src/ReplaceResult.php', + 'Composer\\Pcre\\UnexpectedNullMatchException' => $vendorDir . '/composer/pcre/src/UnexpectedNullMatchException.php', + 'Composer\\Semver\\Comparator' => $vendorDir . '/composer/semver/src/Comparator.php', + 'Composer\\Semver\\CompilingMatcher' => $vendorDir . '/composer/semver/src/CompilingMatcher.php', + 'Composer\\Semver\\Constraint\\Bound' => $vendorDir . '/composer/semver/src/Constraint/Bound.php', + 'Composer\\Semver\\Constraint\\Constraint' => $vendorDir . '/composer/semver/src/Constraint/Constraint.php', + 'Composer\\Semver\\Constraint\\ConstraintInterface' => $vendorDir . '/composer/semver/src/Constraint/ConstraintInterface.php', + 'Composer\\Semver\\Constraint\\MatchAllConstraint' => $vendorDir . '/composer/semver/src/Constraint/MatchAllConstraint.php', + 'Composer\\Semver\\Constraint\\MatchNoneConstraint' => $vendorDir . '/composer/semver/src/Constraint/MatchNoneConstraint.php', + 'Composer\\Semver\\Constraint\\MultiConstraint' => $vendorDir . '/composer/semver/src/Constraint/MultiConstraint.php', + 'Composer\\Semver\\Interval' => $vendorDir . '/composer/semver/src/Interval.php', + 'Composer\\Semver\\Intervals' => $vendorDir . '/composer/semver/src/Intervals.php', + 'Composer\\Semver\\Semver' => $vendorDir . '/composer/semver/src/Semver.php', + 'Composer\\Semver\\VersionParser' => $vendorDir . '/composer/semver/src/VersionParser.php', + 'Composer\\XdebugHandler\\PhpConfig' => $vendorDir . '/composer/xdebug-handler/src/PhpConfig.php', + 'Composer\\XdebugHandler\\Process' => $vendorDir . '/composer/xdebug-handler/src/Process.php', + 'Composer\\XdebugHandler\\Status' => $vendorDir . '/composer/xdebug-handler/src/Status.php', + 'Composer\\XdebugHandler\\XdebugHandler' => $vendorDir . '/composer/xdebug-handler/src/XdebugHandler.php', 'Normalizer' => $vendorDir . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php', + 'PhpCsFixer\\AbstractDoctrineAnnotationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/AbstractDoctrineAnnotationFixer.php', + 'PhpCsFixer\\AbstractFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/AbstractFixer.php', + 'PhpCsFixer\\AbstractFopenFlagFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/AbstractFopenFlagFixer.php', + 'PhpCsFixer\\AbstractFunctionReferenceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/AbstractFunctionReferenceFixer.php', + 'PhpCsFixer\\AbstractNoUselessElseFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/AbstractNoUselessElseFixer.php', + 'PhpCsFixer\\AbstractPhpdocToTypeDeclarationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/AbstractPhpdocToTypeDeclarationFixer.php', + 'PhpCsFixer\\AbstractPhpdocTypesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/AbstractPhpdocTypesFixer.php', + 'PhpCsFixer\\AbstractProxyFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/AbstractProxyFixer.php', + 'PhpCsFixer\\Cache\\Cache' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/Cache.php', + 'PhpCsFixer\\Cache\\CacheInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/CacheInterface.php', + 'PhpCsFixer\\Cache\\CacheManagerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/CacheManagerInterface.php', + 'PhpCsFixer\\Cache\\Directory' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/Directory.php', + 'PhpCsFixer\\Cache\\DirectoryInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/DirectoryInterface.php', + 'PhpCsFixer\\Cache\\FileCacheManager' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/FileCacheManager.php', + 'PhpCsFixer\\Cache\\FileHandler' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/FileHandler.php', + 'PhpCsFixer\\Cache\\FileHandlerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/FileHandlerInterface.php', + 'PhpCsFixer\\Cache\\NullCacheManager' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/NullCacheManager.php', + 'PhpCsFixer\\Cache\\Signature' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/Signature.php', + 'PhpCsFixer\\Cache\\SignatureInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/SignatureInterface.php', + 'PhpCsFixer\\Config' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Config.php', + 'PhpCsFixer\\ConfigInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/ConfigInterface.php', + 'PhpCsFixer\\ConfigurationException\\InvalidConfigurationException' => $vendorDir . '/friendsofphp/php-cs-fixer/src/ConfigurationException/InvalidConfigurationException.php', + 'PhpCsFixer\\ConfigurationException\\InvalidFixerConfigurationException' => $vendorDir . '/friendsofphp/php-cs-fixer/src/ConfigurationException/InvalidFixerConfigurationException.php', + 'PhpCsFixer\\ConfigurationException\\InvalidForEnvFixerConfigurationException' => $vendorDir . '/friendsofphp/php-cs-fixer/src/ConfigurationException/InvalidForEnvFixerConfigurationException.php', + 'PhpCsFixer\\ConfigurationException\\RequiredFixerConfigurationException' => $vendorDir . '/friendsofphp/php-cs-fixer/src/ConfigurationException/RequiredFixerConfigurationException.php', + 'PhpCsFixer\\Console\\Application' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Application.php', + 'PhpCsFixer\\Console\\Command\\CheckCommand' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Command/CheckCommand.php', + 'PhpCsFixer\\Console\\Command\\DescribeCommand' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Command/DescribeCommand.php', + 'PhpCsFixer\\Console\\Command\\DescribeNameNotFoundException' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Command/DescribeNameNotFoundException.php', + 'PhpCsFixer\\Console\\Command\\DocumentationCommand' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Command/DocumentationCommand.php', + 'PhpCsFixer\\Console\\Command\\FixCommand' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Command/FixCommand.php', + 'PhpCsFixer\\Console\\Command\\FixCommandExitStatusCalculator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Command/FixCommandExitStatusCalculator.php', + 'PhpCsFixer\\Console\\Command\\HelpCommand' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Command/HelpCommand.php', + 'PhpCsFixer\\Console\\Command\\ListFilesCommand' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Command/ListFilesCommand.php', + 'PhpCsFixer\\Console\\Command\\ListSetsCommand' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Command/ListSetsCommand.php', + 'PhpCsFixer\\Console\\Command\\SelfUpdateCommand' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Command/SelfUpdateCommand.php', + 'PhpCsFixer\\Console\\ConfigurationResolver' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/ConfigurationResolver.php', + 'PhpCsFixer\\Console\\Output\\ErrorOutput' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Output/ErrorOutput.php', + 'PhpCsFixer\\Console\\Output\\OutputContext' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Output/OutputContext.php', + 'PhpCsFixer\\Console\\Output\\Progress\\DotsOutput' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/DotsOutput.php', + 'PhpCsFixer\\Console\\Output\\Progress\\NullOutput' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/NullOutput.php', + 'PhpCsFixer\\Console\\Output\\Progress\\PercentageBarOutput' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/PercentageBarOutput.php', + 'PhpCsFixer\\Console\\Output\\Progress\\ProgressOutputFactory' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputFactory.php', + 'PhpCsFixer\\Console\\Output\\Progress\\ProgressOutputInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputInterface.php', + 'PhpCsFixer\\Console\\Output\\Progress\\ProgressOutputType' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputType.php', + 'PhpCsFixer\\Console\\Report\\FixReport\\CheckstyleReporter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/CheckstyleReporter.php', + 'PhpCsFixer\\Console\\Report\\FixReport\\GitlabReporter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/GitlabReporter.php', + 'PhpCsFixer\\Console\\Report\\FixReport\\JsonReporter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/JsonReporter.php', + 'PhpCsFixer\\Console\\Report\\FixReport\\JunitReporter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/JunitReporter.php', + 'PhpCsFixer\\Console\\Report\\FixReport\\ReportSummary' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/ReportSummary.php', + 'PhpCsFixer\\Console\\Report\\FixReport\\ReporterFactory' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/ReporterFactory.php', + 'PhpCsFixer\\Console\\Report\\FixReport\\ReporterInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/ReporterInterface.php', + 'PhpCsFixer\\Console\\Report\\FixReport\\TextReporter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/TextReporter.php', + 'PhpCsFixer\\Console\\Report\\FixReport\\XmlReporter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/XmlReporter.php', + 'PhpCsFixer\\Console\\Report\\ListSetsReport\\JsonReporter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/JsonReporter.php', + 'PhpCsFixer\\Console\\Report\\ListSetsReport\\ReportSummary' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/ReportSummary.php', + 'PhpCsFixer\\Console\\Report\\ListSetsReport\\ReporterFactory' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/ReporterFactory.php', + 'PhpCsFixer\\Console\\Report\\ListSetsReport\\ReporterInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/ReporterInterface.php', + 'PhpCsFixer\\Console\\Report\\ListSetsReport\\TextReporter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/TextReporter.php', + 'PhpCsFixer\\Console\\SelfUpdate\\GithubClient' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/GithubClient.php', + 'PhpCsFixer\\Console\\SelfUpdate\\GithubClientInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/GithubClientInterface.php', + 'PhpCsFixer\\Console\\SelfUpdate\\NewVersionChecker' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/NewVersionChecker.php', + 'PhpCsFixer\\Console\\SelfUpdate\\NewVersionCheckerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/NewVersionCheckerInterface.php', + 'PhpCsFixer\\Console\\WarningsDetector' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/WarningsDetector.php', + 'PhpCsFixer\\Differ\\DiffConsoleFormatter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Differ/DiffConsoleFormatter.php', + 'PhpCsFixer\\Differ\\DifferInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Differ/DifferInterface.php', + 'PhpCsFixer\\Differ\\FullDiffer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Differ/FullDiffer.php', + 'PhpCsFixer\\Differ\\NullDiffer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Differ/NullDiffer.php', + 'PhpCsFixer\\Differ\\UnifiedDiffer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Differ/UnifiedDiffer.php', + 'PhpCsFixer\\DocBlock\\Annotation' => $vendorDir . '/friendsofphp/php-cs-fixer/src/DocBlock/Annotation.php', + 'PhpCsFixer\\DocBlock\\DocBlock' => $vendorDir . '/friendsofphp/php-cs-fixer/src/DocBlock/DocBlock.php', + 'PhpCsFixer\\DocBlock\\Line' => $vendorDir . '/friendsofphp/php-cs-fixer/src/DocBlock/Line.php', + 'PhpCsFixer\\DocBlock\\ShortDescription' => $vendorDir . '/friendsofphp/php-cs-fixer/src/DocBlock/ShortDescription.php', + 'PhpCsFixer\\DocBlock\\Tag' => $vendorDir . '/friendsofphp/php-cs-fixer/src/DocBlock/Tag.php', + 'PhpCsFixer\\DocBlock\\TagComparator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/DocBlock/TagComparator.php', + 'PhpCsFixer\\DocBlock\\TypeExpression' => $vendorDir . '/friendsofphp/php-cs-fixer/src/DocBlock/TypeExpression.php', + 'PhpCsFixer\\Doctrine\\Annotation\\DocLexer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Doctrine/Annotation/DocLexer.php', + 'PhpCsFixer\\Doctrine\\Annotation\\Token' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Doctrine/Annotation/Token.php', + 'PhpCsFixer\\Doctrine\\Annotation\\Tokens' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Doctrine/Annotation/Tokens.php', + 'PhpCsFixer\\Documentation\\DocumentationLocator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Documentation/DocumentationLocator.php', + 'PhpCsFixer\\Documentation\\FixerDocumentGenerator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Documentation/FixerDocumentGenerator.php', + 'PhpCsFixer\\Documentation\\RstUtils' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Documentation/RstUtils.php', + 'PhpCsFixer\\Documentation\\RuleSetDocumentationGenerator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Documentation/RuleSetDocumentationGenerator.php', + 'PhpCsFixer\\Error\\Error' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Error/Error.php', + 'PhpCsFixer\\Error\\ErrorsManager' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Error/ErrorsManager.php', + 'PhpCsFixer\\ExecutorWithoutErrorHandler' => $vendorDir . '/friendsofphp/php-cs-fixer/src/ExecutorWithoutErrorHandler.php', + 'PhpCsFixer\\ExecutorWithoutErrorHandlerException' => $vendorDir . '/friendsofphp/php-cs-fixer/src/ExecutorWithoutErrorHandlerException.php', + 'PhpCsFixer\\FileReader' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FileReader.php', + 'PhpCsFixer\\FileRemoval' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FileRemoval.php', + 'PhpCsFixer\\Finder' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Finder.php', + 'PhpCsFixer\\FixerConfiguration\\AliasedFixerOption' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/AliasedFixerOption.php', + 'PhpCsFixer\\FixerConfiguration\\AliasedFixerOptionBuilder' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/AliasedFixerOptionBuilder.php', + 'PhpCsFixer\\FixerConfiguration\\AllowedValueSubset' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/AllowedValueSubset.php', + 'PhpCsFixer\\FixerConfiguration\\DeprecatedFixerOption' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/DeprecatedFixerOption.php', + 'PhpCsFixer\\FixerConfiguration\\DeprecatedFixerOptionInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/DeprecatedFixerOptionInterface.php', + 'PhpCsFixer\\FixerConfiguration\\FixerConfigurationResolver' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerConfigurationResolver.php', + 'PhpCsFixer\\FixerConfiguration\\FixerConfigurationResolverInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerConfigurationResolverInterface.php', + 'PhpCsFixer\\FixerConfiguration\\FixerOption' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerOption.php', + 'PhpCsFixer\\FixerConfiguration\\FixerOptionBuilder' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerOptionBuilder.php', + 'PhpCsFixer\\FixerConfiguration\\FixerOptionInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerOptionInterface.php', + 'PhpCsFixer\\FixerConfiguration\\FixerOptionSorter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerOptionSorter.php', + 'PhpCsFixer\\FixerConfiguration\\InvalidOptionsForEnvException' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/InvalidOptionsForEnvException.php', + 'PhpCsFixer\\FixerDefinition\\CodeSample' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/CodeSample.php', + 'PhpCsFixer\\FixerDefinition\\CodeSampleInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/CodeSampleInterface.php', + 'PhpCsFixer\\FixerDefinition\\FileSpecificCodeSample' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/FileSpecificCodeSample.php', + 'PhpCsFixer\\FixerDefinition\\FileSpecificCodeSampleInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/FileSpecificCodeSampleInterface.php', + 'PhpCsFixer\\FixerDefinition\\FixerDefinition' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/FixerDefinition.php', + 'PhpCsFixer\\FixerDefinition\\FixerDefinitionInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/FixerDefinitionInterface.php', + 'PhpCsFixer\\FixerDefinition\\VersionSpecificCodeSample' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecificCodeSample.php', + 'PhpCsFixer\\FixerDefinition\\VersionSpecificCodeSampleInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecificCodeSampleInterface.php', + 'PhpCsFixer\\FixerDefinition\\VersionSpecification' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecification.php', + 'PhpCsFixer\\FixerDefinition\\VersionSpecificationInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecificationInterface.php', + 'PhpCsFixer\\FixerFactory' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerFactory.php', + 'PhpCsFixer\\FixerFileProcessedEvent' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerFileProcessedEvent.php', + 'PhpCsFixer\\FixerNameValidator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerNameValidator.php', + 'PhpCsFixer\\Fixer\\AbstractIncrementOperatorFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/AbstractIncrementOperatorFixer.php', + 'PhpCsFixer\\Fixer\\AbstractPhpUnitFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/AbstractPhpUnitFixer.php', + 'PhpCsFixer\\Fixer\\AbstractShortOperatorFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/AbstractShortOperatorFixer.php', + 'PhpCsFixer\\Fixer\\Alias\\ArrayPushFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/ArrayPushFixer.php', + 'PhpCsFixer\\Fixer\\Alias\\BacktickToShellExecFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/BacktickToShellExecFixer.php', + 'PhpCsFixer\\Fixer\\Alias\\EregToPregFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/EregToPregFixer.php', + 'PhpCsFixer\\Fixer\\Alias\\MbStrFunctionsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/MbStrFunctionsFixer.php', + 'PhpCsFixer\\Fixer\\Alias\\ModernizeStrposFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/ModernizeStrposFixer.php', + 'PhpCsFixer\\Fixer\\Alias\\NoAliasFunctionsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/NoAliasFunctionsFixer.php', + 'PhpCsFixer\\Fixer\\Alias\\NoAliasLanguageConstructCallFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/NoAliasLanguageConstructCallFixer.php', + 'PhpCsFixer\\Fixer\\Alias\\NoMixedEchoPrintFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/NoMixedEchoPrintFixer.php', + 'PhpCsFixer\\Fixer\\Alias\\PowToExponentiationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/PowToExponentiationFixer.php', + 'PhpCsFixer\\Fixer\\Alias\\RandomApiMigrationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/RandomApiMigrationFixer.php', + 'PhpCsFixer\\Fixer\\Alias\\SetTypeToCastFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/SetTypeToCastFixer.php', + 'PhpCsFixer\\Fixer\\ArrayNotation\\ArraySyntaxFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/ArraySyntaxFixer.php', + 'PhpCsFixer\\Fixer\\ArrayNotation\\NoMultilineWhitespaceAroundDoubleArrowFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoMultilineWhitespaceAroundDoubleArrowFixer.php', + 'PhpCsFixer\\Fixer\\ArrayNotation\\NoTrailingCommaInSinglelineArrayFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoTrailingCommaInSinglelineArrayFixer.php', + 'PhpCsFixer\\Fixer\\ArrayNotation\\NoWhitespaceBeforeCommaInArrayFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoWhitespaceBeforeCommaInArrayFixer.php', + 'PhpCsFixer\\Fixer\\ArrayNotation\\NormalizeIndexBraceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NormalizeIndexBraceFixer.php', + 'PhpCsFixer\\Fixer\\ArrayNotation\\ReturnToYieldFromFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/ReturnToYieldFromFixer.php', + 'PhpCsFixer\\Fixer\\ArrayNotation\\TrimArraySpacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/TrimArraySpacesFixer.php', + 'PhpCsFixer\\Fixer\\ArrayNotation\\WhitespaceAfterCommaInArrayFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/WhitespaceAfterCommaInArrayFixer.php', + 'PhpCsFixer\\Fixer\\ArrayNotation\\YieldFromArrayToYieldsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/YieldFromArrayToYieldsFixer.php', + 'PhpCsFixer\\Fixer\\AttributeNotation\\AttributeEmptyParenthesesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/AttributeNotation/AttributeEmptyParenthesesFixer.php', + 'PhpCsFixer\\Fixer\\Basic\\BracesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/BracesFixer.php', + 'PhpCsFixer\\Fixer\\Basic\\BracesPositionFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/BracesPositionFixer.php', + 'PhpCsFixer\\Fixer\\Basic\\CurlyBracesPositionFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/CurlyBracesPositionFixer.php', + 'PhpCsFixer\\Fixer\\Basic\\EncodingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/EncodingFixer.php', + 'PhpCsFixer\\Fixer\\Basic\\NoMultipleStatementsPerLineFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/NoMultipleStatementsPerLineFixer.php', + 'PhpCsFixer\\Fixer\\Basic\\NoTrailingCommaInSinglelineFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/NoTrailingCommaInSinglelineFixer.php', + 'PhpCsFixer\\Fixer\\Basic\\NonPrintableCharacterFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/NonPrintableCharacterFixer.php', + 'PhpCsFixer\\Fixer\\Basic\\NumericLiteralSeparatorFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/NumericLiteralSeparatorFixer.php', + 'PhpCsFixer\\Fixer\\Basic\\OctalNotationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/OctalNotationFixer.php', + 'PhpCsFixer\\Fixer\\Basic\\PsrAutoloadingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/PsrAutoloadingFixer.php', + 'PhpCsFixer\\Fixer\\Basic\\SingleLineEmptyBodyFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/SingleLineEmptyBodyFixer.php', + 'PhpCsFixer\\Fixer\\Casing\\ClassReferenceNameCasingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/ClassReferenceNameCasingFixer.php', + 'PhpCsFixer\\Fixer\\Casing\\ConstantCaseFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/ConstantCaseFixer.php', + 'PhpCsFixer\\Fixer\\Casing\\IntegerLiteralCaseFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/IntegerLiteralCaseFixer.php', + 'PhpCsFixer\\Fixer\\Casing\\LowercaseKeywordsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/LowercaseKeywordsFixer.php', + 'PhpCsFixer\\Fixer\\Casing\\LowercaseStaticReferenceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/LowercaseStaticReferenceFixer.php', + 'PhpCsFixer\\Fixer\\Casing\\MagicConstantCasingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/MagicConstantCasingFixer.php', + 'PhpCsFixer\\Fixer\\Casing\\MagicMethodCasingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/MagicMethodCasingFixer.php', + 'PhpCsFixer\\Fixer\\Casing\\NativeFunctionCasingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/NativeFunctionCasingFixer.php', + 'PhpCsFixer\\Fixer\\Casing\\NativeFunctionTypeDeclarationCasingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/NativeFunctionTypeDeclarationCasingFixer.php', + 'PhpCsFixer\\Fixer\\Casing\\NativeTypeDeclarationCasingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/NativeTypeDeclarationCasingFixer.php', + 'PhpCsFixer\\Fixer\\CastNotation\\CastSpacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/CastSpacesFixer.php', + 'PhpCsFixer\\Fixer\\CastNotation\\LowercaseCastFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/LowercaseCastFixer.php', + 'PhpCsFixer\\Fixer\\CastNotation\\ModernizeTypesCastingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/ModernizeTypesCastingFixer.php', + 'PhpCsFixer\\Fixer\\CastNotation\\NoShortBoolCastFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/NoShortBoolCastFixer.php', + 'PhpCsFixer\\Fixer\\CastNotation\\NoUnsetCastFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/NoUnsetCastFixer.php', + 'PhpCsFixer\\Fixer\\CastNotation\\ShortScalarCastFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/ShortScalarCastFixer.php', + 'PhpCsFixer\\Fixer\\ClassNotation\\ClassAttributesSeparationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ClassAttributesSeparationFixer.php', + 'PhpCsFixer\\Fixer\\ClassNotation\\ClassDefinitionFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ClassDefinitionFixer.php', + 'PhpCsFixer\\Fixer\\ClassNotation\\FinalClassFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/FinalClassFixer.php', + 'PhpCsFixer\\Fixer\\ClassNotation\\FinalInternalClassFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/FinalInternalClassFixer.php', + 'PhpCsFixer\\Fixer\\ClassNotation\\FinalPublicMethodForAbstractClassFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/FinalPublicMethodForAbstractClassFixer.php', + 'PhpCsFixer\\Fixer\\ClassNotation\\NoBlankLinesAfterClassOpeningFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoBlankLinesAfterClassOpeningFixer.php', + 'PhpCsFixer\\Fixer\\ClassNotation\\NoNullPropertyInitializationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoNullPropertyInitializationFixer.php', + 'PhpCsFixer\\Fixer\\ClassNotation\\NoPhp4ConstructorFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoPhp4ConstructorFixer.php', + 'PhpCsFixer\\Fixer\\ClassNotation\\NoUnneededFinalMethodFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoUnneededFinalMethodFixer.php', + 'PhpCsFixer\\Fixer\\ClassNotation\\OrderedClassElementsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedClassElementsFixer.php', + 'PhpCsFixer\\Fixer\\ClassNotation\\OrderedInterfacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedInterfacesFixer.php', + 'PhpCsFixer\\Fixer\\ClassNotation\\OrderedTraitsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedTraitsFixer.php', + 'PhpCsFixer\\Fixer\\ClassNotation\\OrderedTypesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedTypesFixer.php', + 'PhpCsFixer\\Fixer\\ClassNotation\\PhpdocReadonlyClassCommentToKeywordFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/PhpdocReadonlyClassCommentToKeywordFixer.php', + 'PhpCsFixer\\Fixer\\ClassNotation\\ProtectedToPrivateFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ProtectedToPrivateFixer.php', + 'PhpCsFixer\\Fixer\\ClassNotation\\SelfAccessorFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SelfAccessorFixer.php', + 'PhpCsFixer\\Fixer\\ClassNotation\\SelfStaticAccessorFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SelfStaticAccessorFixer.php', + 'PhpCsFixer\\Fixer\\ClassNotation\\SingleClassElementPerStatementFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SingleClassElementPerStatementFixer.php', + 'PhpCsFixer\\Fixer\\ClassNotation\\SingleTraitInsertPerStatementFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SingleTraitInsertPerStatementFixer.php', + 'PhpCsFixer\\Fixer\\ClassNotation\\VisibilityRequiredFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/VisibilityRequiredFixer.php', + 'PhpCsFixer\\Fixer\\ClassUsage\\DateTimeImmutableFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassUsage/DateTimeImmutableFixer.php', + 'PhpCsFixer\\Fixer\\Comment\\CommentToPhpdocFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/CommentToPhpdocFixer.php', + 'PhpCsFixer\\Fixer\\Comment\\HeaderCommentFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/HeaderCommentFixer.php', + 'PhpCsFixer\\Fixer\\Comment\\MultilineCommentOpeningClosingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/MultilineCommentOpeningClosingFixer.php', + 'PhpCsFixer\\Fixer\\Comment\\NoEmptyCommentFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/NoEmptyCommentFixer.php', + 'PhpCsFixer\\Fixer\\Comment\\NoTrailingWhitespaceInCommentFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/NoTrailingWhitespaceInCommentFixer.php', + 'PhpCsFixer\\Fixer\\Comment\\SingleLineCommentSpacingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/SingleLineCommentSpacingFixer.php', + 'PhpCsFixer\\Fixer\\Comment\\SingleLineCommentStyleFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/SingleLineCommentStyleFixer.php', + 'PhpCsFixer\\Fixer\\ConfigurableFixerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ConfigurableFixerInterface.php', + 'PhpCsFixer\\Fixer\\ConstantNotation\\NativeConstantInvocationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ConstantNotation/NativeConstantInvocationFixer.php', + 'PhpCsFixer\\Fixer\\ControlStructure\\ControlStructureBracesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/ControlStructureBracesFixer.php', + 'PhpCsFixer\\Fixer\\ControlStructure\\ControlStructureContinuationPositionFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/ControlStructureContinuationPositionFixer.php', + 'PhpCsFixer\\Fixer\\ControlStructure\\ElseifFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/ElseifFixer.php', + 'PhpCsFixer\\Fixer\\ControlStructure\\EmptyLoopBodyFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/EmptyLoopBodyFixer.php', + 'PhpCsFixer\\Fixer\\ControlStructure\\EmptyLoopConditionFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/EmptyLoopConditionFixer.php', + 'PhpCsFixer\\Fixer\\ControlStructure\\IncludeFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/IncludeFixer.php', + 'PhpCsFixer\\Fixer\\ControlStructure\\NoAlternativeSyntaxFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoAlternativeSyntaxFixer.php', + 'PhpCsFixer\\Fixer\\ControlStructure\\NoBreakCommentFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoBreakCommentFixer.php', + 'PhpCsFixer\\Fixer\\ControlStructure\\NoSuperfluousElseifFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoSuperfluousElseifFixer.php', + 'PhpCsFixer\\Fixer\\ControlStructure\\NoTrailingCommaInListCallFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoTrailingCommaInListCallFixer.php', + 'PhpCsFixer\\Fixer\\ControlStructure\\NoUnneededBracesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoUnneededBracesFixer.php', + 'PhpCsFixer\\Fixer\\ControlStructure\\NoUnneededControlParenthesesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoUnneededControlParenthesesFixer.php', + 'PhpCsFixer\\Fixer\\ControlStructure\\NoUnneededCurlyBracesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoUnneededCurlyBracesFixer.php', + 'PhpCsFixer\\Fixer\\ControlStructure\\NoUselessElseFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoUselessElseFixer.php', + 'PhpCsFixer\\Fixer\\ControlStructure\\SimplifiedIfReturnFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/SimplifiedIfReturnFixer.php', + 'PhpCsFixer\\Fixer\\ControlStructure\\SwitchCaseSemicolonToColonFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/SwitchCaseSemicolonToColonFixer.php', + 'PhpCsFixer\\Fixer\\ControlStructure\\SwitchCaseSpaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/SwitchCaseSpaceFixer.php', + 'PhpCsFixer\\Fixer\\ControlStructure\\SwitchContinueToBreakFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/SwitchContinueToBreakFixer.php', + 'PhpCsFixer\\Fixer\\ControlStructure\\TrailingCommaInMultilineFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/TrailingCommaInMultilineFixer.php', + 'PhpCsFixer\\Fixer\\ControlStructure\\YodaStyleFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/YodaStyleFixer.php', + 'PhpCsFixer\\Fixer\\DeprecatedFixerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/DeprecatedFixerInterface.php', + 'PhpCsFixer\\Fixer\\DoctrineAnnotation\\DoctrineAnnotationArrayAssignmentFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationArrayAssignmentFixer.php', + 'PhpCsFixer\\Fixer\\DoctrineAnnotation\\DoctrineAnnotationBracesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationBracesFixer.php', + 'PhpCsFixer\\Fixer\\DoctrineAnnotation\\DoctrineAnnotationIndentationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationIndentationFixer.php', + 'PhpCsFixer\\Fixer\\DoctrineAnnotation\\DoctrineAnnotationSpacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationSpacesFixer.php', + 'PhpCsFixer\\Fixer\\ExperimentalFixerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ExperimentalFixerInterface.php', + 'PhpCsFixer\\Fixer\\FixerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FixerInterface.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\CombineNestedDirnameFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/CombineNestedDirnameFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\DateTimeCreateFromFormatCallFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/DateTimeCreateFromFormatCallFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\FopenFlagOrderFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FopenFlagOrderFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\FopenFlagsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FopenFlagsFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\FunctionDeclarationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FunctionDeclarationFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\FunctionTypehintSpaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FunctionTypehintSpaceFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\ImplodeCallFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/ImplodeCallFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\LambdaNotUsedImportFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/LambdaNotUsedImportFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\MethodArgumentSpaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/MethodArgumentSpaceFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\NativeFunctionInvocationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NativeFunctionInvocationFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\NoSpacesAfterFunctionNameFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoSpacesAfterFunctionNameFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\NoTrailingCommaInSinglelineFunctionCallFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoTrailingCommaInSinglelineFunctionCallFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\NoUnreachableDefaultArgumentValueFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoUnreachableDefaultArgumentValueFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\NoUselessSprintfFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoUselessSprintfFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\NullableTypeDeclarationForDefaultNullValueFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NullableTypeDeclarationForDefaultNullValueFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\PhpdocToParamTypeFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/PhpdocToParamTypeFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\PhpdocToPropertyTypeFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/PhpdocToPropertyTypeFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\PhpdocToReturnTypeFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/PhpdocToReturnTypeFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\RegularCallableCallFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/RegularCallableCallFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\ReturnTypeDeclarationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/ReturnTypeDeclarationFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\SingleLineThrowFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/SingleLineThrowFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\StaticLambdaFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/StaticLambdaFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\UseArrowFunctionsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/UseArrowFunctionsFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\VoidReturnFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/VoidReturnFixer.php', + 'PhpCsFixer\\Fixer\\Import\\FullyQualifiedStrictTypesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Import/FullyQualifiedStrictTypesFixer.php', + 'PhpCsFixer\\Fixer\\Import\\GlobalNamespaceImportFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Import/GlobalNamespaceImportFixer.php', + 'PhpCsFixer\\Fixer\\Import\\GroupImportFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Import/GroupImportFixer.php', + 'PhpCsFixer\\Fixer\\Import\\NoLeadingImportSlashFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Import/NoLeadingImportSlashFixer.php', + 'PhpCsFixer\\Fixer\\Import\\NoUnneededImportAliasFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Import/NoUnneededImportAliasFixer.php', + 'PhpCsFixer\\Fixer\\Import\\NoUnusedImportsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Import/NoUnusedImportsFixer.php', + 'PhpCsFixer\\Fixer\\Import\\OrderedImportsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Import/OrderedImportsFixer.php', + 'PhpCsFixer\\Fixer\\Import\\SingleImportPerStatementFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Import/SingleImportPerStatementFixer.php', + 'PhpCsFixer\\Fixer\\Import\\SingleLineAfterImportsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Import/SingleLineAfterImportsFixer.php', + 'PhpCsFixer\\Fixer\\Indentation' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Indentation.php', + 'PhpCsFixer\\Fixer\\LanguageConstruct\\ClassKeywordFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/ClassKeywordFixer.php', + 'PhpCsFixer\\Fixer\\LanguageConstruct\\ClassKeywordRemoveFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/ClassKeywordRemoveFixer.php', + 'PhpCsFixer\\Fixer\\LanguageConstruct\\CombineConsecutiveIssetsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/CombineConsecutiveIssetsFixer.php', + 'PhpCsFixer\\Fixer\\LanguageConstruct\\CombineConsecutiveUnsetsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/CombineConsecutiveUnsetsFixer.php', + 'PhpCsFixer\\Fixer\\LanguageConstruct\\DeclareEqualNormalizeFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/DeclareEqualNormalizeFixer.php', + 'PhpCsFixer\\Fixer\\LanguageConstruct\\DeclareParenthesesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/DeclareParenthesesFixer.php', + 'PhpCsFixer\\Fixer\\LanguageConstruct\\DirConstantFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/DirConstantFixer.php', + 'PhpCsFixer\\Fixer\\LanguageConstruct\\ErrorSuppressionFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/ErrorSuppressionFixer.php', + 'PhpCsFixer\\Fixer\\LanguageConstruct\\ExplicitIndirectVariableFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/ExplicitIndirectVariableFixer.php', + 'PhpCsFixer\\Fixer\\LanguageConstruct\\FunctionToConstantFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/FunctionToConstantFixer.php', + 'PhpCsFixer\\Fixer\\LanguageConstruct\\GetClassToClassKeywordFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/GetClassToClassKeywordFixer.php', + 'PhpCsFixer\\Fixer\\LanguageConstruct\\IsNullFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/IsNullFixer.php', + 'PhpCsFixer\\Fixer\\LanguageConstruct\\NoUnsetOnPropertyFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/NoUnsetOnPropertyFixer.php', + 'PhpCsFixer\\Fixer\\LanguageConstruct\\NullableTypeDeclarationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/NullableTypeDeclarationFixer.php', + 'PhpCsFixer\\Fixer\\LanguageConstruct\\SingleSpaceAfterConstructFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/SingleSpaceAfterConstructFixer.php', + 'PhpCsFixer\\Fixer\\LanguageConstruct\\SingleSpaceAroundConstructFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/SingleSpaceAroundConstructFixer.php', + 'PhpCsFixer\\Fixer\\ListNotation\\ListSyntaxFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ListNotation/ListSyntaxFixer.php', + 'PhpCsFixer\\Fixer\\NamespaceNotation\\BlankLineAfterNamespaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/BlankLineAfterNamespaceFixer.php', + 'PhpCsFixer\\Fixer\\NamespaceNotation\\BlankLinesBeforeNamespaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/BlankLinesBeforeNamespaceFixer.php', + 'PhpCsFixer\\Fixer\\NamespaceNotation\\CleanNamespaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/CleanNamespaceFixer.php', + 'PhpCsFixer\\Fixer\\NamespaceNotation\\NoBlankLinesBeforeNamespaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/NoBlankLinesBeforeNamespaceFixer.php', + 'PhpCsFixer\\Fixer\\NamespaceNotation\\NoLeadingNamespaceWhitespaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/NoLeadingNamespaceWhitespaceFixer.php', + 'PhpCsFixer\\Fixer\\NamespaceNotation\\SingleBlankLineBeforeNamespaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/SingleBlankLineBeforeNamespaceFixer.php', + 'PhpCsFixer\\Fixer\\Naming\\NoHomoglyphNamesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Naming/NoHomoglyphNamesFixer.php', + 'PhpCsFixer\\Fixer\\Operator\\AssignNullCoalescingToCoalesceEqualFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/AssignNullCoalescingToCoalesceEqualFixer.php', + 'PhpCsFixer\\Fixer\\Operator\\BinaryOperatorSpacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/BinaryOperatorSpacesFixer.php', + 'PhpCsFixer\\Fixer\\Operator\\ConcatSpaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/ConcatSpaceFixer.php', + 'PhpCsFixer\\Fixer\\Operator\\IncrementStyleFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/IncrementStyleFixer.php', + 'PhpCsFixer\\Fixer\\Operator\\LogicalOperatorsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/LogicalOperatorsFixer.php', + 'PhpCsFixer\\Fixer\\Operator\\LongToShorthandOperatorFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/LongToShorthandOperatorFixer.php', + 'PhpCsFixer\\Fixer\\Operator\\NewWithBracesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NewWithBracesFixer.php', + 'PhpCsFixer\\Fixer\\Operator\\NewWithParenthesesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NewWithParenthesesFixer.php', + 'PhpCsFixer\\Fixer\\Operator\\NoSpaceAroundDoubleColonFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NoSpaceAroundDoubleColonFixer.php', + 'PhpCsFixer\\Fixer\\Operator\\NoUselessConcatOperatorFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NoUselessConcatOperatorFixer.php', + 'PhpCsFixer\\Fixer\\Operator\\NoUselessNullsafeOperatorFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NoUselessNullsafeOperatorFixer.php', + 'PhpCsFixer\\Fixer\\Operator\\NotOperatorWithSpaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NotOperatorWithSpaceFixer.php', + 'PhpCsFixer\\Fixer\\Operator\\NotOperatorWithSuccessorSpaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NotOperatorWithSuccessorSpaceFixer.php', + 'PhpCsFixer\\Fixer\\Operator\\ObjectOperatorWithoutWhitespaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/ObjectOperatorWithoutWhitespaceFixer.php', + 'PhpCsFixer\\Fixer\\Operator\\OperatorLinebreakFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/OperatorLinebreakFixer.php', + 'PhpCsFixer\\Fixer\\Operator\\StandardizeIncrementFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/StandardizeIncrementFixer.php', + 'PhpCsFixer\\Fixer\\Operator\\StandardizeNotEqualsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/StandardizeNotEqualsFixer.php', + 'PhpCsFixer\\Fixer\\Operator\\TernaryOperatorSpacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/TernaryOperatorSpacesFixer.php', + 'PhpCsFixer\\Fixer\\Operator\\TernaryToElvisOperatorFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/TernaryToElvisOperatorFixer.php', + 'PhpCsFixer\\Fixer\\Operator\\TernaryToNullCoalescingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/TernaryToNullCoalescingFixer.php', + 'PhpCsFixer\\Fixer\\Operator\\UnaryOperatorSpacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/UnaryOperatorSpacesFixer.php', + 'PhpCsFixer\\Fixer\\PhpTag\\BlankLineAfterOpeningTagFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/BlankLineAfterOpeningTagFixer.php', + 'PhpCsFixer\\Fixer\\PhpTag\\EchoTagSyntaxFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/EchoTagSyntaxFixer.php', + 'PhpCsFixer\\Fixer\\PhpTag\\FullOpeningTagFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/FullOpeningTagFixer.php', + 'PhpCsFixer\\Fixer\\PhpTag\\LinebreakAfterOpeningTagFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/LinebreakAfterOpeningTagFixer.php', + 'PhpCsFixer\\Fixer\\PhpTag\\NoClosingTagFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/NoClosingTagFixer.php', + 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitConstructFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitConstructFixer.php', + 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDataProviderNameFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderNameFixer.php', + 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDataProviderReturnTypeFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderReturnTypeFixer.php', + 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDataProviderStaticFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderStaticFixer.php', + 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDedicateAssertFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDedicateAssertFixer.php', + 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDedicateAssertInternalTypeFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDedicateAssertInternalTypeFixer.php', + 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitExpectationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitExpectationFixer.php', + 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitFqcnAnnotationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitFqcnAnnotationFixer.php', + 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitInternalClassFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitInternalClassFixer.php', + 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitMethodCasingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitMethodCasingFixer.php', + 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitMockFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitMockFixer.php', + 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitMockShortWillReturnFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitMockShortWillReturnFixer.php', + 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitNamespacedFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitNamespacedFixer.php', + 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitNoExpectationAnnotationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitNoExpectationAnnotationFixer.php', + 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitSetUpTearDownVisibilityFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitSetUpTearDownVisibilityFixer.php', + 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitSizeClassFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitSizeClassFixer.php', + 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitStrictFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitStrictFixer.php', + 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitTargetVersion' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTargetVersion.php', + 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitTestAnnotationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTestAnnotationFixer.php', + 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitTestCaseStaticMethodCallsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTestCaseStaticMethodCallsFixer.php', + 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitTestClassRequiresCoversFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTestClassRequiresCoversFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\AlignMultilineCommentFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/AlignMultilineCommentFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\GeneralPhpdocAnnotationRemoveFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/GeneralPhpdocAnnotationRemoveFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\GeneralPhpdocTagRenameFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/GeneralPhpdocTagRenameFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\NoBlankLinesAfterPhpdocFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/NoBlankLinesAfterPhpdocFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\NoEmptyPhpdocFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/NoEmptyPhpdocFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\NoSuperfluousPhpdocTagsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/NoSuperfluousPhpdocTagsFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocAddMissingParamAnnotationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocAddMissingParamAnnotationFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocAlignFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocAlignFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocAnnotationWithoutDotFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocAnnotationWithoutDotFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocArrayTypeFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocArrayTypeFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocIndentFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocIndentFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocInlineTagNormalizerFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocInlineTagNormalizerFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocLineSpanFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocLineSpanFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocListTypeFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocListTypeFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoAccessFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoAccessFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoAliasTagFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoAliasTagFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoEmptyReturnFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoEmptyReturnFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoPackageFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoPackageFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoUselessInheritdocFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoUselessInheritdocFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocOrderByValueFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocOrderByValueFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocOrderFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocOrderFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocParamOrderFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocParamOrderFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocReturnSelfReferenceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocReturnSelfReferenceFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocScalarFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocScalarFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocSeparationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocSeparationFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocSingleLineVarSpacingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocSingleLineVarSpacingFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocSummaryFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocSummaryFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTagCasingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTagCasingFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTagTypeFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTagTypeFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocToCommentFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocToCommentFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTrimConsecutiveBlankLineSeparationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTrimConsecutiveBlankLineSeparationFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTrimFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTrimFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTypesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTypesFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTypesOrderFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTypesOrderFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocVarAnnotationCorrectOrderFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocVarAnnotationCorrectOrderFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocVarWithoutNameFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocVarWithoutNameFixer.php', + 'PhpCsFixer\\Fixer\\ReturnNotation\\NoUselessReturnFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ReturnNotation/NoUselessReturnFixer.php', + 'PhpCsFixer\\Fixer\\ReturnNotation\\ReturnAssignmentFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ReturnNotation/ReturnAssignmentFixer.php', + 'PhpCsFixer\\Fixer\\ReturnNotation\\SimplifiedNullReturnFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ReturnNotation/SimplifiedNullReturnFixer.php', + 'PhpCsFixer\\Fixer\\Semicolon\\MultilineWhitespaceBeforeSemicolonsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/MultilineWhitespaceBeforeSemicolonsFixer.php', + 'PhpCsFixer\\Fixer\\Semicolon\\NoEmptyStatementFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/NoEmptyStatementFixer.php', + 'PhpCsFixer\\Fixer\\Semicolon\\NoSinglelineWhitespaceBeforeSemicolonsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/NoSinglelineWhitespaceBeforeSemicolonsFixer.php', + 'PhpCsFixer\\Fixer\\Semicolon\\SemicolonAfterInstructionFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/SemicolonAfterInstructionFixer.php', + 'PhpCsFixer\\Fixer\\Semicolon\\SpaceAfterSemicolonFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/SpaceAfterSemicolonFixer.php', + 'PhpCsFixer\\Fixer\\Strict\\DeclareStrictTypesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Strict/DeclareStrictTypesFixer.php', + 'PhpCsFixer\\Fixer\\Strict\\StrictComparisonFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Strict/StrictComparisonFixer.php', + 'PhpCsFixer\\Fixer\\Strict\\StrictParamFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Strict/StrictParamFixer.php', + 'PhpCsFixer\\Fixer\\StringNotation\\EscapeImplicitBackslashesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/EscapeImplicitBackslashesFixer.php', + 'PhpCsFixer\\Fixer\\StringNotation\\ExplicitStringVariableFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/ExplicitStringVariableFixer.php', + 'PhpCsFixer\\Fixer\\StringNotation\\HeredocClosingMarkerFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/HeredocClosingMarkerFixer.php', + 'PhpCsFixer\\Fixer\\StringNotation\\HeredocToNowdocFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/HeredocToNowdocFixer.php', + 'PhpCsFixer\\Fixer\\StringNotation\\MultilineStringToHeredocFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/MultilineStringToHeredocFixer.php', + 'PhpCsFixer\\Fixer\\StringNotation\\NoBinaryStringFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/NoBinaryStringFixer.php', + 'PhpCsFixer\\Fixer\\StringNotation\\NoTrailingWhitespaceInStringFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/NoTrailingWhitespaceInStringFixer.php', + 'PhpCsFixer\\Fixer\\StringNotation\\SimpleToComplexStringVariableFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/SimpleToComplexStringVariableFixer.php', + 'PhpCsFixer\\Fixer\\StringNotation\\SingleQuoteFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/SingleQuoteFixer.php', + 'PhpCsFixer\\Fixer\\StringNotation\\StringImplicitBackslashesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/StringImplicitBackslashesFixer.php', + 'PhpCsFixer\\Fixer\\StringNotation\\StringLengthToEmptyFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/StringLengthToEmptyFixer.php', + 'PhpCsFixer\\Fixer\\StringNotation\\StringLineEndingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/StringLineEndingFixer.php', + 'PhpCsFixer\\Fixer\\Whitespace\\ArrayIndentationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/ArrayIndentationFixer.php', + 'PhpCsFixer\\Fixer\\Whitespace\\BlankLineBeforeStatementFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/BlankLineBeforeStatementFixer.php', + 'PhpCsFixer\\Fixer\\Whitespace\\BlankLineBetweenImportGroupsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/BlankLineBetweenImportGroupsFixer.php', + 'PhpCsFixer\\Fixer\\Whitespace\\CompactNullableTypeDeclarationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/CompactNullableTypeDeclarationFixer.php', + 'PhpCsFixer\\Fixer\\Whitespace\\CompactNullableTypehintFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/CompactNullableTypehintFixer.php', + 'PhpCsFixer\\Fixer\\Whitespace\\HeredocIndentationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/HeredocIndentationFixer.php', + 'PhpCsFixer\\Fixer\\Whitespace\\IndentationTypeFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/IndentationTypeFixer.php', + 'PhpCsFixer\\Fixer\\Whitespace\\LineEndingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/LineEndingFixer.php', + 'PhpCsFixer\\Fixer\\Whitespace\\MethodChainingIndentationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/MethodChainingIndentationFixer.php', + 'PhpCsFixer\\Fixer\\Whitespace\\NoExtraBlankLinesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoExtraBlankLinesFixer.php', + 'PhpCsFixer\\Fixer\\Whitespace\\NoSpacesAroundOffsetFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoSpacesAroundOffsetFixer.php', + 'PhpCsFixer\\Fixer\\Whitespace\\NoSpacesInsideParenthesisFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoSpacesInsideParenthesisFixer.php', + 'PhpCsFixer\\Fixer\\Whitespace\\NoTrailingWhitespaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoTrailingWhitespaceFixer.php', + 'PhpCsFixer\\Fixer\\Whitespace\\NoWhitespaceInBlankLineFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoWhitespaceInBlankLineFixer.php', + 'PhpCsFixer\\Fixer\\Whitespace\\SingleBlankLineAtEofFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/SingleBlankLineAtEofFixer.php', + 'PhpCsFixer\\Fixer\\Whitespace\\SpacesInsideParenthesesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/SpacesInsideParenthesesFixer.php', + 'PhpCsFixer\\Fixer\\Whitespace\\StatementIndentationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/StatementIndentationFixer.php', + 'PhpCsFixer\\Fixer\\Whitespace\\TypeDeclarationSpacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/TypeDeclarationSpacesFixer.php', + 'PhpCsFixer\\Fixer\\Whitespace\\TypesSpacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/TypesSpacesFixer.php', + 'PhpCsFixer\\Fixer\\WhitespacesAwareFixerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/WhitespacesAwareFixerInterface.php', + 'PhpCsFixer\\Indicator\\PhpUnitTestCaseIndicator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Indicator/PhpUnitTestCaseIndicator.php', + 'PhpCsFixer\\Linter\\CachingLinter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/CachingLinter.php', + 'PhpCsFixer\\Linter\\Linter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/Linter.php', + 'PhpCsFixer\\Linter\\LinterInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/LinterInterface.php', + 'PhpCsFixer\\Linter\\LintingException' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/LintingException.php', + 'PhpCsFixer\\Linter\\LintingResultInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/LintingResultInterface.php', + 'PhpCsFixer\\Linter\\ProcessLinter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/ProcessLinter.php', + 'PhpCsFixer\\Linter\\ProcessLinterProcessBuilder' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/ProcessLinterProcessBuilder.php', + 'PhpCsFixer\\Linter\\ProcessLintingResult' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/ProcessLintingResult.php', + 'PhpCsFixer\\Linter\\TokenizerLinter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/TokenizerLinter.php', + 'PhpCsFixer\\Linter\\TokenizerLintingResult' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/TokenizerLintingResult.php', + 'PhpCsFixer\\Linter\\UnavailableLinterException' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/UnavailableLinterException.php', + 'PhpCsFixer\\PharChecker' => $vendorDir . '/friendsofphp/php-cs-fixer/src/PharChecker.php', + 'PhpCsFixer\\PharCheckerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/PharCheckerInterface.php', + 'PhpCsFixer\\Preg' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Preg.php', + 'PhpCsFixer\\PregException' => $vendorDir . '/friendsofphp/php-cs-fixer/src/PregException.php', + 'PhpCsFixer\\RuleSet\\AbstractMigrationSetDescription' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/AbstractMigrationSetDescription.php', + 'PhpCsFixer\\RuleSet\\AbstractRuleSetDescription' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/AbstractRuleSetDescription.php', + 'PhpCsFixer\\RuleSet\\DeprecatedRuleSetDescriptionInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/DeprecatedRuleSetDescriptionInterface.php', + 'PhpCsFixer\\RuleSet\\RuleSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/RuleSet.php', + 'PhpCsFixer\\RuleSet\\RuleSetDescriptionInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/RuleSetDescriptionInterface.php', + 'PhpCsFixer\\RuleSet\\RuleSetInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/RuleSetInterface.php', + 'PhpCsFixer\\RuleSet\\RuleSets' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/RuleSets.php', + 'PhpCsFixer\\RuleSet\\Sets\\DoctrineAnnotationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/DoctrineAnnotationSet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PERCS1x0RiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS1x0RiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PERCS1x0Set' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS1x0Set.php', + 'PhpCsFixer\\RuleSet\\Sets\\PERCS2x0RiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS2x0RiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PERCS2x0Set' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS2x0Set.php', + 'PhpCsFixer\\RuleSet\\Sets\\PERCSRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCSRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PERCSSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCSSet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PERRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PERSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERSet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHP54MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP54MigrationSet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHP56MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP56MigrationRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHP70MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP70MigrationRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHP70MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP70MigrationSet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHP71MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP71MigrationRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHP71MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP71MigrationSet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHP73MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP73MigrationSet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHP74MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP74MigrationRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHP74MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP74MigrationSet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHP80MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP80MigrationRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHP80MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP80MigrationSet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHP81MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP81MigrationSet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHP82MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP82MigrationSet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHP83MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP83MigrationSet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit100MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit100MigrationRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit30MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit30MigrationRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit32MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit32MigrationRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit35MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit35MigrationRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit43MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit43MigrationRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit48MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit48MigrationRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit50MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit50MigrationRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit52MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit52MigrationRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit54MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit54MigrationRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit55MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit55MigrationRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit56MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit56MigrationRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit57MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit57MigrationRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit60MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit60MigrationRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit75MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit75MigrationRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit84MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit84MigrationRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PSR12RiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PSR12RiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PSR12Set' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PSR12Set.php', + 'PhpCsFixer\\RuleSet\\Sets\\PSR1Set' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PSR1Set.php', + 'PhpCsFixer\\RuleSet\\Sets\\PSR2Set' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PSR2Set.php', + 'PhpCsFixer\\RuleSet\\Sets\\PhpCsFixerRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PhpCsFixerRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PhpCsFixerSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PhpCsFixerSet.php', + 'PhpCsFixer\\RuleSet\\Sets\\SymfonyRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/SymfonyRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\SymfonySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/SymfonySet.php', + 'PhpCsFixer\\Runner\\FileCachingLintingIterator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Runner/FileCachingLintingIterator.php', + 'PhpCsFixer\\Runner\\FileFilterIterator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Runner/FileFilterIterator.php', + 'PhpCsFixer\\Runner\\FileLintingIterator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Runner/FileLintingIterator.php', + 'PhpCsFixer\\Runner\\Runner' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Runner/Runner.php', + 'PhpCsFixer\\StdinFileInfo' => $vendorDir . '/friendsofphp/php-cs-fixer/src/StdinFileInfo.php', + 'PhpCsFixer\\Tokenizer\\AbstractTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/AbstractTransformer.php', + 'PhpCsFixer\\Tokenizer\\AbstractTypeTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/AbstractTypeTransformer.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\AlternativeSyntaxAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/AlternativeSyntaxAnalyzer.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\AbstractControlCaseStructuresAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/AbstractControlCaseStructuresAnalysis.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\ArgumentAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/ArgumentAnalysis.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\CaseAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/CaseAnalysis.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\DataProviderAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/DataProviderAnalysis.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\DefaultAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/DefaultAnalysis.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\EnumAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/EnumAnalysis.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\MatchAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/MatchAnalysis.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\NamespaceAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/NamespaceAnalysis.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\NamespaceUseAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/NamespaceUseAnalysis.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\StartEndTokenAwareAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/StartEndTokenAwareAnalysis.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\SwitchAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/SwitchAnalysis.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\TypeAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/TypeAnalysis.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\ArgumentsAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ArgumentsAnalyzer.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\AttributeAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/AttributeAnalyzer.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\BlocksAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/BlocksAnalyzer.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\ClassyAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ClassyAnalyzer.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\CommentsAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/CommentsAnalyzer.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\ControlCaseStructuresAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ControlCaseStructuresAnalyzer.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\DataProviderAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/DataProviderAnalyzer.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\FunctionsAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/FunctionsAnalyzer.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\GotoLabelAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/GotoLabelAnalyzer.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\NamespaceUsesAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/NamespaceUsesAnalyzer.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\NamespacesAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/NamespacesAnalyzer.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\RangeAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/RangeAnalyzer.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\ReferenceAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ReferenceAnalyzer.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\SwitchAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/SwitchAnalyzer.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\WhitespacesAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/WhitespacesAnalyzer.php', + 'PhpCsFixer\\Tokenizer\\CT' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/CT.php', + 'PhpCsFixer\\Tokenizer\\CodeHasher' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/CodeHasher.php', + 'PhpCsFixer\\Tokenizer\\Processor\\ImportProcessor' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Processor/ImportProcessor.php', + 'PhpCsFixer\\Tokenizer\\Token' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Token.php', + 'PhpCsFixer\\Tokenizer\\Tokens' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Tokens.php', + 'PhpCsFixer\\Tokenizer\\TokensAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/TokensAnalyzer.php', + 'PhpCsFixer\\Tokenizer\\TransformerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/TransformerInterface.php', + 'PhpCsFixer\\Tokenizer\\Transformer\\ArrayTypehintTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ArrayTypehintTransformer.php', + 'PhpCsFixer\\Tokenizer\\Transformer\\AttributeTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/AttributeTransformer.php', + 'PhpCsFixer\\Tokenizer\\Transformer\\BraceClassInstantiationTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/BraceClassInstantiationTransformer.php', + 'PhpCsFixer\\Tokenizer\\Transformer\\BraceTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/BraceTransformer.php', + 'PhpCsFixer\\Tokenizer\\Transformer\\ClassConstantTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ClassConstantTransformer.php', + 'PhpCsFixer\\Tokenizer\\Transformer\\ConstructorPromotionTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ConstructorPromotionTransformer.php', + 'PhpCsFixer\\Tokenizer\\Transformer\\DisjunctiveNormalFormTypeParenthesisTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/DisjunctiveNormalFormTypeParenthesisTransformer.php', + 'PhpCsFixer\\Tokenizer\\Transformer\\FirstClassCallableTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/FirstClassCallableTransformer.php', + 'PhpCsFixer\\Tokenizer\\Transformer\\ImportTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ImportTransformer.php', + 'PhpCsFixer\\Tokenizer\\Transformer\\NameQualifiedTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/NameQualifiedTransformer.php', + 'PhpCsFixer\\Tokenizer\\Transformer\\NamedArgumentTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/NamedArgumentTransformer.php', + 'PhpCsFixer\\Tokenizer\\Transformer\\NamespaceOperatorTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/NamespaceOperatorTransformer.php', + 'PhpCsFixer\\Tokenizer\\Transformer\\NullableTypeTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/NullableTypeTransformer.php', + 'PhpCsFixer\\Tokenizer\\Transformer\\ReturnRefTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ReturnRefTransformer.php', + 'PhpCsFixer\\Tokenizer\\Transformer\\SquareBraceTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/SquareBraceTransformer.php', + 'PhpCsFixer\\Tokenizer\\Transformer\\TypeAlternationTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/TypeAlternationTransformer.php', + 'PhpCsFixer\\Tokenizer\\Transformer\\TypeColonTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/TypeColonTransformer.php', + 'PhpCsFixer\\Tokenizer\\Transformer\\TypeIntersectionTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/TypeIntersectionTransformer.php', + 'PhpCsFixer\\Tokenizer\\Transformer\\UseTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/UseTransformer.php', + 'PhpCsFixer\\Tokenizer\\Transformer\\WhitespacyCommentTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/WhitespacyCommentTransformer.php', + 'PhpCsFixer\\Tokenizer\\Transformers' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformers.php', + 'PhpCsFixer\\ToolInfo' => $vendorDir . '/friendsofphp/php-cs-fixer/src/ToolInfo.php', + 'PhpCsFixer\\ToolInfoInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/ToolInfoInterface.php', + 'PhpCsFixer\\Utils' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Utils.php', + 'PhpCsFixer\\WhitespacesFixerConfig' => $vendorDir . '/friendsofphp/php-cs-fixer/src/WhitespacesFixerConfig.php', + 'PhpCsFixer\\WordMatcher' => $vendorDir . '/friendsofphp/php-cs-fixer/src/WordMatcher.php', + 'PhpParser\\Builder' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder.php', + 'PhpParser\\BuilderFactory' => $vendorDir . '/nikic/php-parser/lib/PhpParser/BuilderFactory.php', + 'PhpParser\\BuilderHelpers' => $vendorDir . '/nikic/php-parser/lib/PhpParser/BuilderHelpers.php', + 'PhpParser\\Builder\\ClassConst' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php', + 'PhpParser\\Builder\\Class_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Class_.php', + 'PhpParser\\Builder\\Declaration' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Declaration.php', + 'PhpParser\\Builder\\EnumCase' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php', + 'PhpParser\\Builder\\Enum_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Enum_.php', + 'PhpParser\\Builder\\FunctionLike' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php', + 'PhpParser\\Builder\\Function_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Function_.php', + 'PhpParser\\Builder\\Interface_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Interface_.php', + 'PhpParser\\Builder\\Method' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Method.php', + 'PhpParser\\Builder\\Namespace_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php', + 'PhpParser\\Builder\\Param' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Param.php', + 'PhpParser\\Builder\\Property' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Property.php', + 'PhpParser\\Builder\\TraitUse' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php', + 'PhpParser\\Builder\\TraitUseAdaptation' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php', + 'PhpParser\\Builder\\Trait_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Trait_.php', + 'PhpParser\\Builder\\Use_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Use_.php', + 'PhpParser\\Comment' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Comment.php', + 'PhpParser\\Comment\\Doc' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Comment/Doc.php', + 'PhpParser\\ConstExprEvaluationException' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ConstExprEvaluationException.php', + 'PhpParser\\ConstExprEvaluator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.php', + 'PhpParser\\Error' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Error.php', + 'PhpParser\\ErrorHandler' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ErrorHandler.php', + 'PhpParser\\ErrorHandler\\Collecting' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ErrorHandler/Collecting.php', + 'PhpParser\\ErrorHandler\\Throwing' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.php', + 'PhpParser\\Internal\\DiffElem' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Internal/DiffElem.php', + 'PhpParser\\Internal\\Differ' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Internal/Differ.php', + 'PhpParser\\Internal\\PrintableNewAnonClassNode' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php', + 'PhpParser\\Internal\\TokenStream' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php', + 'PhpParser\\JsonDecoder' => $vendorDir . '/nikic/php-parser/lib/PhpParser/JsonDecoder.php', + 'PhpParser\\Lexer' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer.php', + 'PhpParser\\Lexer\\Emulative' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php', + 'PhpParser\\Lexer\\TokenEmulator\\AttributeEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php', + 'PhpParser\\Lexer\\TokenEmulator\\CoaleseEqualTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/CoaleseEqualTokenEmulator.php', + 'PhpParser\\Lexer\\TokenEmulator\\EnumTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/EnumTokenEmulator.php', + 'PhpParser\\Lexer\\TokenEmulator\\ExplicitOctalEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ExplicitOctalEmulator.php', + 'PhpParser\\Lexer\\TokenEmulator\\FlexibleDocStringEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FlexibleDocStringEmulator.php', + 'PhpParser\\Lexer\\TokenEmulator\\FnTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FnTokenEmulator.php', + 'PhpParser\\Lexer\\TokenEmulator\\KeywordEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php', + 'PhpParser\\Lexer\\TokenEmulator\\MatchTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php', + 'PhpParser\\Lexer\\TokenEmulator\\NullsafeTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php', + 'PhpParser\\Lexer\\TokenEmulator\\NumericLiteralSeparatorEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NumericLiteralSeparatorEmulator.php', + 'PhpParser\\Lexer\\TokenEmulator\\ReadonlyFunctionTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyFunctionTokenEmulator.php', + 'PhpParser\\Lexer\\TokenEmulator\\ReadonlyTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php', + 'PhpParser\\Lexer\\TokenEmulator\\ReverseEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php', + 'PhpParser\\Lexer\\TokenEmulator\\TokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php', + 'PhpParser\\NameContext' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NameContext.php', + 'PhpParser\\Node' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node.php', + 'PhpParser\\NodeAbstract' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeAbstract.php', + 'PhpParser\\NodeDumper' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeDumper.php', + 'PhpParser\\NodeFinder' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeFinder.php', + 'PhpParser\\NodeTraverser' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeTraverser.php', + 'PhpParser\\NodeTraverserInterface' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.php', + 'PhpParser\\NodeVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor.php', + 'PhpParser\\NodeVisitorAbstract' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.php', + 'PhpParser\\NodeVisitor\\CloningVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.php', + 'PhpParser\\NodeVisitor\\FindingVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php', + 'PhpParser\\NodeVisitor\\FirstFindingVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php', + 'PhpParser\\NodeVisitor\\NameResolver' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php', + 'PhpParser\\NodeVisitor\\NodeConnectingVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php', + 'PhpParser\\NodeVisitor\\ParentConnectingVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php', + 'PhpParser\\Node\\Arg' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Arg.php', + 'PhpParser\\Node\\Attribute' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Attribute.php', + 'PhpParser\\Node\\AttributeGroup' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php', + 'PhpParser\\Node\\ComplexType' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/ComplexType.php', + 'PhpParser\\Node\\Const_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Const_.php', + 'PhpParser\\Node\\Expr' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr.php', + 'PhpParser\\Node\\Expr\\ArrayDimFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php', + 'PhpParser\\Node\\Expr\\ArrayItem' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php', + 'PhpParser\\Node\\Expr\\Array_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php', + 'PhpParser\\Node\\Expr\\ArrowFunction' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php', + 'PhpParser\\Node\\Expr\\Assign' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php', + 'PhpParser\\Node\\Expr\\AssignOp' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php', + 'PhpParser\\Node\\Expr\\AssignOp\\BitwiseAnd' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php', + 'PhpParser\\Node\\Expr\\AssignOp\\BitwiseOr' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php', + 'PhpParser\\Node\\Expr\\AssignOp\\BitwiseXor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php', + 'PhpParser\\Node\\Expr\\AssignOp\\Coalesce' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php', + 'PhpParser\\Node\\Expr\\AssignOp\\Concat' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php', + 'PhpParser\\Node\\Expr\\AssignOp\\Div' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php', + 'PhpParser\\Node\\Expr\\AssignOp\\Minus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php', + 'PhpParser\\Node\\Expr\\AssignOp\\Mod' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php', + 'PhpParser\\Node\\Expr\\AssignOp\\Mul' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php', + 'PhpParser\\Node\\Expr\\AssignOp\\Plus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php', + 'PhpParser\\Node\\Expr\\AssignOp\\Pow' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php', + 'PhpParser\\Node\\Expr\\AssignOp\\ShiftLeft' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php', + 'PhpParser\\Node\\Expr\\AssignOp\\ShiftRight' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php', + 'PhpParser\\Node\\Expr\\AssignRef' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php', + 'PhpParser\\Node\\Expr\\BinaryOp' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseAnd' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseOr' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseXor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\BooleanAnd' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\BooleanOr' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\Coalesce' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\Concat' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\Div' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\Equal' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\Greater' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\GreaterOrEqual' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\Identical' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\LogicalAnd' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\LogicalOr' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\LogicalXor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\Minus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\Mod' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\Mul' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\NotEqual' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\NotIdentical' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\Plus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\Pow' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\ShiftLeft' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\ShiftRight' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\Smaller' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\SmallerOrEqual' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\Spaceship' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php', + 'PhpParser\\Node\\Expr\\BitwiseNot' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php', + 'PhpParser\\Node\\Expr\\BooleanNot' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php', + 'PhpParser\\Node\\Expr\\CallLike' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php', + 'PhpParser\\Node\\Expr\\Cast' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php', + 'PhpParser\\Node\\Expr\\Cast\\Array_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php', + 'PhpParser\\Node\\Expr\\Cast\\Bool_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php', + 'PhpParser\\Node\\Expr\\Cast\\Double' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php', + 'PhpParser\\Node\\Expr\\Cast\\Int_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php', + 'PhpParser\\Node\\Expr\\Cast\\Object_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php', + 'PhpParser\\Node\\Expr\\Cast\\String_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php', + 'PhpParser\\Node\\Expr\\Cast\\Unset_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php', + 'PhpParser\\Node\\Expr\\ClassConstFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php', + 'PhpParser\\Node\\Expr\\Clone_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php', + 'PhpParser\\Node\\Expr\\Closure' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php', + 'PhpParser\\Node\\Expr\\ClosureUse' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php', + 'PhpParser\\Node\\Expr\\ConstFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php', + 'PhpParser\\Node\\Expr\\Empty_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php', + 'PhpParser\\Node\\Expr\\Error' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php', + 'PhpParser\\Node\\Expr\\ErrorSuppress' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php', + 'PhpParser\\Node\\Expr\\Eval_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php', + 'PhpParser\\Node\\Expr\\Exit_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php', + 'PhpParser\\Node\\Expr\\FuncCall' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php', + 'PhpParser\\Node\\Expr\\Include_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php', + 'PhpParser\\Node\\Expr\\Instanceof_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php', + 'PhpParser\\Node\\Expr\\Isset_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php', + 'PhpParser\\Node\\Expr\\List_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php', + 'PhpParser\\Node\\Expr\\Match_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php', + 'PhpParser\\Node\\Expr\\MethodCall' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php', + 'PhpParser\\Node\\Expr\\New_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php', + 'PhpParser\\Node\\Expr\\NullsafeMethodCall' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php', + 'PhpParser\\Node\\Expr\\NullsafePropertyFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php', + 'PhpParser\\Node\\Expr\\PostDec' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php', + 'PhpParser\\Node\\Expr\\PostInc' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php', + 'PhpParser\\Node\\Expr\\PreDec' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php', + 'PhpParser\\Node\\Expr\\PreInc' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php', + 'PhpParser\\Node\\Expr\\Print_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php', + 'PhpParser\\Node\\Expr\\PropertyFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php', + 'PhpParser\\Node\\Expr\\ShellExec' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php', + 'PhpParser\\Node\\Expr\\StaticCall' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php', + 'PhpParser\\Node\\Expr\\StaticPropertyFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php', + 'PhpParser\\Node\\Expr\\Ternary' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php', + 'PhpParser\\Node\\Expr\\Throw_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php', + 'PhpParser\\Node\\Expr\\UnaryMinus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php', + 'PhpParser\\Node\\Expr\\UnaryPlus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php', + 'PhpParser\\Node\\Expr\\Variable' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php', + 'PhpParser\\Node\\Expr\\YieldFrom' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php', + 'PhpParser\\Node\\Expr\\Yield_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php', + 'PhpParser\\Node\\FunctionLike' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php', + 'PhpParser\\Node\\Identifier' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Identifier.php', + 'PhpParser\\Node\\IntersectionType' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/IntersectionType.php', + 'PhpParser\\Node\\MatchArm' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/MatchArm.php', + 'PhpParser\\Node\\Name' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Name.php', + 'PhpParser\\Node\\Name\\FullyQualified' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php', + 'PhpParser\\Node\\Name\\Relative' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php', + 'PhpParser\\Node\\NullableType' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/NullableType.php', + 'PhpParser\\Node\\Param' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Param.php', + 'PhpParser\\Node\\Scalar' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar.php', + 'PhpParser\\Node\\Scalar\\DNumber' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php', + 'PhpParser\\Node\\Scalar\\Encapsed' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php', + 'PhpParser\\Node\\Scalar\\EncapsedStringPart' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php', + 'PhpParser\\Node\\Scalar\\LNumber' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php', + 'PhpParser\\Node\\Scalar\\MagicConst' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php', + 'PhpParser\\Node\\Scalar\\MagicConst\\Class_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php', + 'PhpParser\\Node\\Scalar\\MagicConst\\Dir' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php', + 'PhpParser\\Node\\Scalar\\MagicConst\\File' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php', + 'PhpParser\\Node\\Scalar\\MagicConst\\Function_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php', + 'PhpParser\\Node\\Scalar\\MagicConst\\Line' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php', + 'PhpParser\\Node\\Scalar\\MagicConst\\Method' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php', + 'PhpParser\\Node\\Scalar\\MagicConst\\Namespace_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php', + 'PhpParser\\Node\\Scalar\\MagicConst\\Trait_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php', + 'PhpParser\\Node\\Scalar\\String_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php', + 'PhpParser\\Node\\Stmt' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt.php', + 'PhpParser\\Node\\Stmt\\Break_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php', + 'PhpParser\\Node\\Stmt\\Case_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php', + 'PhpParser\\Node\\Stmt\\Catch_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php', + 'PhpParser\\Node\\Stmt\\ClassConst' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php', + 'PhpParser\\Node\\Stmt\\ClassLike' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php', + 'PhpParser\\Node\\Stmt\\ClassMethod' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php', + 'PhpParser\\Node\\Stmt\\Class_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php', + 'PhpParser\\Node\\Stmt\\Const_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php', + 'PhpParser\\Node\\Stmt\\Continue_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php', + 'PhpParser\\Node\\Stmt\\DeclareDeclare' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php', + 'PhpParser\\Node\\Stmt\\Declare_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php', + 'PhpParser\\Node\\Stmt\\Do_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php', + 'PhpParser\\Node\\Stmt\\Echo_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php', + 'PhpParser\\Node\\Stmt\\ElseIf_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php', + 'PhpParser\\Node\\Stmt\\Else_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php', + 'PhpParser\\Node\\Stmt\\EnumCase' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php', + 'PhpParser\\Node\\Stmt\\Enum_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php', + 'PhpParser\\Node\\Stmt\\Expression' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php', + 'PhpParser\\Node\\Stmt\\Finally_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php', + 'PhpParser\\Node\\Stmt\\For_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php', + 'PhpParser\\Node\\Stmt\\Foreach_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php', + 'PhpParser\\Node\\Stmt\\Function_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php', + 'PhpParser\\Node\\Stmt\\Global_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php', + 'PhpParser\\Node\\Stmt\\Goto_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php', + 'PhpParser\\Node\\Stmt\\GroupUse' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php', + 'PhpParser\\Node\\Stmt\\HaltCompiler' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php', + 'PhpParser\\Node\\Stmt\\If_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php', + 'PhpParser\\Node\\Stmt\\InlineHTML' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php', + 'PhpParser\\Node\\Stmt\\Interface_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php', + 'PhpParser\\Node\\Stmt\\Label' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php', + 'PhpParser\\Node\\Stmt\\Namespace_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php', + 'PhpParser\\Node\\Stmt\\Nop' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php', + 'PhpParser\\Node\\Stmt\\Property' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php', + 'PhpParser\\Node\\Stmt\\PropertyProperty' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php', + 'PhpParser\\Node\\Stmt\\Return_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php', + 'PhpParser\\Node\\Stmt\\StaticVar' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php', + 'PhpParser\\Node\\Stmt\\Static_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php', + 'PhpParser\\Node\\Stmt\\Switch_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php', + 'PhpParser\\Node\\Stmt\\Throw_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Throw_.php', + 'PhpParser\\Node\\Stmt\\TraitUse' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php', + 'PhpParser\\Node\\Stmt\\TraitUseAdaptation' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php', + 'PhpParser\\Node\\Stmt\\TraitUseAdaptation\\Alias' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php', + 'PhpParser\\Node\\Stmt\\TraitUseAdaptation\\Precedence' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php', + 'PhpParser\\Node\\Stmt\\Trait_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php', + 'PhpParser\\Node\\Stmt\\TryCatch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php', + 'PhpParser\\Node\\Stmt\\Unset_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php', + 'PhpParser\\Node\\Stmt\\UseUse' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php', + 'PhpParser\\Node\\Stmt\\Use_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php', + 'PhpParser\\Node\\Stmt\\While_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php', + 'PhpParser\\Node\\UnionType' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/UnionType.php', + 'PhpParser\\Node\\VarLikeIdentifier' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php', + 'PhpParser\\Node\\VariadicPlaceholder' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/VariadicPlaceholder.php', + 'PhpParser\\Parser' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Parser.php', + 'PhpParser\\ParserAbstract' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ParserAbstract.php', + 'PhpParser\\ParserFactory' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ParserFactory.php', + 'PhpParser\\Parser\\Multiple' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Parser/Multiple.php', + 'PhpParser\\Parser\\Php5' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Parser/Php5.php', + 'PhpParser\\Parser\\Php7' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Parser/Php7.php', + 'PhpParser\\Parser\\Tokens' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Parser/Tokens.php', + 'PhpParser\\PrettyPrinterAbstract' => $vendorDir . '/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php', + 'PhpParser\\PrettyPrinter\\Standard' => $vendorDir . '/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php', 'PhpToken' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php', + 'PrestaShop\\AutoIndex\\Command\\AddAutoIndexCommand' => $vendorDir . '/prestashop/autoindex/src/Command/AddAutoIndexCommand.php', + 'PrestaShop\\CodingStandards\\Command\\AbstractCommand' => $vendorDir . '/prestashop/php-dev-tools/src/Command/AbstractCommand.php', + 'PrestaShop\\CodingStandards\\Command\\CsFixerInitCommand' => $vendorDir . '/prestashop/php-dev-tools/src/Command/CsFixerInitCommand.php', + 'PrestaShop\\CodingStandards\\Command\\PhpStanInitCommand' => $vendorDir . '/prestashop/php-dev-tools/src/Command/PhpStanInitCommand.php', + 'PrestaShop\\CodingStandards\\CsFixer\\Config' => $vendorDir . '/prestashop/php-dev-tools/src/CsFixer/Config.php', + 'PrestaShop\\HeaderStamp\\Command\\UpdateLicensesCommand' => $vendorDir . '/prestashop/header-stamp/src/Command/UpdateLicensesCommand.php', + 'PrestaShop\\HeaderStamp\\LicenseHeader' => $vendorDir . '/prestashop/header-stamp/src/LicenseHeader.php', + 'PrestaShop\\HeaderStamp\\Reporter' => $vendorDir . '/prestashop/header-stamp/src/Reporter.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Controller\\AbandonedCartController' => $baseDir . '/src/Controller/AbandonedCartController.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Controller\\CustomerSyncController' => $baseDir . '/src/Controller/CustomerSyncController.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Controller\\ModuleConfigurationController' => $baseDir . '/src/Controller/ModuleConfigurationController.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Controller\\OptInController' => $baseDir . '/src/Controller/OptInController.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Controller\\RssFeedController' => $baseDir . '/src/Controller/RssFeedController.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\AbandonedCartFormDataConfiguration' => $baseDir . '/src/Form/AbandonedCartFormDataConfiguration.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\AbandonedCartFormType' => $baseDir . '/src/Form/AbandonedCartFormType.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\AccountConfigurationFormType' => $baseDir . '/src/Form/AccountConfigurationFormType.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\AccountFormDataConfiguration' => $baseDir . '/src/Form/AccountFormDataConfiguration.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\ChoiceProvider\\Autoresponder' => $baseDir . '/src/Form/ChoiceProvider/Autoresponder.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\ChoiceProvider\\ProductCategory' => $baseDir . '/src/Form/ChoiceProvider/ProductCategory.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\CustomerSyncFormDataConfiguration' => $baseDir . '/src/Form/CustomerSyncFormDataConfiguration.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\CustomerSyncFormType' => $baseDir . '/src/Form/CustomerSyncFormType.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\FormDataProvider' => $baseDir . '/src/Form/FormDataProvider.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\RssFeedFormDataConfiguration' => $baseDir . '/src/Form/RssFeedFormDataConfiguration.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\RssFeedFormType' => $baseDir . '/src/Form/RssFeedFormType.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Install\\Installer' => $baseDir . '/src/Install/Installer.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Lib\\Api' => $baseDir . '/lib/Api.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Lib\\Logger' => $baseDir . '/lib/Logger.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Model\\AbandonedCart' => $baseDir . '/src/Model/AbandonedCart.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Model\\AbandonedCartCollection' => $baseDir . '/src/Model/AbandonedCartCollection.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Model\\AbandonedCartProduct' => $baseDir . '/src/Model/AbandonedCartProduct.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Model\\RssFeedProductsCollection' => $baseDir . '/src/Model/RssFeedProductsCollection.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Model\\SentCart' => $baseDir . '/src/Model/SentCart.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Model\\Subscriber' => $baseDir . '/src/Model/Subscriber.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Model\\SubscriberCollection' => $baseDir . '/src/Model/SubscriberCollection.php', + 'Psr\\Container\\ContainerExceptionInterface' => $vendorDir . '/psr/container/src/ContainerExceptionInterface.php', + 'Psr\\Container\\ContainerInterface' => $vendorDir . '/psr/container/src/ContainerInterface.php', + 'Psr\\Container\\NotFoundExceptionInterface' => $vendorDir . '/psr/container/src/NotFoundExceptionInterface.php', + 'Psr\\EventDispatcher\\EventDispatcherInterface' => $vendorDir . '/psr/event-dispatcher/src/EventDispatcherInterface.php', + 'Psr\\EventDispatcher\\ListenerProviderInterface' => $vendorDir . '/psr/event-dispatcher/src/ListenerProviderInterface.php', + 'Psr\\EventDispatcher\\StoppableEventInterface' => $vendorDir . '/psr/event-dispatcher/src/StoppableEventInterface.php', + 'Psr\\Log\\AbstractLogger' => $vendorDir . '/psr/log/src/AbstractLogger.php', + 'Psr\\Log\\InvalidArgumentException' => $vendorDir . '/psr/log/src/InvalidArgumentException.php', + 'Psr\\Log\\LogLevel' => $vendorDir . '/psr/log/src/LogLevel.php', + 'Psr\\Log\\LoggerAwareInterface' => $vendorDir . '/psr/log/src/LoggerAwareInterface.php', + 'Psr\\Log\\LoggerAwareTrait' => $vendorDir . '/psr/log/src/LoggerAwareTrait.php', + 'Psr\\Log\\LoggerInterface' => $vendorDir . '/psr/log/src/LoggerInterface.php', + 'Psr\\Log\\LoggerTrait' => $vendorDir . '/psr/log/src/LoggerTrait.php', + 'Psr\\Log\\NullLogger' => $vendorDir . '/psr/log/src/NullLogger.php', 'ReturnTypeWillChange' => $vendorDir . '/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php', 'SebastianBergmann\\Diff\\Chunk' => $vendorDir . '/sebastian/diff/src/Chunk.php', 'SebastianBergmann\\Diff\\ConfigurationException' => $vendorDir . '/sebastian/diff/src/Exception/ConfigurationException.php', @@ -29,6 +898,234 @@ 'SebastianBergmann\\Diff\\Parser' => $vendorDir . '/sebastian/diff/src/Parser.php', 'SebastianBergmann\\Diff\\TimeEfficientLongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php', 'Stringable' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Stringable.php', + 'Symfony\\Component\\Console\\Application' => $vendorDir . '/symfony/console/Application.php', + 'Symfony\\Component\\Console\\Attribute\\AsCommand' => $vendorDir . '/symfony/console/Attribute/AsCommand.php', + 'Symfony\\Component\\Console\\CI\\GithubActionReporter' => $vendorDir . '/symfony/console/CI/GithubActionReporter.php', + 'Symfony\\Component\\Console\\Color' => $vendorDir . '/symfony/console/Color.php', + 'Symfony\\Component\\Console\\CommandLoader\\CommandLoaderInterface' => $vendorDir . '/symfony/console/CommandLoader/CommandLoaderInterface.php', + 'Symfony\\Component\\Console\\CommandLoader\\ContainerCommandLoader' => $vendorDir . '/symfony/console/CommandLoader/ContainerCommandLoader.php', + 'Symfony\\Component\\Console\\CommandLoader\\FactoryCommandLoader' => $vendorDir . '/symfony/console/CommandLoader/FactoryCommandLoader.php', + 'Symfony\\Component\\Console\\Command\\Command' => $vendorDir . '/symfony/console/Command/Command.php', + 'Symfony\\Component\\Console\\Command\\CompleteCommand' => $vendorDir . '/symfony/console/Command/CompleteCommand.php', + 'Symfony\\Component\\Console\\Command\\DumpCompletionCommand' => $vendorDir . '/symfony/console/Command/DumpCompletionCommand.php', + 'Symfony\\Component\\Console\\Command\\HelpCommand' => $vendorDir . '/symfony/console/Command/HelpCommand.php', + 'Symfony\\Component\\Console\\Command\\LazyCommand' => $vendorDir . '/symfony/console/Command/LazyCommand.php', + 'Symfony\\Component\\Console\\Command\\ListCommand' => $vendorDir . '/symfony/console/Command/ListCommand.php', + 'Symfony\\Component\\Console\\Command\\LockableTrait' => $vendorDir . '/symfony/console/Command/LockableTrait.php', + 'Symfony\\Component\\Console\\Command\\SignalableCommandInterface' => $vendorDir . '/symfony/console/Command/SignalableCommandInterface.php', + 'Symfony\\Component\\Console\\Command\\TraceableCommand' => $vendorDir . '/symfony/console/Command/TraceableCommand.php', + 'Symfony\\Component\\Console\\Completion\\CompletionInput' => $vendorDir . '/symfony/console/Completion/CompletionInput.php', + 'Symfony\\Component\\Console\\Completion\\CompletionSuggestions' => $vendorDir . '/symfony/console/Completion/CompletionSuggestions.php', + 'Symfony\\Component\\Console\\Completion\\Output\\BashCompletionOutput' => $vendorDir . '/symfony/console/Completion/Output/BashCompletionOutput.php', + 'Symfony\\Component\\Console\\Completion\\Output\\CompletionOutputInterface' => $vendorDir . '/symfony/console/Completion/Output/CompletionOutputInterface.php', + 'Symfony\\Component\\Console\\Completion\\Output\\FishCompletionOutput' => $vendorDir . '/symfony/console/Completion/Output/FishCompletionOutput.php', + 'Symfony\\Component\\Console\\Completion\\Output\\ZshCompletionOutput' => $vendorDir . '/symfony/console/Completion/Output/ZshCompletionOutput.php', + 'Symfony\\Component\\Console\\Completion\\Suggestion' => $vendorDir . '/symfony/console/Completion/Suggestion.php', + 'Symfony\\Component\\Console\\ConsoleEvents' => $vendorDir . '/symfony/console/ConsoleEvents.php', + 'Symfony\\Component\\Console\\Cursor' => $vendorDir . '/symfony/console/Cursor.php', + 'Symfony\\Component\\Console\\DataCollector\\CommandDataCollector' => $vendorDir . '/symfony/console/DataCollector/CommandDataCollector.php', + 'Symfony\\Component\\Console\\Debug\\CliRequest' => $vendorDir . '/symfony/console/Debug/CliRequest.php', + 'Symfony\\Component\\Console\\DependencyInjection\\AddConsoleCommandPass' => $vendorDir . '/symfony/console/DependencyInjection/AddConsoleCommandPass.php', + 'Symfony\\Component\\Console\\Descriptor\\ApplicationDescription' => $vendorDir . '/symfony/console/Descriptor/ApplicationDescription.php', + 'Symfony\\Component\\Console\\Descriptor\\Descriptor' => $vendorDir . '/symfony/console/Descriptor/Descriptor.php', + 'Symfony\\Component\\Console\\Descriptor\\DescriptorInterface' => $vendorDir . '/symfony/console/Descriptor/DescriptorInterface.php', + 'Symfony\\Component\\Console\\Descriptor\\JsonDescriptor' => $vendorDir . '/symfony/console/Descriptor/JsonDescriptor.php', + 'Symfony\\Component\\Console\\Descriptor\\MarkdownDescriptor' => $vendorDir . '/symfony/console/Descriptor/MarkdownDescriptor.php', + 'Symfony\\Component\\Console\\Descriptor\\ReStructuredTextDescriptor' => $vendorDir . '/symfony/console/Descriptor/ReStructuredTextDescriptor.php', + 'Symfony\\Component\\Console\\Descriptor\\TextDescriptor' => $vendorDir . '/symfony/console/Descriptor/TextDescriptor.php', + 'Symfony\\Component\\Console\\Descriptor\\XmlDescriptor' => $vendorDir . '/symfony/console/Descriptor/XmlDescriptor.php', + 'Symfony\\Component\\Console\\EventListener\\ErrorListener' => $vendorDir . '/symfony/console/EventListener/ErrorListener.php', + 'Symfony\\Component\\Console\\Event\\ConsoleCommandEvent' => $vendorDir . '/symfony/console/Event/ConsoleCommandEvent.php', + 'Symfony\\Component\\Console\\Event\\ConsoleErrorEvent' => $vendorDir . '/symfony/console/Event/ConsoleErrorEvent.php', + 'Symfony\\Component\\Console\\Event\\ConsoleEvent' => $vendorDir . '/symfony/console/Event/ConsoleEvent.php', + 'Symfony\\Component\\Console\\Event\\ConsoleSignalEvent' => $vendorDir . '/symfony/console/Event/ConsoleSignalEvent.php', + 'Symfony\\Component\\Console\\Event\\ConsoleTerminateEvent' => $vendorDir . '/symfony/console/Event/ConsoleTerminateEvent.php', + 'Symfony\\Component\\Console\\Exception\\CommandNotFoundException' => $vendorDir . '/symfony/console/Exception/CommandNotFoundException.php', + 'Symfony\\Component\\Console\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/console/Exception/ExceptionInterface.php', + 'Symfony\\Component\\Console\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/console/Exception/InvalidArgumentException.php', + 'Symfony\\Component\\Console\\Exception\\InvalidOptionException' => $vendorDir . '/symfony/console/Exception/InvalidOptionException.php', + 'Symfony\\Component\\Console\\Exception\\LogicException' => $vendorDir . '/symfony/console/Exception/LogicException.php', + 'Symfony\\Component\\Console\\Exception\\MissingInputException' => $vendorDir . '/symfony/console/Exception/MissingInputException.php', + 'Symfony\\Component\\Console\\Exception\\NamespaceNotFoundException' => $vendorDir . '/symfony/console/Exception/NamespaceNotFoundException.php', + 'Symfony\\Component\\Console\\Exception\\RunCommandFailedException' => $vendorDir . '/symfony/console/Exception/RunCommandFailedException.php', + 'Symfony\\Component\\Console\\Exception\\RuntimeException' => $vendorDir . '/symfony/console/Exception/RuntimeException.php', + 'Symfony\\Component\\Console\\Formatter\\NullOutputFormatter' => $vendorDir . '/symfony/console/Formatter/NullOutputFormatter.php', + 'Symfony\\Component\\Console\\Formatter\\NullOutputFormatterStyle' => $vendorDir . '/symfony/console/Formatter/NullOutputFormatterStyle.php', + 'Symfony\\Component\\Console\\Formatter\\OutputFormatter' => $vendorDir . '/symfony/console/Formatter/OutputFormatter.php', + 'Symfony\\Component\\Console\\Formatter\\OutputFormatterInterface' => $vendorDir . '/symfony/console/Formatter/OutputFormatterInterface.php', + 'Symfony\\Component\\Console\\Formatter\\OutputFormatterStyle' => $vendorDir . '/symfony/console/Formatter/OutputFormatterStyle.php', + 'Symfony\\Component\\Console\\Formatter\\OutputFormatterStyleInterface' => $vendorDir . '/symfony/console/Formatter/OutputFormatterStyleInterface.php', + 'Symfony\\Component\\Console\\Formatter\\OutputFormatterStyleStack' => $vendorDir . '/symfony/console/Formatter/OutputFormatterStyleStack.php', + 'Symfony\\Component\\Console\\Formatter\\WrappableOutputFormatterInterface' => $vendorDir . '/symfony/console/Formatter/WrappableOutputFormatterInterface.php', + 'Symfony\\Component\\Console\\Helper\\DebugFormatterHelper' => $vendorDir . '/symfony/console/Helper/DebugFormatterHelper.php', + 'Symfony\\Component\\Console\\Helper\\DescriptorHelper' => $vendorDir . '/symfony/console/Helper/DescriptorHelper.php', + 'Symfony\\Component\\Console\\Helper\\Dumper' => $vendorDir . '/symfony/console/Helper/Dumper.php', + 'Symfony\\Component\\Console\\Helper\\FormatterHelper' => $vendorDir . '/symfony/console/Helper/FormatterHelper.php', + 'Symfony\\Component\\Console\\Helper\\Helper' => $vendorDir . '/symfony/console/Helper/Helper.php', + 'Symfony\\Component\\Console\\Helper\\HelperInterface' => $vendorDir . '/symfony/console/Helper/HelperInterface.php', + 'Symfony\\Component\\Console\\Helper\\HelperSet' => $vendorDir . '/symfony/console/Helper/HelperSet.php', + 'Symfony\\Component\\Console\\Helper\\InputAwareHelper' => $vendorDir . '/symfony/console/Helper/InputAwareHelper.php', + 'Symfony\\Component\\Console\\Helper\\OutputWrapper' => $vendorDir . '/symfony/console/Helper/OutputWrapper.php', + 'Symfony\\Component\\Console\\Helper\\ProcessHelper' => $vendorDir . '/symfony/console/Helper/ProcessHelper.php', + 'Symfony\\Component\\Console\\Helper\\ProgressBar' => $vendorDir . '/symfony/console/Helper/ProgressBar.php', + 'Symfony\\Component\\Console\\Helper\\ProgressIndicator' => $vendorDir . '/symfony/console/Helper/ProgressIndicator.php', + 'Symfony\\Component\\Console\\Helper\\QuestionHelper' => $vendorDir . '/symfony/console/Helper/QuestionHelper.php', + 'Symfony\\Component\\Console\\Helper\\SymfonyQuestionHelper' => $vendorDir . '/symfony/console/Helper/SymfonyQuestionHelper.php', + 'Symfony\\Component\\Console\\Helper\\Table' => $vendorDir . '/symfony/console/Helper/Table.php', + 'Symfony\\Component\\Console\\Helper\\TableCell' => $vendorDir . '/symfony/console/Helper/TableCell.php', + 'Symfony\\Component\\Console\\Helper\\TableCellStyle' => $vendorDir . '/symfony/console/Helper/TableCellStyle.php', + 'Symfony\\Component\\Console\\Helper\\TableRows' => $vendorDir . '/symfony/console/Helper/TableRows.php', + 'Symfony\\Component\\Console\\Helper\\TableSeparator' => $vendorDir . '/symfony/console/Helper/TableSeparator.php', + 'Symfony\\Component\\Console\\Helper\\TableStyle' => $vendorDir . '/symfony/console/Helper/TableStyle.php', + 'Symfony\\Component\\Console\\Input\\ArgvInput' => $vendorDir . '/symfony/console/Input/ArgvInput.php', + 'Symfony\\Component\\Console\\Input\\ArrayInput' => $vendorDir . '/symfony/console/Input/ArrayInput.php', + 'Symfony\\Component\\Console\\Input\\Input' => $vendorDir . '/symfony/console/Input/Input.php', + 'Symfony\\Component\\Console\\Input\\InputArgument' => $vendorDir . '/symfony/console/Input/InputArgument.php', + 'Symfony\\Component\\Console\\Input\\InputAwareInterface' => $vendorDir . '/symfony/console/Input/InputAwareInterface.php', + 'Symfony\\Component\\Console\\Input\\InputDefinition' => $vendorDir . '/symfony/console/Input/InputDefinition.php', + 'Symfony\\Component\\Console\\Input\\InputInterface' => $vendorDir . '/symfony/console/Input/InputInterface.php', + 'Symfony\\Component\\Console\\Input\\InputOption' => $vendorDir . '/symfony/console/Input/InputOption.php', + 'Symfony\\Component\\Console\\Input\\StreamableInputInterface' => $vendorDir . '/symfony/console/Input/StreamableInputInterface.php', + 'Symfony\\Component\\Console\\Input\\StringInput' => $vendorDir . '/symfony/console/Input/StringInput.php', + 'Symfony\\Component\\Console\\Logger\\ConsoleLogger' => $vendorDir . '/symfony/console/Logger/ConsoleLogger.php', + 'Symfony\\Component\\Console\\Messenger\\RunCommandContext' => $vendorDir . '/symfony/console/Messenger/RunCommandContext.php', + 'Symfony\\Component\\Console\\Messenger\\RunCommandMessage' => $vendorDir . '/symfony/console/Messenger/RunCommandMessage.php', + 'Symfony\\Component\\Console\\Messenger\\RunCommandMessageHandler' => $vendorDir . '/symfony/console/Messenger/RunCommandMessageHandler.php', + 'Symfony\\Component\\Console\\Output\\AnsiColorMode' => $vendorDir . '/symfony/console/Output/AnsiColorMode.php', + 'Symfony\\Component\\Console\\Output\\BufferedOutput' => $vendorDir . '/symfony/console/Output/BufferedOutput.php', + 'Symfony\\Component\\Console\\Output\\ConsoleOutput' => $vendorDir . '/symfony/console/Output/ConsoleOutput.php', + 'Symfony\\Component\\Console\\Output\\ConsoleOutputInterface' => $vendorDir . '/symfony/console/Output/ConsoleOutputInterface.php', + 'Symfony\\Component\\Console\\Output\\ConsoleSectionOutput' => $vendorDir . '/symfony/console/Output/ConsoleSectionOutput.php', + 'Symfony\\Component\\Console\\Output\\NullOutput' => $vendorDir . '/symfony/console/Output/NullOutput.php', + 'Symfony\\Component\\Console\\Output\\Output' => $vendorDir . '/symfony/console/Output/Output.php', + 'Symfony\\Component\\Console\\Output\\OutputInterface' => $vendorDir . '/symfony/console/Output/OutputInterface.php', + 'Symfony\\Component\\Console\\Output\\StreamOutput' => $vendorDir . '/symfony/console/Output/StreamOutput.php', + 'Symfony\\Component\\Console\\Output\\TrimmedBufferOutput' => $vendorDir . '/symfony/console/Output/TrimmedBufferOutput.php', + 'Symfony\\Component\\Console\\Question\\ChoiceQuestion' => $vendorDir . '/symfony/console/Question/ChoiceQuestion.php', + 'Symfony\\Component\\Console\\Question\\ConfirmationQuestion' => $vendorDir . '/symfony/console/Question/ConfirmationQuestion.php', + 'Symfony\\Component\\Console\\Question\\Question' => $vendorDir . '/symfony/console/Question/Question.php', + 'Symfony\\Component\\Console\\SignalRegistry\\SignalMap' => $vendorDir . '/symfony/console/SignalRegistry/SignalMap.php', + 'Symfony\\Component\\Console\\SignalRegistry\\SignalRegistry' => $vendorDir . '/symfony/console/SignalRegistry/SignalRegistry.php', + 'Symfony\\Component\\Console\\SingleCommandApplication' => $vendorDir . '/symfony/console/SingleCommandApplication.php', + 'Symfony\\Component\\Console\\Style\\OutputStyle' => $vendorDir . '/symfony/console/Style/OutputStyle.php', + 'Symfony\\Component\\Console\\Style\\StyleInterface' => $vendorDir . '/symfony/console/Style/StyleInterface.php', + 'Symfony\\Component\\Console\\Style\\SymfonyStyle' => $vendorDir . '/symfony/console/Style/SymfonyStyle.php', + 'Symfony\\Component\\Console\\Terminal' => $vendorDir . '/symfony/console/Terminal.php', + 'Symfony\\Component\\Console\\Tester\\ApplicationTester' => $vendorDir . '/symfony/console/Tester/ApplicationTester.php', + 'Symfony\\Component\\Console\\Tester\\CommandCompletionTester' => $vendorDir . '/symfony/console/Tester/CommandCompletionTester.php', + 'Symfony\\Component\\Console\\Tester\\CommandTester' => $vendorDir . '/symfony/console/Tester/CommandTester.php', + 'Symfony\\Component\\Console\\Tester\\Constraint\\CommandIsSuccessful' => $vendorDir . '/symfony/console/Tester/Constraint/CommandIsSuccessful.php', + 'Symfony\\Component\\Console\\Tester\\TesterTrait' => $vendorDir . '/symfony/console/Tester/TesterTrait.php', + 'Symfony\\Component\\EventDispatcher\\Attribute\\AsEventListener' => $vendorDir . '/symfony/event-dispatcher/Attribute/AsEventListener.php', + 'Symfony\\Component\\EventDispatcher\\Debug\\TraceableEventDispatcher' => $vendorDir . '/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php', + 'Symfony\\Component\\EventDispatcher\\Debug\\WrappedListener' => $vendorDir . '/symfony/event-dispatcher/Debug/WrappedListener.php', + 'Symfony\\Component\\EventDispatcher\\DependencyInjection\\AddEventAliasesPass' => $vendorDir . '/symfony/event-dispatcher/DependencyInjection/AddEventAliasesPass.php', + 'Symfony\\Component\\EventDispatcher\\DependencyInjection\\RegisterListenersPass' => $vendorDir . '/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php', + 'Symfony\\Component\\EventDispatcher\\EventDispatcher' => $vendorDir . '/symfony/event-dispatcher/EventDispatcher.php', + 'Symfony\\Component\\EventDispatcher\\EventDispatcherInterface' => $vendorDir . '/symfony/event-dispatcher/EventDispatcherInterface.php', + 'Symfony\\Component\\EventDispatcher\\EventSubscriberInterface' => $vendorDir . '/symfony/event-dispatcher/EventSubscriberInterface.php', + 'Symfony\\Component\\EventDispatcher\\GenericEvent' => $vendorDir . '/symfony/event-dispatcher/GenericEvent.php', + 'Symfony\\Component\\EventDispatcher\\ImmutableEventDispatcher' => $vendorDir . '/symfony/event-dispatcher/ImmutableEventDispatcher.php', + 'Symfony\\Component\\Filesystem\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/filesystem/Exception/ExceptionInterface.php', + 'Symfony\\Component\\Filesystem\\Exception\\FileNotFoundException' => $vendorDir . '/symfony/filesystem/Exception/FileNotFoundException.php', + 'Symfony\\Component\\Filesystem\\Exception\\IOException' => $vendorDir . '/symfony/filesystem/Exception/IOException.php', + 'Symfony\\Component\\Filesystem\\Exception\\IOExceptionInterface' => $vendorDir . '/symfony/filesystem/Exception/IOExceptionInterface.php', + 'Symfony\\Component\\Filesystem\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/filesystem/Exception/InvalidArgumentException.php', + 'Symfony\\Component\\Filesystem\\Exception\\RuntimeException' => $vendorDir . '/symfony/filesystem/Exception/RuntimeException.php', + 'Symfony\\Component\\Filesystem\\Filesystem' => $vendorDir . '/symfony/filesystem/Filesystem.php', + 'Symfony\\Component\\Filesystem\\Path' => $vendorDir . '/symfony/filesystem/Path.php', + 'Symfony\\Component\\Finder\\Comparator\\Comparator' => $vendorDir . '/symfony/finder/Comparator/Comparator.php', + 'Symfony\\Component\\Finder\\Comparator\\DateComparator' => $vendorDir . '/symfony/finder/Comparator/DateComparator.php', + 'Symfony\\Component\\Finder\\Comparator\\NumberComparator' => $vendorDir . '/symfony/finder/Comparator/NumberComparator.php', + 'Symfony\\Component\\Finder\\Exception\\AccessDeniedException' => $vendorDir . '/symfony/finder/Exception/AccessDeniedException.php', + 'Symfony\\Component\\Finder\\Exception\\DirectoryNotFoundException' => $vendorDir . '/symfony/finder/Exception/DirectoryNotFoundException.php', + 'Symfony\\Component\\Finder\\Finder' => $vendorDir . '/symfony/finder/Finder.php', + 'Symfony\\Component\\Finder\\Gitignore' => $vendorDir . '/symfony/finder/Gitignore.php', + 'Symfony\\Component\\Finder\\Glob' => $vendorDir . '/symfony/finder/Glob.php', + 'Symfony\\Component\\Finder\\Iterator\\CustomFilterIterator' => $vendorDir . '/symfony/finder/Iterator/CustomFilterIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\DateRangeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/DateRangeFilterIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\DepthRangeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/DepthRangeFilterIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\ExcludeDirectoryFilterIterator' => $vendorDir . '/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\FileTypeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/FileTypeFilterIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\FilecontentFilterIterator' => $vendorDir . '/symfony/finder/Iterator/FilecontentFilterIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\FilenameFilterIterator' => $vendorDir . '/symfony/finder/Iterator/FilenameFilterIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\LazyIterator' => $vendorDir . '/symfony/finder/Iterator/LazyIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\MultiplePcreFilterIterator' => $vendorDir . '/symfony/finder/Iterator/MultiplePcreFilterIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\PathFilterIterator' => $vendorDir . '/symfony/finder/Iterator/PathFilterIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\RecursiveDirectoryIterator' => $vendorDir . '/symfony/finder/Iterator/RecursiveDirectoryIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\SizeRangeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/SizeRangeFilterIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\SortableIterator' => $vendorDir . '/symfony/finder/Iterator/SortableIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\VcsIgnoredFilterIterator' => $vendorDir . '/symfony/finder/Iterator/VcsIgnoredFilterIterator.php', + 'Symfony\\Component\\Finder\\SplFileInfo' => $vendorDir . '/symfony/finder/SplFileInfo.php', + 'Symfony\\Component\\OptionsResolver\\Debug\\OptionsResolverIntrospector' => $vendorDir . '/symfony/options-resolver/Debug/OptionsResolverIntrospector.php', + 'Symfony\\Component\\OptionsResolver\\Exception\\AccessException' => $vendorDir . '/symfony/options-resolver/Exception/AccessException.php', + 'Symfony\\Component\\OptionsResolver\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/options-resolver/Exception/ExceptionInterface.php', + 'Symfony\\Component\\OptionsResolver\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/options-resolver/Exception/InvalidArgumentException.php', + 'Symfony\\Component\\OptionsResolver\\Exception\\InvalidOptionsException' => $vendorDir . '/symfony/options-resolver/Exception/InvalidOptionsException.php', + 'Symfony\\Component\\OptionsResolver\\Exception\\MissingOptionsException' => $vendorDir . '/symfony/options-resolver/Exception/MissingOptionsException.php', + 'Symfony\\Component\\OptionsResolver\\Exception\\NoConfigurationException' => $vendorDir . '/symfony/options-resolver/Exception/NoConfigurationException.php', + 'Symfony\\Component\\OptionsResolver\\Exception\\NoSuchOptionException' => $vendorDir . '/symfony/options-resolver/Exception/NoSuchOptionException.php', + 'Symfony\\Component\\OptionsResolver\\Exception\\OptionDefinitionException' => $vendorDir . '/symfony/options-resolver/Exception/OptionDefinitionException.php', + 'Symfony\\Component\\OptionsResolver\\Exception\\UndefinedOptionsException' => $vendorDir . '/symfony/options-resolver/Exception/UndefinedOptionsException.php', + 'Symfony\\Component\\OptionsResolver\\OptionConfigurator' => $vendorDir . '/symfony/options-resolver/OptionConfigurator.php', + 'Symfony\\Component\\OptionsResolver\\Options' => $vendorDir . '/symfony/options-resolver/Options.php', + 'Symfony\\Component\\OptionsResolver\\OptionsResolver' => $vendorDir . '/symfony/options-resolver/OptionsResolver.php', + 'Symfony\\Component\\Process\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/process/Exception/ExceptionInterface.php', + 'Symfony\\Component\\Process\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/process/Exception/InvalidArgumentException.php', + 'Symfony\\Component\\Process\\Exception\\LogicException' => $vendorDir . '/symfony/process/Exception/LogicException.php', + 'Symfony\\Component\\Process\\Exception\\ProcessFailedException' => $vendorDir . '/symfony/process/Exception/ProcessFailedException.php', + 'Symfony\\Component\\Process\\Exception\\ProcessSignaledException' => $vendorDir . '/symfony/process/Exception/ProcessSignaledException.php', + 'Symfony\\Component\\Process\\Exception\\ProcessTimedOutException' => $vendorDir . '/symfony/process/Exception/ProcessTimedOutException.php', + 'Symfony\\Component\\Process\\Exception\\RunProcessFailedException' => $vendorDir . '/symfony/process/Exception/RunProcessFailedException.php', + 'Symfony\\Component\\Process\\Exception\\RuntimeException' => $vendorDir . '/symfony/process/Exception/RuntimeException.php', + 'Symfony\\Component\\Process\\ExecutableFinder' => $vendorDir . '/symfony/process/ExecutableFinder.php', + 'Symfony\\Component\\Process\\InputStream' => $vendorDir . '/symfony/process/InputStream.php', + 'Symfony\\Component\\Process\\Messenger\\RunProcessContext' => $vendorDir . '/symfony/process/Messenger/RunProcessContext.php', + 'Symfony\\Component\\Process\\Messenger\\RunProcessMessage' => $vendorDir . '/symfony/process/Messenger/RunProcessMessage.php', + 'Symfony\\Component\\Process\\Messenger\\RunProcessMessageHandler' => $vendorDir . '/symfony/process/Messenger/RunProcessMessageHandler.php', + 'Symfony\\Component\\Process\\PhpExecutableFinder' => $vendorDir . '/symfony/process/PhpExecutableFinder.php', + 'Symfony\\Component\\Process\\PhpProcess' => $vendorDir . '/symfony/process/PhpProcess.php', + 'Symfony\\Component\\Process\\PhpSubprocess' => $vendorDir . '/symfony/process/PhpSubprocess.php', + 'Symfony\\Component\\Process\\Pipes\\AbstractPipes' => $vendorDir . '/symfony/process/Pipes/AbstractPipes.php', + 'Symfony\\Component\\Process\\Pipes\\PipesInterface' => $vendorDir . '/symfony/process/Pipes/PipesInterface.php', + 'Symfony\\Component\\Process\\Pipes\\UnixPipes' => $vendorDir . '/symfony/process/Pipes/UnixPipes.php', + 'Symfony\\Component\\Process\\Pipes\\WindowsPipes' => $vendorDir . '/symfony/process/Pipes/WindowsPipes.php', + 'Symfony\\Component\\Process\\Process' => $vendorDir . '/symfony/process/Process.php', + 'Symfony\\Component\\Process\\ProcessUtils' => $vendorDir . '/symfony/process/ProcessUtils.php', + 'Symfony\\Component\\Stopwatch\\Section' => $vendorDir . '/symfony/stopwatch/Section.php', + 'Symfony\\Component\\Stopwatch\\Stopwatch' => $vendorDir . '/symfony/stopwatch/Stopwatch.php', + 'Symfony\\Component\\Stopwatch\\StopwatchEvent' => $vendorDir . '/symfony/stopwatch/StopwatchEvent.php', + 'Symfony\\Component\\Stopwatch\\StopwatchPeriod' => $vendorDir . '/symfony/stopwatch/StopwatchPeriod.php', + 'Symfony\\Component\\String\\AbstractString' => $vendorDir . '/symfony/string/AbstractString.php', + 'Symfony\\Component\\String\\AbstractUnicodeString' => $vendorDir . '/symfony/string/AbstractUnicodeString.php', + 'Symfony\\Component\\String\\ByteString' => $vendorDir . '/symfony/string/ByteString.php', + 'Symfony\\Component\\String\\CodePointString' => $vendorDir . '/symfony/string/CodePointString.php', + 'Symfony\\Component\\String\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/string/Exception/ExceptionInterface.php', + 'Symfony\\Component\\String\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/string/Exception/InvalidArgumentException.php', + 'Symfony\\Component\\String\\Exception\\RuntimeException' => $vendorDir . '/symfony/string/Exception/RuntimeException.php', + 'Symfony\\Component\\String\\Inflector\\EnglishInflector' => $vendorDir . '/symfony/string/Inflector/EnglishInflector.php', + 'Symfony\\Component\\String\\Inflector\\FrenchInflector' => $vendorDir . '/symfony/string/Inflector/FrenchInflector.php', + 'Symfony\\Component\\String\\Inflector\\InflectorInterface' => $vendorDir . '/symfony/string/Inflector/InflectorInterface.php', + 'Symfony\\Component\\String\\LazyString' => $vendorDir . '/symfony/string/LazyString.php', + 'Symfony\\Component\\String\\Slugger\\AsciiSlugger' => $vendorDir . '/symfony/string/Slugger/AsciiSlugger.php', + 'Symfony\\Component\\String\\Slugger\\SluggerInterface' => $vendorDir . '/symfony/string/Slugger/SluggerInterface.php', + 'Symfony\\Component\\String\\UnicodeString' => $vendorDir . '/symfony/string/UnicodeString.php', + 'Symfony\\Contracts\\EventDispatcher\\Event' => $vendorDir . '/symfony/event-dispatcher-contracts/Event.php', + 'Symfony\\Contracts\\EventDispatcher\\EventDispatcherInterface' => $vendorDir . '/symfony/event-dispatcher-contracts/EventDispatcherInterface.php', + 'Symfony\\Contracts\\Service\\Attribute\\Required' => $vendorDir . '/symfony/service-contracts/Attribute/Required.php', + 'Symfony\\Contracts\\Service\\Attribute\\SubscribedService' => $vendorDir . '/symfony/service-contracts/Attribute/SubscribedService.php', + 'Symfony\\Contracts\\Service\\ResetInterface' => $vendorDir . '/symfony/service-contracts/ResetInterface.php', + 'Symfony\\Contracts\\Service\\ServiceLocatorTrait' => $vendorDir . '/symfony/service-contracts/ServiceLocatorTrait.php', + 'Symfony\\Contracts\\Service\\ServiceProviderInterface' => $vendorDir . '/symfony/service-contracts/ServiceProviderInterface.php', + 'Symfony\\Contracts\\Service\\ServiceSubscriberInterface' => $vendorDir . '/symfony/service-contracts/ServiceSubscriberInterface.php', + 'Symfony\\Contracts\\Service\\ServiceSubscriberTrait' => $vendorDir . '/symfony/service-contracts/ServiceSubscriberTrait.php', + 'Symfony\\Polyfill\\Ctype\\Ctype' => $vendorDir . '/symfony/polyfill-ctype/Ctype.php', + 'Symfony\\Polyfill\\Intl\\Grapheme\\Grapheme' => $vendorDir . '/symfony/polyfill-intl-grapheme/Grapheme.php', + 'Symfony\\Polyfill\\Intl\\Normalizer\\Normalizer' => $vendorDir . '/symfony/polyfill-intl-normalizer/Normalizer.php', + 'Symfony\\Polyfill\\Mbstring\\Mbstring' => $vendorDir . '/symfony/polyfill-mbstring/Mbstring.php', + 'Symfony\\Polyfill\\Php80\\Php80' => $vendorDir . '/symfony/polyfill-php80/Php80.php', + 'Symfony\\Polyfill\\Php80\\PhpToken' => $vendorDir . '/symfony/polyfill-php80/PhpToken.php', + 'Symfony\\Polyfill\\Php81\\Php81' => $vendorDir . '/symfony/polyfill-php81/Php81.php', 'UnhandledMatchError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php', 'ValueError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/ValueError.php', ); diff --git a/src/vendor/composer/autoload_static.php b/src/vendor/composer/autoload_static.php index fd95cb3..964caa1 100644 --- a/src/vendor/composer/autoload_static.php +++ b/src/vendor/composer/autoload_static.php @@ -181,8 +181,877 @@ class ComposerStaticInite1765f078aa62628913827ce651850ac 'Attribute' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Attribute.php', 'CURLStringFile' => __DIR__ . '/..' . '/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php', 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', + 'Composer\\Pcre\\MatchAllResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchAllResult.php', + 'Composer\\Pcre\\MatchAllStrictGroupsResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchAllStrictGroupsResult.php', + 'Composer\\Pcre\\MatchAllWithOffsetsResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchAllWithOffsetsResult.php', + 'Composer\\Pcre\\MatchResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchResult.php', + 'Composer\\Pcre\\MatchStrictGroupsResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchStrictGroupsResult.php', + 'Composer\\Pcre\\MatchWithOffsetsResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchWithOffsetsResult.php', + 'Composer\\Pcre\\PcreException' => __DIR__ . '/..' . '/composer/pcre/src/PcreException.php', + 'Composer\\Pcre\\Preg' => __DIR__ . '/..' . '/composer/pcre/src/Preg.php', + 'Composer\\Pcre\\Regex' => __DIR__ . '/..' . '/composer/pcre/src/Regex.php', + 'Composer\\Pcre\\ReplaceResult' => __DIR__ . '/..' . '/composer/pcre/src/ReplaceResult.php', + 'Composer\\Pcre\\UnexpectedNullMatchException' => __DIR__ . '/..' . '/composer/pcre/src/UnexpectedNullMatchException.php', + 'Composer\\Semver\\Comparator' => __DIR__ . '/..' . '/composer/semver/src/Comparator.php', + 'Composer\\Semver\\CompilingMatcher' => __DIR__ . '/..' . '/composer/semver/src/CompilingMatcher.php', + 'Composer\\Semver\\Constraint\\Bound' => __DIR__ . '/..' . '/composer/semver/src/Constraint/Bound.php', + 'Composer\\Semver\\Constraint\\Constraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/Constraint.php', + 'Composer\\Semver\\Constraint\\ConstraintInterface' => __DIR__ . '/..' . '/composer/semver/src/Constraint/ConstraintInterface.php', + 'Composer\\Semver\\Constraint\\MatchAllConstraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/MatchAllConstraint.php', + 'Composer\\Semver\\Constraint\\MatchNoneConstraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/MatchNoneConstraint.php', + 'Composer\\Semver\\Constraint\\MultiConstraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/MultiConstraint.php', + 'Composer\\Semver\\Interval' => __DIR__ . '/..' . '/composer/semver/src/Interval.php', + 'Composer\\Semver\\Intervals' => __DIR__ . '/..' . '/composer/semver/src/Intervals.php', + 'Composer\\Semver\\Semver' => __DIR__ . '/..' . '/composer/semver/src/Semver.php', + 'Composer\\Semver\\VersionParser' => __DIR__ . '/..' . '/composer/semver/src/VersionParser.php', + 'Composer\\XdebugHandler\\PhpConfig' => __DIR__ . '/..' . '/composer/xdebug-handler/src/PhpConfig.php', + 'Composer\\XdebugHandler\\Process' => __DIR__ . '/..' . '/composer/xdebug-handler/src/Process.php', + 'Composer\\XdebugHandler\\Status' => __DIR__ . '/..' . '/composer/xdebug-handler/src/Status.php', + 'Composer\\XdebugHandler\\XdebugHandler' => __DIR__ . '/..' . '/composer/xdebug-handler/src/XdebugHandler.php', 'Normalizer' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php', + 'PhpCsFixer\\AbstractDoctrineAnnotationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/AbstractDoctrineAnnotationFixer.php', + 'PhpCsFixer\\AbstractFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/AbstractFixer.php', + 'PhpCsFixer\\AbstractFopenFlagFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/AbstractFopenFlagFixer.php', + 'PhpCsFixer\\AbstractFunctionReferenceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/AbstractFunctionReferenceFixer.php', + 'PhpCsFixer\\AbstractNoUselessElseFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/AbstractNoUselessElseFixer.php', + 'PhpCsFixer\\AbstractPhpdocToTypeDeclarationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/AbstractPhpdocToTypeDeclarationFixer.php', + 'PhpCsFixer\\AbstractPhpdocTypesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/AbstractPhpdocTypesFixer.php', + 'PhpCsFixer\\AbstractProxyFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/AbstractProxyFixer.php', + 'PhpCsFixer\\Cache\\Cache' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/Cache.php', + 'PhpCsFixer\\Cache\\CacheInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/CacheInterface.php', + 'PhpCsFixer\\Cache\\CacheManagerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/CacheManagerInterface.php', + 'PhpCsFixer\\Cache\\Directory' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/Directory.php', + 'PhpCsFixer\\Cache\\DirectoryInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/DirectoryInterface.php', + 'PhpCsFixer\\Cache\\FileCacheManager' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/FileCacheManager.php', + 'PhpCsFixer\\Cache\\FileHandler' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/FileHandler.php', + 'PhpCsFixer\\Cache\\FileHandlerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/FileHandlerInterface.php', + 'PhpCsFixer\\Cache\\NullCacheManager' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/NullCacheManager.php', + 'PhpCsFixer\\Cache\\Signature' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/Signature.php', + 'PhpCsFixer\\Cache\\SignatureInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/SignatureInterface.php', + 'PhpCsFixer\\Config' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Config.php', + 'PhpCsFixer\\ConfigInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/ConfigInterface.php', + 'PhpCsFixer\\ConfigurationException\\InvalidConfigurationException' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/ConfigurationException/InvalidConfigurationException.php', + 'PhpCsFixer\\ConfigurationException\\InvalidFixerConfigurationException' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/ConfigurationException/InvalidFixerConfigurationException.php', + 'PhpCsFixer\\ConfigurationException\\InvalidForEnvFixerConfigurationException' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/ConfigurationException/InvalidForEnvFixerConfigurationException.php', + 'PhpCsFixer\\ConfigurationException\\RequiredFixerConfigurationException' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/ConfigurationException/RequiredFixerConfigurationException.php', + 'PhpCsFixer\\Console\\Application' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Application.php', + 'PhpCsFixer\\Console\\Command\\CheckCommand' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Command/CheckCommand.php', + 'PhpCsFixer\\Console\\Command\\DescribeCommand' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Command/DescribeCommand.php', + 'PhpCsFixer\\Console\\Command\\DescribeNameNotFoundException' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Command/DescribeNameNotFoundException.php', + 'PhpCsFixer\\Console\\Command\\DocumentationCommand' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Command/DocumentationCommand.php', + 'PhpCsFixer\\Console\\Command\\FixCommand' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Command/FixCommand.php', + 'PhpCsFixer\\Console\\Command\\FixCommandExitStatusCalculator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Command/FixCommandExitStatusCalculator.php', + 'PhpCsFixer\\Console\\Command\\HelpCommand' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Command/HelpCommand.php', + 'PhpCsFixer\\Console\\Command\\ListFilesCommand' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Command/ListFilesCommand.php', + 'PhpCsFixer\\Console\\Command\\ListSetsCommand' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Command/ListSetsCommand.php', + 'PhpCsFixer\\Console\\Command\\SelfUpdateCommand' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Command/SelfUpdateCommand.php', + 'PhpCsFixer\\Console\\ConfigurationResolver' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/ConfigurationResolver.php', + 'PhpCsFixer\\Console\\Output\\ErrorOutput' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Output/ErrorOutput.php', + 'PhpCsFixer\\Console\\Output\\OutputContext' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Output/OutputContext.php', + 'PhpCsFixer\\Console\\Output\\Progress\\DotsOutput' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/DotsOutput.php', + 'PhpCsFixer\\Console\\Output\\Progress\\NullOutput' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/NullOutput.php', + 'PhpCsFixer\\Console\\Output\\Progress\\PercentageBarOutput' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/PercentageBarOutput.php', + 'PhpCsFixer\\Console\\Output\\Progress\\ProgressOutputFactory' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputFactory.php', + 'PhpCsFixer\\Console\\Output\\Progress\\ProgressOutputInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputInterface.php', + 'PhpCsFixer\\Console\\Output\\Progress\\ProgressOutputType' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputType.php', + 'PhpCsFixer\\Console\\Report\\FixReport\\CheckstyleReporter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/CheckstyleReporter.php', + 'PhpCsFixer\\Console\\Report\\FixReport\\GitlabReporter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/GitlabReporter.php', + 'PhpCsFixer\\Console\\Report\\FixReport\\JsonReporter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/JsonReporter.php', + 'PhpCsFixer\\Console\\Report\\FixReport\\JunitReporter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/JunitReporter.php', + 'PhpCsFixer\\Console\\Report\\FixReport\\ReportSummary' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/ReportSummary.php', + 'PhpCsFixer\\Console\\Report\\FixReport\\ReporterFactory' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/ReporterFactory.php', + 'PhpCsFixer\\Console\\Report\\FixReport\\ReporterInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/ReporterInterface.php', + 'PhpCsFixer\\Console\\Report\\FixReport\\TextReporter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/TextReporter.php', + 'PhpCsFixer\\Console\\Report\\FixReport\\XmlReporter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/XmlReporter.php', + 'PhpCsFixer\\Console\\Report\\ListSetsReport\\JsonReporter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/JsonReporter.php', + 'PhpCsFixer\\Console\\Report\\ListSetsReport\\ReportSummary' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/ReportSummary.php', + 'PhpCsFixer\\Console\\Report\\ListSetsReport\\ReporterFactory' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/ReporterFactory.php', + 'PhpCsFixer\\Console\\Report\\ListSetsReport\\ReporterInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/ReporterInterface.php', + 'PhpCsFixer\\Console\\Report\\ListSetsReport\\TextReporter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/TextReporter.php', + 'PhpCsFixer\\Console\\SelfUpdate\\GithubClient' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/GithubClient.php', + 'PhpCsFixer\\Console\\SelfUpdate\\GithubClientInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/GithubClientInterface.php', + 'PhpCsFixer\\Console\\SelfUpdate\\NewVersionChecker' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/NewVersionChecker.php', + 'PhpCsFixer\\Console\\SelfUpdate\\NewVersionCheckerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/NewVersionCheckerInterface.php', + 'PhpCsFixer\\Console\\WarningsDetector' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/WarningsDetector.php', + 'PhpCsFixer\\Differ\\DiffConsoleFormatter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Differ/DiffConsoleFormatter.php', + 'PhpCsFixer\\Differ\\DifferInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Differ/DifferInterface.php', + 'PhpCsFixer\\Differ\\FullDiffer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Differ/FullDiffer.php', + 'PhpCsFixer\\Differ\\NullDiffer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Differ/NullDiffer.php', + 'PhpCsFixer\\Differ\\UnifiedDiffer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Differ/UnifiedDiffer.php', + 'PhpCsFixer\\DocBlock\\Annotation' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/DocBlock/Annotation.php', + 'PhpCsFixer\\DocBlock\\DocBlock' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/DocBlock/DocBlock.php', + 'PhpCsFixer\\DocBlock\\Line' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/DocBlock/Line.php', + 'PhpCsFixer\\DocBlock\\ShortDescription' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/DocBlock/ShortDescription.php', + 'PhpCsFixer\\DocBlock\\Tag' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/DocBlock/Tag.php', + 'PhpCsFixer\\DocBlock\\TagComparator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/DocBlock/TagComparator.php', + 'PhpCsFixer\\DocBlock\\TypeExpression' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/DocBlock/TypeExpression.php', + 'PhpCsFixer\\Doctrine\\Annotation\\DocLexer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Doctrine/Annotation/DocLexer.php', + 'PhpCsFixer\\Doctrine\\Annotation\\Token' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Doctrine/Annotation/Token.php', + 'PhpCsFixer\\Doctrine\\Annotation\\Tokens' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Doctrine/Annotation/Tokens.php', + 'PhpCsFixer\\Documentation\\DocumentationLocator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Documentation/DocumentationLocator.php', + 'PhpCsFixer\\Documentation\\FixerDocumentGenerator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Documentation/FixerDocumentGenerator.php', + 'PhpCsFixer\\Documentation\\RstUtils' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Documentation/RstUtils.php', + 'PhpCsFixer\\Documentation\\RuleSetDocumentationGenerator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Documentation/RuleSetDocumentationGenerator.php', + 'PhpCsFixer\\Error\\Error' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Error/Error.php', + 'PhpCsFixer\\Error\\ErrorsManager' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Error/ErrorsManager.php', + 'PhpCsFixer\\ExecutorWithoutErrorHandler' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/ExecutorWithoutErrorHandler.php', + 'PhpCsFixer\\ExecutorWithoutErrorHandlerException' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/ExecutorWithoutErrorHandlerException.php', + 'PhpCsFixer\\FileReader' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FileReader.php', + 'PhpCsFixer\\FileRemoval' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FileRemoval.php', + 'PhpCsFixer\\Finder' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Finder.php', + 'PhpCsFixer\\FixerConfiguration\\AliasedFixerOption' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/AliasedFixerOption.php', + 'PhpCsFixer\\FixerConfiguration\\AliasedFixerOptionBuilder' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/AliasedFixerOptionBuilder.php', + 'PhpCsFixer\\FixerConfiguration\\AllowedValueSubset' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/AllowedValueSubset.php', + 'PhpCsFixer\\FixerConfiguration\\DeprecatedFixerOption' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/DeprecatedFixerOption.php', + 'PhpCsFixer\\FixerConfiguration\\DeprecatedFixerOptionInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/DeprecatedFixerOptionInterface.php', + 'PhpCsFixer\\FixerConfiguration\\FixerConfigurationResolver' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerConfigurationResolver.php', + 'PhpCsFixer\\FixerConfiguration\\FixerConfigurationResolverInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerConfigurationResolverInterface.php', + 'PhpCsFixer\\FixerConfiguration\\FixerOption' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerOption.php', + 'PhpCsFixer\\FixerConfiguration\\FixerOptionBuilder' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerOptionBuilder.php', + 'PhpCsFixer\\FixerConfiguration\\FixerOptionInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerOptionInterface.php', + 'PhpCsFixer\\FixerConfiguration\\FixerOptionSorter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerOptionSorter.php', + 'PhpCsFixer\\FixerConfiguration\\InvalidOptionsForEnvException' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/InvalidOptionsForEnvException.php', + 'PhpCsFixer\\FixerDefinition\\CodeSample' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/CodeSample.php', + 'PhpCsFixer\\FixerDefinition\\CodeSampleInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/CodeSampleInterface.php', + 'PhpCsFixer\\FixerDefinition\\FileSpecificCodeSample' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/FileSpecificCodeSample.php', + 'PhpCsFixer\\FixerDefinition\\FileSpecificCodeSampleInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/FileSpecificCodeSampleInterface.php', + 'PhpCsFixer\\FixerDefinition\\FixerDefinition' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/FixerDefinition.php', + 'PhpCsFixer\\FixerDefinition\\FixerDefinitionInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/FixerDefinitionInterface.php', + 'PhpCsFixer\\FixerDefinition\\VersionSpecificCodeSample' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecificCodeSample.php', + 'PhpCsFixer\\FixerDefinition\\VersionSpecificCodeSampleInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecificCodeSampleInterface.php', + 'PhpCsFixer\\FixerDefinition\\VersionSpecification' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecification.php', + 'PhpCsFixer\\FixerDefinition\\VersionSpecificationInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecificationInterface.php', + 'PhpCsFixer\\FixerFactory' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerFactory.php', + 'PhpCsFixer\\FixerFileProcessedEvent' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerFileProcessedEvent.php', + 'PhpCsFixer\\FixerNameValidator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerNameValidator.php', + 'PhpCsFixer\\Fixer\\AbstractIncrementOperatorFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/AbstractIncrementOperatorFixer.php', + 'PhpCsFixer\\Fixer\\AbstractPhpUnitFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/AbstractPhpUnitFixer.php', + 'PhpCsFixer\\Fixer\\AbstractShortOperatorFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/AbstractShortOperatorFixer.php', + 'PhpCsFixer\\Fixer\\Alias\\ArrayPushFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/ArrayPushFixer.php', + 'PhpCsFixer\\Fixer\\Alias\\BacktickToShellExecFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/BacktickToShellExecFixer.php', + 'PhpCsFixer\\Fixer\\Alias\\EregToPregFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/EregToPregFixer.php', + 'PhpCsFixer\\Fixer\\Alias\\MbStrFunctionsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/MbStrFunctionsFixer.php', + 'PhpCsFixer\\Fixer\\Alias\\ModernizeStrposFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/ModernizeStrposFixer.php', + 'PhpCsFixer\\Fixer\\Alias\\NoAliasFunctionsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/NoAliasFunctionsFixer.php', + 'PhpCsFixer\\Fixer\\Alias\\NoAliasLanguageConstructCallFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/NoAliasLanguageConstructCallFixer.php', + 'PhpCsFixer\\Fixer\\Alias\\NoMixedEchoPrintFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/NoMixedEchoPrintFixer.php', + 'PhpCsFixer\\Fixer\\Alias\\PowToExponentiationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/PowToExponentiationFixer.php', + 'PhpCsFixer\\Fixer\\Alias\\RandomApiMigrationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/RandomApiMigrationFixer.php', + 'PhpCsFixer\\Fixer\\Alias\\SetTypeToCastFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/SetTypeToCastFixer.php', + 'PhpCsFixer\\Fixer\\ArrayNotation\\ArraySyntaxFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/ArraySyntaxFixer.php', + 'PhpCsFixer\\Fixer\\ArrayNotation\\NoMultilineWhitespaceAroundDoubleArrowFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoMultilineWhitespaceAroundDoubleArrowFixer.php', + 'PhpCsFixer\\Fixer\\ArrayNotation\\NoTrailingCommaInSinglelineArrayFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoTrailingCommaInSinglelineArrayFixer.php', + 'PhpCsFixer\\Fixer\\ArrayNotation\\NoWhitespaceBeforeCommaInArrayFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoWhitespaceBeforeCommaInArrayFixer.php', + 'PhpCsFixer\\Fixer\\ArrayNotation\\NormalizeIndexBraceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NormalizeIndexBraceFixer.php', + 'PhpCsFixer\\Fixer\\ArrayNotation\\ReturnToYieldFromFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/ReturnToYieldFromFixer.php', + 'PhpCsFixer\\Fixer\\ArrayNotation\\TrimArraySpacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/TrimArraySpacesFixer.php', + 'PhpCsFixer\\Fixer\\ArrayNotation\\WhitespaceAfterCommaInArrayFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/WhitespaceAfterCommaInArrayFixer.php', + 'PhpCsFixer\\Fixer\\ArrayNotation\\YieldFromArrayToYieldsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/YieldFromArrayToYieldsFixer.php', + 'PhpCsFixer\\Fixer\\AttributeNotation\\AttributeEmptyParenthesesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/AttributeNotation/AttributeEmptyParenthesesFixer.php', + 'PhpCsFixer\\Fixer\\Basic\\BracesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/BracesFixer.php', + 'PhpCsFixer\\Fixer\\Basic\\BracesPositionFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/BracesPositionFixer.php', + 'PhpCsFixer\\Fixer\\Basic\\CurlyBracesPositionFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/CurlyBracesPositionFixer.php', + 'PhpCsFixer\\Fixer\\Basic\\EncodingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/EncodingFixer.php', + 'PhpCsFixer\\Fixer\\Basic\\NoMultipleStatementsPerLineFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/NoMultipleStatementsPerLineFixer.php', + 'PhpCsFixer\\Fixer\\Basic\\NoTrailingCommaInSinglelineFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/NoTrailingCommaInSinglelineFixer.php', + 'PhpCsFixer\\Fixer\\Basic\\NonPrintableCharacterFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/NonPrintableCharacterFixer.php', + 'PhpCsFixer\\Fixer\\Basic\\NumericLiteralSeparatorFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/NumericLiteralSeparatorFixer.php', + 'PhpCsFixer\\Fixer\\Basic\\OctalNotationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/OctalNotationFixer.php', + 'PhpCsFixer\\Fixer\\Basic\\PsrAutoloadingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/PsrAutoloadingFixer.php', + 'PhpCsFixer\\Fixer\\Basic\\SingleLineEmptyBodyFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/SingleLineEmptyBodyFixer.php', + 'PhpCsFixer\\Fixer\\Casing\\ClassReferenceNameCasingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/ClassReferenceNameCasingFixer.php', + 'PhpCsFixer\\Fixer\\Casing\\ConstantCaseFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/ConstantCaseFixer.php', + 'PhpCsFixer\\Fixer\\Casing\\IntegerLiteralCaseFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/IntegerLiteralCaseFixer.php', + 'PhpCsFixer\\Fixer\\Casing\\LowercaseKeywordsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/LowercaseKeywordsFixer.php', + 'PhpCsFixer\\Fixer\\Casing\\LowercaseStaticReferenceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/LowercaseStaticReferenceFixer.php', + 'PhpCsFixer\\Fixer\\Casing\\MagicConstantCasingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/MagicConstantCasingFixer.php', + 'PhpCsFixer\\Fixer\\Casing\\MagicMethodCasingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/MagicMethodCasingFixer.php', + 'PhpCsFixer\\Fixer\\Casing\\NativeFunctionCasingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/NativeFunctionCasingFixer.php', + 'PhpCsFixer\\Fixer\\Casing\\NativeFunctionTypeDeclarationCasingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/NativeFunctionTypeDeclarationCasingFixer.php', + 'PhpCsFixer\\Fixer\\Casing\\NativeTypeDeclarationCasingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/NativeTypeDeclarationCasingFixer.php', + 'PhpCsFixer\\Fixer\\CastNotation\\CastSpacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/CastSpacesFixer.php', + 'PhpCsFixer\\Fixer\\CastNotation\\LowercaseCastFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/LowercaseCastFixer.php', + 'PhpCsFixer\\Fixer\\CastNotation\\ModernizeTypesCastingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/ModernizeTypesCastingFixer.php', + 'PhpCsFixer\\Fixer\\CastNotation\\NoShortBoolCastFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/NoShortBoolCastFixer.php', + 'PhpCsFixer\\Fixer\\CastNotation\\NoUnsetCastFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/NoUnsetCastFixer.php', + 'PhpCsFixer\\Fixer\\CastNotation\\ShortScalarCastFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/ShortScalarCastFixer.php', + 'PhpCsFixer\\Fixer\\ClassNotation\\ClassAttributesSeparationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ClassAttributesSeparationFixer.php', + 'PhpCsFixer\\Fixer\\ClassNotation\\ClassDefinitionFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ClassDefinitionFixer.php', + 'PhpCsFixer\\Fixer\\ClassNotation\\FinalClassFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/FinalClassFixer.php', + 'PhpCsFixer\\Fixer\\ClassNotation\\FinalInternalClassFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/FinalInternalClassFixer.php', + 'PhpCsFixer\\Fixer\\ClassNotation\\FinalPublicMethodForAbstractClassFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/FinalPublicMethodForAbstractClassFixer.php', + 'PhpCsFixer\\Fixer\\ClassNotation\\NoBlankLinesAfterClassOpeningFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoBlankLinesAfterClassOpeningFixer.php', + 'PhpCsFixer\\Fixer\\ClassNotation\\NoNullPropertyInitializationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoNullPropertyInitializationFixer.php', + 'PhpCsFixer\\Fixer\\ClassNotation\\NoPhp4ConstructorFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoPhp4ConstructorFixer.php', + 'PhpCsFixer\\Fixer\\ClassNotation\\NoUnneededFinalMethodFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoUnneededFinalMethodFixer.php', + 'PhpCsFixer\\Fixer\\ClassNotation\\OrderedClassElementsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedClassElementsFixer.php', + 'PhpCsFixer\\Fixer\\ClassNotation\\OrderedInterfacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedInterfacesFixer.php', + 'PhpCsFixer\\Fixer\\ClassNotation\\OrderedTraitsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedTraitsFixer.php', + 'PhpCsFixer\\Fixer\\ClassNotation\\OrderedTypesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedTypesFixer.php', + 'PhpCsFixer\\Fixer\\ClassNotation\\PhpdocReadonlyClassCommentToKeywordFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/PhpdocReadonlyClassCommentToKeywordFixer.php', + 'PhpCsFixer\\Fixer\\ClassNotation\\ProtectedToPrivateFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ProtectedToPrivateFixer.php', + 'PhpCsFixer\\Fixer\\ClassNotation\\SelfAccessorFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SelfAccessorFixer.php', + 'PhpCsFixer\\Fixer\\ClassNotation\\SelfStaticAccessorFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SelfStaticAccessorFixer.php', + 'PhpCsFixer\\Fixer\\ClassNotation\\SingleClassElementPerStatementFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SingleClassElementPerStatementFixer.php', + 'PhpCsFixer\\Fixer\\ClassNotation\\SingleTraitInsertPerStatementFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SingleTraitInsertPerStatementFixer.php', + 'PhpCsFixer\\Fixer\\ClassNotation\\VisibilityRequiredFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/VisibilityRequiredFixer.php', + 'PhpCsFixer\\Fixer\\ClassUsage\\DateTimeImmutableFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassUsage/DateTimeImmutableFixer.php', + 'PhpCsFixer\\Fixer\\Comment\\CommentToPhpdocFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/CommentToPhpdocFixer.php', + 'PhpCsFixer\\Fixer\\Comment\\HeaderCommentFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/HeaderCommentFixer.php', + 'PhpCsFixer\\Fixer\\Comment\\MultilineCommentOpeningClosingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/MultilineCommentOpeningClosingFixer.php', + 'PhpCsFixer\\Fixer\\Comment\\NoEmptyCommentFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/NoEmptyCommentFixer.php', + 'PhpCsFixer\\Fixer\\Comment\\NoTrailingWhitespaceInCommentFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/NoTrailingWhitespaceInCommentFixer.php', + 'PhpCsFixer\\Fixer\\Comment\\SingleLineCommentSpacingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/SingleLineCommentSpacingFixer.php', + 'PhpCsFixer\\Fixer\\Comment\\SingleLineCommentStyleFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/SingleLineCommentStyleFixer.php', + 'PhpCsFixer\\Fixer\\ConfigurableFixerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ConfigurableFixerInterface.php', + 'PhpCsFixer\\Fixer\\ConstantNotation\\NativeConstantInvocationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ConstantNotation/NativeConstantInvocationFixer.php', + 'PhpCsFixer\\Fixer\\ControlStructure\\ControlStructureBracesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/ControlStructureBracesFixer.php', + 'PhpCsFixer\\Fixer\\ControlStructure\\ControlStructureContinuationPositionFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/ControlStructureContinuationPositionFixer.php', + 'PhpCsFixer\\Fixer\\ControlStructure\\ElseifFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/ElseifFixer.php', + 'PhpCsFixer\\Fixer\\ControlStructure\\EmptyLoopBodyFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/EmptyLoopBodyFixer.php', + 'PhpCsFixer\\Fixer\\ControlStructure\\EmptyLoopConditionFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/EmptyLoopConditionFixer.php', + 'PhpCsFixer\\Fixer\\ControlStructure\\IncludeFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/IncludeFixer.php', + 'PhpCsFixer\\Fixer\\ControlStructure\\NoAlternativeSyntaxFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoAlternativeSyntaxFixer.php', + 'PhpCsFixer\\Fixer\\ControlStructure\\NoBreakCommentFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoBreakCommentFixer.php', + 'PhpCsFixer\\Fixer\\ControlStructure\\NoSuperfluousElseifFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoSuperfluousElseifFixer.php', + 'PhpCsFixer\\Fixer\\ControlStructure\\NoTrailingCommaInListCallFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoTrailingCommaInListCallFixer.php', + 'PhpCsFixer\\Fixer\\ControlStructure\\NoUnneededBracesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoUnneededBracesFixer.php', + 'PhpCsFixer\\Fixer\\ControlStructure\\NoUnneededControlParenthesesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoUnneededControlParenthesesFixer.php', + 'PhpCsFixer\\Fixer\\ControlStructure\\NoUnneededCurlyBracesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoUnneededCurlyBracesFixer.php', + 'PhpCsFixer\\Fixer\\ControlStructure\\NoUselessElseFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoUselessElseFixer.php', + 'PhpCsFixer\\Fixer\\ControlStructure\\SimplifiedIfReturnFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/SimplifiedIfReturnFixer.php', + 'PhpCsFixer\\Fixer\\ControlStructure\\SwitchCaseSemicolonToColonFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/SwitchCaseSemicolonToColonFixer.php', + 'PhpCsFixer\\Fixer\\ControlStructure\\SwitchCaseSpaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/SwitchCaseSpaceFixer.php', + 'PhpCsFixer\\Fixer\\ControlStructure\\SwitchContinueToBreakFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/SwitchContinueToBreakFixer.php', + 'PhpCsFixer\\Fixer\\ControlStructure\\TrailingCommaInMultilineFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/TrailingCommaInMultilineFixer.php', + 'PhpCsFixer\\Fixer\\ControlStructure\\YodaStyleFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/YodaStyleFixer.php', + 'PhpCsFixer\\Fixer\\DeprecatedFixerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/DeprecatedFixerInterface.php', + 'PhpCsFixer\\Fixer\\DoctrineAnnotation\\DoctrineAnnotationArrayAssignmentFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationArrayAssignmentFixer.php', + 'PhpCsFixer\\Fixer\\DoctrineAnnotation\\DoctrineAnnotationBracesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationBracesFixer.php', + 'PhpCsFixer\\Fixer\\DoctrineAnnotation\\DoctrineAnnotationIndentationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationIndentationFixer.php', + 'PhpCsFixer\\Fixer\\DoctrineAnnotation\\DoctrineAnnotationSpacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationSpacesFixer.php', + 'PhpCsFixer\\Fixer\\ExperimentalFixerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ExperimentalFixerInterface.php', + 'PhpCsFixer\\Fixer\\FixerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FixerInterface.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\CombineNestedDirnameFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/CombineNestedDirnameFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\DateTimeCreateFromFormatCallFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/DateTimeCreateFromFormatCallFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\FopenFlagOrderFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FopenFlagOrderFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\FopenFlagsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FopenFlagsFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\FunctionDeclarationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FunctionDeclarationFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\FunctionTypehintSpaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FunctionTypehintSpaceFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\ImplodeCallFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/ImplodeCallFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\LambdaNotUsedImportFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/LambdaNotUsedImportFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\MethodArgumentSpaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/MethodArgumentSpaceFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\NativeFunctionInvocationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NativeFunctionInvocationFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\NoSpacesAfterFunctionNameFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoSpacesAfterFunctionNameFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\NoTrailingCommaInSinglelineFunctionCallFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoTrailingCommaInSinglelineFunctionCallFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\NoUnreachableDefaultArgumentValueFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoUnreachableDefaultArgumentValueFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\NoUselessSprintfFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoUselessSprintfFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\NullableTypeDeclarationForDefaultNullValueFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NullableTypeDeclarationForDefaultNullValueFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\PhpdocToParamTypeFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/PhpdocToParamTypeFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\PhpdocToPropertyTypeFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/PhpdocToPropertyTypeFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\PhpdocToReturnTypeFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/PhpdocToReturnTypeFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\RegularCallableCallFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/RegularCallableCallFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\ReturnTypeDeclarationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/ReturnTypeDeclarationFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\SingleLineThrowFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/SingleLineThrowFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\StaticLambdaFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/StaticLambdaFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\UseArrowFunctionsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/UseArrowFunctionsFixer.php', + 'PhpCsFixer\\Fixer\\FunctionNotation\\VoidReturnFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/VoidReturnFixer.php', + 'PhpCsFixer\\Fixer\\Import\\FullyQualifiedStrictTypesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Import/FullyQualifiedStrictTypesFixer.php', + 'PhpCsFixer\\Fixer\\Import\\GlobalNamespaceImportFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Import/GlobalNamespaceImportFixer.php', + 'PhpCsFixer\\Fixer\\Import\\GroupImportFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Import/GroupImportFixer.php', + 'PhpCsFixer\\Fixer\\Import\\NoLeadingImportSlashFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Import/NoLeadingImportSlashFixer.php', + 'PhpCsFixer\\Fixer\\Import\\NoUnneededImportAliasFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Import/NoUnneededImportAliasFixer.php', + 'PhpCsFixer\\Fixer\\Import\\NoUnusedImportsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Import/NoUnusedImportsFixer.php', + 'PhpCsFixer\\Fixer\\Import\\OrderedImportsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Import/OrderedImportsFixer.php', + 'PhpCsFixer\\Fixer\\Import\\SingleImportPerStatementFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Import/SingleImportPerStatementFixer.php', + 'PhpCsFixer\\Fixer\\Import\\SingleLineAfterImportsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Import/SingleLineAfterImportsFixer.php', + 'PhpCsFixer\\Fixer\\Indentation' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Indentation.php', + 'PhpCsFixer\\Fixer\\LanguageConstruct\\ClassKeywordFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/ClassKeywordFixer.php', + 'PhpCsFixer\\Fixer\\LanguageConstruct\\ClassKeywordRemoveFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/ClassKeywordRemoveFixer.php', + 'PhpCsFixer\\Fixer\\LanguageConstruct\\CombineConsecutiveIssetsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/CombineConsecutiveIssetsFixer.php', + 'PhpCsFixer\\Fixer\\LanguageConstruct\\CombineConsecutiveUnsetsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/CombineConsecutiveUnsetsFixer.php', + 'PhpCsFixer\\Fixer\\LanguageConstruct\\DeclareEqualNormalizeFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/DeclareEqualNormalizeFixer.php', + 'PhpCsFixer\\Fixer\\LanguageConstruct\\DeclareParenthesesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/DeclareParenthesesFixer.php', + 'PhpCsFixer\\Fixer\\LanguageConstruct\\DirConstantFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/DirConstantFixer.php', + 'PhpCsFixer\\Fixer\\LanguageConstruct\\ErrorSuppressionFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/ErrorSuppressionFixer.php', + 'PhpCsFixer\\Fixer\\LanguageConstruct\\ExplicitIndirectVariableFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/ExplicitIndirectVariableFixer.php', + 'PhpCsFixer\\Fixer\\LanguageConstruct\\FunctionToConstantFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/FunctionToConstantFixer.php', + 'PhpCsFixer\\Fixer\\LanguageConstruct\\GetClassToClassKeywordFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/GetClassToClassKeywordFixer.php', + 'PhpCsFixer\\Fixer\\LanguageConstruct\\IsNullFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/IsNullFixer.php', + 'PhpCsFixer\\Fixer\\LanguageConstruct\\NoUnsetOnPropertyFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/NoUnsetOnPropertyFixer.php', + 'PhpCsFixer\\Fixer\\LanguageConstruct\\NullableTypeDeclarationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/NullableTypeDeclarationFixer.php', + 'PhpCsFixer\\Fixer\\LanguageConstruct\\SingleSpaceAfterConstructFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/SingleSpaceAfterConstructFixer.php', + 'PhpCsFixer\\Fixer\\LanguageConstruct\\SingleSpaceAroundConstructFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/SingleSpaceAroundConstructFixer.php', + 'PhpCsFixer\\Fixer\\ListNotation\\ListSyntaxFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ListNotation/ListSyntaxFixer.php', + 'PhpCsFixer\\Fixer\\NamespaceNotation\\BlankLineAfterNamespaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/BlankLineAfterNamespaceFixer.php', + 'PhpCsFixer\\Fixer\\NamespaceNotation\\BlankLinesBeforeNamespaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/BlankLinesBeforeNamespaceFixer.php', + 'PhpCsFixer\\Fixer\\NamespaceNotation\\CleanNamespaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/CleanNamespaceFixer.php', + 'PhpCsFixer\\Fixer\\NamespaceNotation\\NoBlankLinesBeforeNamespaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/NoBlankLinesBeforeNamespaceFixer.php', + 'PhpCsFixer\\Fixer\\NamespaceNotation\\NoLeadingNamespaceWhitespaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/NoLeadingNamespaceWhitespaceFixer.php', + 'PhpCsFixer\\Fixer\\NamespaceNotation\\SingleBlankLineBeforeNamespaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/SingleBlankLineBeforeNamespaceFixer.php', + 'PhpCsFixer\\Fixer\\Naming\\NoHomoglyphNamesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Naming/NoHomoglyphNamesFixer.php', + 'PhpCsFixer\\Fixer\\Operator\\AssignNullCoalescingToCoalesceEqualFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/AssignNullCoalescingToCoalesceEqualFixer.php', + 'PhpCsFixer\\Fixer\\Operator\\BinaryOperatorSpacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/BinaryOperatorSpacesFixer.php', + 'PhpCsFixer\\Fixer\\Operator\\ConcatSpaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/ConcatSpaceFixer.php', + 'PhpCsFixer\\Fixer\\Operator\\IncrementStyleFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/IncrementStyleFixer.php', + 'PhpCsFixer\\Fixer\\Operator\\LogicalOperatorsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/LogicalOperatorsFixer.php', + 'PhpCsFixer\\Fixer\\Operator\\LongToShorthandOperatorFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/LongToShorthandOperatorFixer.php', + 'PhpCsFixer\\Fixer\\Operator\\NewWithBracesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NewWithBracesFixer.php', + 'PhpCsFixer\\Fixer\\Operator\\NewWithParenthesesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NewWithParenthesesFixer.php', + 'PhpCsFixer\\Fixer\\Operator\\NoSpaceAroundDoubleColonFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NoSpaceAroundDoubleColonFixer.php', + 'PhpCsFixer\\Fixer\\Operator\\NoUselessConcatOperatorFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NoUselessConcatOperatorFixer.php', + 'PhpCsFixer\\Fixer\\Operator\\NoUselessNullsafeOperatorFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NoUselessNullsafeOperatorFixer.php', + 'PhpCsFixer\\Fixer\\Operator\\NotOperatorWithSpaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NotOperatorWithSpaceFixer.php', + 'PhpCsFixer\\Fixer\\Operator\\NotOperatorWithSuccessorSpaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NotOperatorWithSuccessorSpaceFixer.php', + 'PhpCsFixer\\Fixer\\Operator\\ObjectOperatorWithoutWhitespaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/ObjectOperatorWithoutWhitespaceFixer.php', + 'PhpCsFixer\\Fixer\\Operator\\OperatorLinebreakFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/OperatorLinebreakFixer.php', + 'PhpCsFixer\\Fixer\\Operator\\StandardizeIncrementFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/StandardizeIncrementFixer.php', + 'PhpCsFixer\\Fixer\\Operator\\StandardizeNotEqualsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/StandardizeNotEqualsFixer.php', + 'PhpCsFixer\\Fixer\\Operator\\TernaryOperatorSpacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/TernaryOperatorSpacesFixer.php', + 'PhpCsFixer\\Fixer\\Operator\\TernaryToElvisOperatorFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/TernaryToElvisOperatorFixer.php', + 'PhpCsFixer\\Fixer\\Operator\\TernaryToNullCoalescingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/TernaryToNullCoalescingFixer.php', + 'PhpCsFixer\\Fixer\\Operator\\UnaryOperatorSpacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/UnaryOperatorSpacesFixer.php', + 'PhpCsFixer\\Fixer\\PhpTag\\BlankLineAfterOpeningTagFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/BlankLineAfterOpeningTagFixer.php', + 'PhpCsFixer\\Fixer\\PhpTag\\EchoTagSyntaxFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/EchoTagSyntaxFixer.php', + 'PhpCsFixer\\Fixer\\PhpTag\\FullOpeningTagFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/FullOpeningTagFixer.php', + 'PhpCsFixer\\Fixer\\PhpTag\\LinebreakAfterOpeningTagFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/LinebreakAfterOpeningTagFixer.php', + 'PhpCsFixer\\Fixer\\PhpTag\\NoClosingTagFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/NoClosingTagFixer.php', + 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitConstructFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitConstructFixer.php', + 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDataProviderNameFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderNameFixer.php', + 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDataProviderReturnTypeFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderReturnTypeFixer.php', + 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDataProviderStaticFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderStaticFixer.php', + 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDedicateAssertFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDedicateAssertFixer.php', + 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDedicateAssertInternalTypeFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDedicateAssertInternalTypeFixer.php', + 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitExpectationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitExpectationFixer.php', + 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitFqcnAnnotationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitFqcnAnnotationFixer.php', + 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitInternalClassFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitInternalClassFixer.php', + 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitMethodCasingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitMethodCasingFixer.php', + 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitMockFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitMockFixer.php', + 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitMockShortWillReturnFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitMockShortWillReturnFixer.php', + 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitNamespacedFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitNamespacedFixer.php', + 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitNoExpectationAnnotationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitNoExpectationAnnotationFixer.php', + 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitSetUpTearDownVisibilityFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitSetUpTearDownVisibilityFixer.php', + 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitSizeClassFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitSizeClassFixer.php', + 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitStrictFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitStrictFixer.php', + 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitTargetVersion' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTargetVersion.php', + 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitTestAnnotationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTestAnnotationFixer.php', + 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitTestCaseStaticMethodCallsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTestCaseStaticMethodCallsFixer.php', + 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitTestClassRequiresCoversFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTestClassRequiresCoversFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\AlignMultilineCommentFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/AlignMultilineCommentFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\GeneralPhpdocAnnotationRemoveFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/GeneralPhpdocAnnotationRemoveFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\GeneralPhpdocTagRenameFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/GeneralPhpdocTagRenameFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\NoBlankLinesAfterPhpdocFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/NoBlankLinesAfterPhpdocFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\NoEmptyPhpdocFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/NoEmptyPhpdocFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\NoSuperfluousPhpdocTagsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/NoSuperfluousPhpdocTagsFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocAddMissingParamAnnotationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocAddMissingParamAnnotationFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocAlignFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocAlignFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocAnnotationWithoutDotFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocAnnotationWithoutDotFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocArrayTypeFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocArrayTypeFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocIndentFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocIndentFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocInlineTagNormalizerFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocInlineTagNormalizerFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocLineSpanFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocLineSpanFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocListTypeFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocListTypeFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoAccessFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoAccessFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoAliasTagFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoAliasTagFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoEmptyReturnFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoEmptyReturnFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoPackageFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoPackageFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoUselessInheritdocFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoUselessInheritdocFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocOrderByValueFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocOrderByValueFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocOrderFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocOrderFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocParamOrderFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocParamOrderFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocReturnSelfReferenceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocReturnSelfReferenceFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocScalarFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocScalarFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocSeparationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocSeparationFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocSingleLineVarSpacingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocSingleLineVarSpacingFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocSummaryFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocSummaryFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTagCasingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTagCasingFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTagTypeFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTagTypeFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocToCommentFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocToCommentFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTrimConsecutiveBlankLineSeparationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTrimConsecutiveBlankLineSeparationFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTrimFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTrimFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTypesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTypesFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTypesOrderFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTypesOrderFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocVarAnnotationCorrectOrderFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocVarAnnotationCorrectOrderFixer.php', + 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocVarWithoutNameFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocVarWithoutNameFixer.php', + 'PhpCsFixer\\Fixer\\ReturnNotation\\NoUselessReturnFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ReturnNotation/NoUselessReturnFixer.php', + 'PhpCsFixer\\Fixer\\ReturnNotation\\ReturnAssignmentFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ReturnNotation/ReturnAssignmentFixer.php', + 'PhpCsFixer\\Fixer\\ReturnNotation\\SimplifiedNullReturnFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ReturnNotation/SimplifiedNullReturnFixer.php', + 'PhpCsFixer\\Fixer\\Semicolon\\MultilineWhitespaceBeforeSemicolonsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/MultilineWhitespaceBeforeSemicolonsFixer.php', + 'PhpCsFixer\\Fixer\\Semicolon\\NoEmptyStatementFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/NoEmptyStatementFixer.php', + 'PhpCsFixer\\Fixer\\Semicolon\\NoSinglelineWhitespaceBeforeSemicolonsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/NoSinglelineWhitespaceBeforeSemicolonsFixer.php', + 'PhpCsFixer\\Fixer\\Semicolon\\SemicolonAfterInstructionFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/SemicolonAfterInstructionFixer.php', + 'PhpCsFixer\\Fixer\\Semicolon\\SpaceAfterSemicolonFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/SpaceAfterSemicolonFixer.php', + 'PhpCsFixer\\Fixer\\Strict\\DeclareStrictTypesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Strict/DeclareStrictTypesFixer.php', + 'PhpCsFixer\\Fixer\\Strict\\StrictComparisonFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Strict/StrictComparisonFixer.php', + 'PhpCsFixer\\Fixer\\Strict\\StrictParamFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Strict/StrictParamFixer.php', + 'PhpCsFixer\\Fixer\\StringNotation\\EscapeImplicitBackslashesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/EscapeImplicitBackslashesFixer.php', + 'PhpCsFixer\\Fixer\\StringNotation\\ExplicitStringVariableFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/ExplicitStringVariableFixer.php', + 'PhpCsFixer\\Fixer\\StringNotation\\HeredocClosingMarkerFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/HeredocClosingMarkerFixer.php', + 'PhpCsFixer\\Fixer\\StringNotation\\HeredocToNowdocFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/HeredocToNowdocFixer.php', + 'PhpCsFixer\\Fixer\\StringNotation\\MultilineStringToHeredocFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/MultilineStringToHeredocFixer.php', + 'PhpCsFixer\\Fixer\\StringNotation\\NoBinaryStringFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/NoBinaryStringFixer.php', + 'PhpCsFixer\\Fixer\\StringNotation\\NoTrailingWhitespaceInStringFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/NoTrailingWhitespaceInStringFixer.php', + 'PhpCsFixer\\Fixer\\StringNotation\\SimpleToComplexStringVariableFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/SimpleToComplexStringVariableFixer.php', + 'PhpCsFixer\\Fixer\\StringNotation\\SingleQuoteFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/SingleQuoteFixer.php', + 'PhpCsFixer\\Fixer\\StringNotation\\StringImplicitBackslashesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/StringImplicitBackslashesFixer.php', + 'PhpCsFixer\\Fixer\\StringNotation\\StringLengthToEmptyFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/StringLengthToEmptyFixer.php', + 'PhpCsFixer\\Fixer\\StringNotation\\StringLineEndingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/StringLineEndingFixer.php', + 'PhpCsFixer\\Fixer\\Whitespace\\ArrayIndentationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/ArrayIndentationFixer.php', + 'PhpCsFixer\\Fixer\\Whitespace\\BlankLineBeforeStatementFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/BlankLineBeforeStatementFixer.php', + 'PhpCsFixer\\Fixer\\Whitespace\\BlankLineBetweenImportGroupsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/BlankLineBetweenImportGroupsFixer.php', + 'PhpCsFixer\\Fixer\\Whitespace\\CompactNullableTypeDeclarationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/CompactNullableTypeDeclarationFixer.php', + 'PhpCsFixer\\Fixer\\Whitespace\\CompactNullableTypehintFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/CompactNullableTypehintFixer.php', + 'PhpCsFixer\\Fixer\\Whitespace\\HeredocIndentationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/HeredocIndentationFixer.php', + 'PhpCsFixer\\Fixer\\Whitespace\\IndentationTypeFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/IndentationTypeFixer.php', + 'PhpCsFixer\\Fixer\\Whitespace\\LineEndingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/LineEndingFixer.php', + 'PhpCsFixer\\Fixer\\Whitespace\\MethodChainingIndentationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/MethodChainingIndentationFixer.php', + 'PhpCsFixer\\Fixer\\Whitespace\\NoExtraBlankLinesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoExtraBlankLinesFixer.php', + 'PhpCsFixer\\Fixer\\Whitespace\\NoSpacesAroundOffsetFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoSpacesAroundOffsetFixer.php', + 'PhpCsFixer\\Fixer\\Whitespace\\NoSpacesInsideParenthesisFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoSpacesInsideParenthesisFixer.php', + 'PhpCsFixer\\Fixer\\Whitespace\\NoTrailingWhitespaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoTrailingWhitespaceFixer.php', + 'PhpCsFixer\\Fixer\\Whitespace\\NoWhitespaceInBlankLineFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoWhitespaceInBlankLineFixer.php', + 'PhpCsFixer\\Fixer\\Whitespace\\SingleBlankLineAtEofFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/SingleBlankLineAtEofFixer.php', + 'PhpCsFixer\\Fixer\\Whitespace\\SpacesInsideParenthesesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/SpacesInsideParenthesesFixer.php', + 'PhpCsFixer\\Fixer\\Whitespace\\StatementIndentationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/StatementIndentationFixer.php', + 'PhpCsFixer\\Fixer\\Whitespace\\TypeDeclarationSpacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/TypeDeclarationSpacesFixer.php', + 'PhpCsFixer\\Fixer\\Whitespace\\TypesSpacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/TypesSpacesFixer.php', + 'PhpCsFixer\\Fixer\\WhitespacesAwareFixerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/WhitespacesAwareFixerInterface.php', + 'PhpCsFixer\\Indicator\\PhpUnitTestCaseIndicator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Indicator/PhpUnitTestCaseIndicator.php', + 'PhpCsFixer\\Linter\\CachingLinter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/CachingLinter.php', + 'PhpCsFixer\\Linter\\Linter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/Linter.php', + 'PhpCsFixer\\Linter\\LinterInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/LinterInterface.php', + 'PhpCsFixer\\Linter\\LintingException' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/LintingException.php', + 'PhpCsFixer\\Linter\\LintingResultInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/LintingResultInterface.php', + 'PhpCsFixer\\Linter\\ProcessLinter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/ProcessLinter.php', + 'PhpCsFixer\\Linter\\ProcessLinterProcessBuilder' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/ProcessLinterProcessBuilder.php', + 'PhpCsFixer\\Linter\\ProcessLintingResult' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/ProcessLintingResult.php', + 'PhpCsFixer\\Linter\\TokenizerLinter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/TokenizerLinter.php', + 'PhpCsFixer\\Linter\\TokenizerLintingResult' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/TokenizerLintingResult.php', + 'PhpCsFixer\\Linter\\UnavailableLinterException' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/UnavailableLinterException.php', + 'PhpCsFixer\\PharChecker' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/PharChecker.php', + 'PhpCsFixer\\PharCheckerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/PharCheckerInterface.php', + 'PhpCsFixer\\Preg' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Preg.php', + 'PhpCsFixer\\PregException' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/PregException.php', + 'PhpCsFixer\\RuleSet\\AbstractMigrationSetDescription' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/AbstractMigrationSetDescription.php', + 'PhpCsFixer\\RuleSet\\AbstractRuleSetDescription' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/AbstractRuleSetDescription.php', + 'PhpCsFixer\\RuleSet\\DeprecatedRuleSetDescriptionInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/DeprecatedRuleSetDescriptionInterface.php', + 'PhpCsFixer\\RuleSet\\RuleSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/RuleSet.php', + 'PhpCsFixer\\RuleSet\\RuleSetDescriptionInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/RuleSetDescriptionInterface.php', + 'PhpCsFixer\\RuleSet\\RuleSetInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/RuleSetInterface.php', + 'PhpCsFixer\\RuleSet\\RuleSets' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/RuleSets.php', + 'PhpCsFixer\\RuleSet\\Sets\\DoctrineAnnotationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/DoctrineAnnotationSet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PERCS1x0RiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS1x0RiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PERCS1x0Set' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS1x0Set.php', + 'PhpCsFixer\\RuleSet\\Sets\\PERCS2x0RiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS2x0RiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PERCS2x0Set' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS2x0Set.php', + 'PhpCsFixer\\RuleSet\\Sets\\PERCSRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCSRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PERCSSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCSSet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PERRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PERSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERSet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHP54MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP54MigrationSet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHP56MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP56MigrationRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHP70MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP70MigrationRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHP70MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP70MigrationSet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHP71MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP71MigrationRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHP71MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP71MigrationSet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHP73MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP73MigrationSet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHP74MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP74MigrationRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHP74MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP74MigrationSet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHP80MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP80MigrationRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHP80MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP80MigrationSet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHP81MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP81MigrationSet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHP82MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP82MigrationSet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHP83MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP83MigrationSet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit100MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit100MigrationRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit30MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit30MigrationRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit32MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit32MigrationRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit35MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit35MigrationRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit43MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit43MigrationRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit48MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit48MigrationRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit50MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit50MigrationRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit52MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit52MigrationRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit54MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit54MigrationRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit55MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit55MigrationRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit56MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit56MigrationRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit57MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit57MigrationRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit60MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit60MigrationRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit75MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit75MigrationRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit84MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit84MigrationRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PSR12RiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PSR12RiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PSR12Set' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PSR12Set.php', + 'PhpCsFixer\\RuleSet\\Sets\\PSR1Set' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PSR1Set.php', + 'PhpCsFixer\\RuleSet\\Sets\\PSR2Set' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PSR2Set.php', + 'PhpCsFixer\\RuleSet\\Sets\\PhpCsFixerRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PhpCsFixerRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\PhpCsFixerSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PhpCsFixerSet.php', + 'PhpCsFixer\\RuleSet\\Sets\\SymfonyRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/SymfonyRiskySet.php', + 'PhpCsFixer\\RuleSet\\Sets\\SymfonySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/SymfonySet.php', + 'PhpCsFixer\\Runner\\FileCachingLintingIterator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Runner/FileCachingLintingIterator.php', + 'PhpCsFixer\\Runner\\FileFilterIterator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Runner/FileFilterIterator.php', + 'PhpCsFixer\\Runner\\FileLintingIterator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Runner/FileLintingIterator.php', + 'PhpCsFixer\\Runner\\Runner' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Runner/Runner.php', + 'PhpCsFixer\\StdinFileInfo' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/StdinFileInfo.php', + 'PhpCsFixer\\Tokenizer\\AbstractTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/AbstractTransformer.php', + 'PhpCsFixer\\Tokenizer\\AbstractTypeTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/AbstractTypeTransformer.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\AlternativeSyntaxAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/AlternativeSyntaxAnalyzer.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\AbstractControlCaseStructuresAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/AbstractControlCaseStructuresAnalysis.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\ArgumentAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/ArgumentAnalysis.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\CaseAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/CaseAnalysis.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\DataProviderAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/DataProviderAnalysis.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\DefaultAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/DefaultAnalysis.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\EnumAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/EnumAnalysis.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\MatchAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/MatchAnalysis.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\NamespaceAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/NamespaceAnalysis.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\NamespaceUseAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/NamespaceUseAnalysis.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\StartEndTokenAwareAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/StartEndTokenAwareAnalysis.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\SwitchAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/SwitchAnalysis.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\TypeAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/TypeAnalysis.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\ArgumentsAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ArgumentsAnalyzer.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\AttributeAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/AttributeAnalyzer.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\BlocksAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/BlocksAnalyzer.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\ClassyAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ClassyAnalyzer.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\CommentsAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/CommentsAnalyzer.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\ControlCaseStructuresAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ControlCaseStructuresAnalyzer.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\DataProviderAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/DataProviderAnalyzer.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\FunctionsAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/FunctionsAnalyzer.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\GotoLabelAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/GotoLabelAnalyzer.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\NamespaceUsesAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/NamespaceUsesAnalyzer.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\NamespacesAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/NamespacesAnalyzer.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\RangeAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/RangeAnalyzer.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\ReferenceAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ReferenceAnalyzer.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\SwitchAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/SwitchAnalyzer.php', + 'PhpCsFixer\\Tokenizer\\Analyzer\\WhitespacesAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/WhitespacesAnalyzer.php', + 'PhpCsFixer\\Tokenizer\\CT' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/CT.php', + 'PhpCsFixer\\Tokenizer\\CodeHasher' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/CodeHasher.php', + 'PhpCsFixer\\Tokenizer\\Processor\\ImportProcessor' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Processor/ImportProcessor.php', + 'PhpCsFixer\\Tokenizer\\Token' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Token.php', + 'PhpCsFixer\\Tokenizer\\Tokens' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Tokens.php', + 'PhpCsFixer\\Tokenizer\\TokensAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/TokensAnalyzer.php', + 'PhpCsFixer\\Tokenizer\\TransformerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/TransformerInterface.php', + 'PhpCsFixer\\Tokenizer\\Transformer\\ArrayTypehintTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ArrayTypehintTransformer.php', + 'PhpCsFixer\\Tokenizer\\Transformer\\AttributeTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/AttributeTransformer.php', + 'PhpCsFixer\\Tokenizer\\Transformer\\BraceClassInstantiationTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/BraceClassInstantiationTransformer.php', + 'PhpCsFixer\\Tokenizer\\Transformer\\BraceTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/BraceTransformer.php', + 'PhpCsFixer\\Tokenizer\\Transformer\\ClassConstantTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ClassConstantTransformer.php', + 'PhpCsFixer\\Tokenizer\\Transformer\\ConstructorPromotionTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ConstructorPromotionTransformer.php', + 'PhpCsFixer\\Tokenizer\\Transformer\\DisjunctiveNormalFormTypeParenthesisTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/DisjunctiveNormalFormTypeParenthesisTransformer.php', + 'PhpCsFixer\\Tokenizer\\Transformer\\FirstClassCallableTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/FirstClassCallableTransformer.php', + 'PhpCsFixer\\Tokenizer\\Transformer\\ImportTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ImportTransformer.php', + 'PhpCsFixer\\Tokenizer\\Transformer\\NameQualifiedTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/NameQualifiedTransformer.php', + 'PhpCsFixer\\Tokenizer\\Transformer\\NamedArgumentTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/NamedArgumentTransformer.php', + 'PhpCsFixer\\Tokenizer\\Transformer\\NamespaceOperatorTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/NamespaceOperatorTransformer.php', + 'PhpCsFixer\\Tokenizer\\Transformer\\NullableTypeTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/NullableTypeTransformer.php', + 'PhpCsFixer\\Tokenizer\\Transformer\\ReturnRefTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ReturnRefTransformer.php', + 'PhpCsFixer\\Tokenizer\\Transformer\\SquareBraceTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/SquareBraceTransformer.php', + 'PhpCsFixer\\Tokenizer\\Transformer\\TypeAlternationTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/TypeAlternationTransformer.php', + 'PhpCsFixer\\Tokenizer\\Transformer\\TypeColonTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/TypeColonTransformer.php', + 'PhpCsFixer\\Tokenizer\\Transformer\\TypeIntersectionTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/TypeIntersectionTransformer.php', + 'PhpCsFixer\\Tokenizer\\Transformer\\UseTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/UseTransformer.php', + 'PhpCsFixer\\Tokenizer\\Transformer\\WhitespacyCommentTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/WhitespacyCommentTransformer.php', + 'PhpCsFixer\\Tokenizer\\Transformers' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformers.php', + 'PhpCsFixer\\ToolInfo' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/ToolInfo.php', + 'PhpCsFixer\\ToolInfoInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/ToolInfoInterface.php', + 'PhpCsFixer\\Utils' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Utils.php', + 'PhpCsFixer\\WhitespacesFixerConfig' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/WhitespacesFixerConfig.php', + 'PhpCsFixer\\WordMatcher' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/WordMatcher.php', + 'PhpParser\\Builder' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder.php', + 'PhpParser\\BuilderFactory' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/BuilderFactory.php', + 'PhpParser\\BuilderHelpers' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/BuilderHelpers.php', + 'PhpParser\\Builder\\ClassConst' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php', + 'PhpParser\\Builder\\Class_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Class_.php', + 'PhpParser\\Builder\\Declaration' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Declaration.php', + 'PhpParser\\Builder\\EnumCase' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php', + 'PhpParser\\Builder\\Enum_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Enum_.php', + 'PhpParser\\Builder\\FunctionLike' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php', + 'PhpParser\\Builder\\Function_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Function_.php', + 'PhpParser\\Builder\\Interface_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Interface_.php', + 'PhpParser\\Builder\\Method' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Method.php', + 'PhpParser\\Builder\\Namespace_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php', + 'PhpParser\\Builder\\Param' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Param.php', + 'PhpParser\\Builder\\Property' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Property.php', + 'PhpParser\\Builder\\TraitUse' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php', + 'PhpParser\\Builder\\TraitUseAdaptation' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php', + 'PhpParser\\Builder\\Trait_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Trait_.php', + 'PhpParser\\Builder\\Use_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Use_.php', + 'PhpParser\\Comment' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Comment.php', + 'PhpParser\\Comment\\Doc' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Comment/Doc.php', + 'PhpParser\\ConstExprEvaluationException' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ConstExprEvaluationException.php', + 'PhpParser\\ConstExprEvaluator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.php', + 'PhpParser\\Error' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Error.php', + 'PhpParser\\ErrorHandler' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ErrorHandler.php', + 'PhpParser\\ErrorHandler\\Collecting' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ErrorHandler/Collecting.php', + 'PhpParser\\ErrorHandler\\Throwing' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.php', + 'PhpParser\\Internal\\DiffElem' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Internal/DiffElem.php', + 'PhpParser\\Internal\\Differ' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Internal/Differ.php', + 'PhpParser\\Internal\\PrintableNewAnonClassNode' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php', + 'PhpParser\\Internal\\TokenStream' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php', + 'PhpParser\\JsonDecoder' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/JsonDecoder.php', + 'PhpParser\\Lexer' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer.php', + 'PhpParser\\Lexer\\Emulative' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php', + 'PhpParser\\Lexer\\TokenEmulator\\AttributeEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php', + 'PhpParser\\Lexer\\TokenEmulator\\CoaleseEqualTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/CoaleseEqualTokenEmulator.php', + 'PhpParser\\Lexer\\TokenEmulator\\EnumTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/EnumTokenEmulator.php', + 'PhpParser\\Lexer\\TokenEmulator\\ExplicitOctalEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ExplicitOctalEmulator.php', + 'PhpParser\\Lexer\\TokenEmulator\\FlexibleDocStringEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FlexibleDocStringEmulator.php', + 'PhpParser\\Lexer\\TokenEmulator\\FnTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FnTokenEmulator.php', + 'PhpParser\\Lexer\\TokenEmulator\\KeywordEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php', + 'PhpParser\\Lexer\\TokenEmulator\\MatchTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php', + 'PhpParser\\Lexer\\TokenEmulator\\NullsafeTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php', + 'PhpParser\\Lexer\\TokenEmulator\\NumericLiteralSeparatorEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NumericLiteralSeparatorEmulator.php', + 'PhpParser\\Lexer\\TokenEmulator\\ReadonlyFunctionTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyFunctionTokenEmulator.php', + 'PhpParser\\Lexer\\TokenEmulator\\ReadonlyTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php', + 'PhpParser\\Lexer\\TokenEmulator\\ReverseEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php', + 'PhpParser\\Lexer\\TokenEmulator\\TokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php', + 'PhpParser\\NameContext' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NameContext.php', + 'PhpParser\\Node' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node.php', + 'PhpParser\\NodeAbstract' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeAbstract.php', + 'PhpParser\\NodeDumper' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeDumper.php', + 'PhpParser\\NodeFinder' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeFinder.php', + 'PhpParser\\NodeTraverser' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeTraverser.php', + 'PhpParser\\NodeTraverserInterface' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.php', + 'PhpParser\\NodeVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor.php', + 'PhpParser\\NodeVisitorAbstract' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.php', + 'PhpParser\\NodeVisitor\\CloningVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.php', + 'PhpParser\\NodeVisitor\\FindingVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php', + 'PhpParser\\NodeVisitor\\FirstFindingVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php', + 'PhpParser\\NodeVisitor\\NameResolver' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php', + 'PhpParser\\NodeVisitor\\NodeConnectingVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php', + 'PhpParser\\NodeVisitor\\ParentConnectingVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php', + 'PhpParser\\Node\\Arg' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Arg.php', + 'PhpParser\\Node\\Attribute' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Attribute.php', + 'PhpParser\\Node\\AttributeGroup' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php', + 'PhpParser\\Node\\ComplexType' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/ComplexType.php', + 'PhpParser\\Node\\Const_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Const_.php', + 'PhpParser\\Node\\Expr' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr.php', + 'PhpParser\\Node\\Expr\\ArrayDimFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php', + 'PhpParser\\Node\\Expr\\ArrayItem' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php', + 'PhpParser\\Node\\Expr\\Array_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php', + 'PhpParser\\Node\\Expr\\ArrowFunction' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php', + 'PhpParser\\Node\\Expr\\Assign' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php', + 'PhpParser\\Node\\Expr\\AssignOp' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php', + 'PhpParser\\Node\\Expr\\AssignOp\\BitwiseAnd' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php', + 'PhpParser\\Node\\Expr\\AssignOp\\BitwiseOr' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php', + 'PhpParser\\Node\\Expr\\AssignOp\\BitwiseXor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php', + 'PhpParser\\Node\\Expr\\AssignOp\\Coalesce' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php', + 'PhpParser\\Node\\Expr\\AssignOp\\Concat' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php', + 'PhpParser\\Node\\Expr\\AssignOp\\Div' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php', + 'PhpParser\\Node\\Expr\\AssignOp\\Minus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php', + 'PhpParser\\Node\\Expr\\AssignOp\\Mod' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php', + 'PhpParser\\Node\\Expr\\AssignOp\\Mul' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php', + 'PhpParser\\Node\\Expr\\AssignOp\\Plus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php', + 'PhpParser\\Node\\Expr\\AssignOp\\Pow' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php', + 'PhpParser\\Node\\Expr\\AssignOp\\ShiftLeft' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php', + 'PhpParser\\Node\\Expr\\AssignOp\\ShiftRight' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php', + 'PhpParser\\Node\\Expr\\AssignRef' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php', + 'PhpParser\\Node\\Expr\\BinaryOp' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseAnd' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseOr' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseXor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\BooleanAnd' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\BooleanOr' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\Coalesce' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\Concat' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\Div' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\Equal' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\Greater' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\GreaterOrEqual' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\Identical' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\LogicalAnd' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\LogicalOr' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\LogicalXor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\Minus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\Mod' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\Mul' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\NotEqual' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\NotIdentical' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\Plus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\Pow' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\ShiftLeft' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\ShiftRight' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\Smaller' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\SmallerOrEqual' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php', + 'PhpParser\\Node\\Expr\\BinaryOp\\Spaceship' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php', + 'PhpParser\\Node\\Expr\\BitwiseNot' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php', + 'PhpParser\\Node\\Expr\\BooleanNot' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php', + 'PhpParser\\Node\\Expr\\CallLike' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php', + 'PhpParser\\Node\\Expr\\Cast' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php', + 'PhpParser\\Node\\Expr\\Cast\\Array_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php', + 'PhpParser\\Node\\Expr\\Cast\\Bool_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php', + 'PhpParser\\Node\\Expr\\Cast\\Double' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php', + 'PhpParser\\Node\\Expr\\Cast\\Int_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php', + 'PhpParser\\Node\\Expr\\Cast\\Object_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php', + 'PhpParser\\Node\\Expr\\Cast\\String_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php', + 'PhpParser\\Node\\Expr\\Cast\\Unset_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php', + 'PhpParser\\Node\\Expr\\ClassConstFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php', + 'PhpParser\\Node\\Expr\\Clone_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php', + 'PhpParser\\Node\\Expr\\Closure' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php', + 'PhpParser\\Node\\Expr\\ClosureUse' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php', + 'PhpParser\\Node\\Expr\\ConstFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php', + 'PhpParser\\Node\\Expr\\Empty_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php', + 'PhpParser\\Node\\Expr\\Error' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php', + 'PhpParser\\Node\\Expr\\ErrorSuppress' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php', + 'PhpParser\\Node\\Expr\\Eval_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php', + 'PhpParser\\Node\\Expr\\Exit_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php', + 'PhpParser\\Node\\Expr\\FuncCall' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php', + 'PhpParser\\Node\\Expr\\Include_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php', + 'PhpParser\\Node\\Expr\\Instanceof_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php', + 'PhpParser\\Node\\Expr\\Isset_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php', + 'PhpParser\\Node\\Expr\\List_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php', + 'PhpParser\\Node\\Expr\\Match_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php', + 'PhpParser\\Node\\Expr\\MethodCall' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php', + 'PhpParser\\Node\\Expr\\New_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php', + 'PhpParser\\Node\\Expr\\NullsafeMethodCall' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php', + 'PhpParser\\Node\\Expr\\NullsafePropertyFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php', + 'PhpParser\\Node\\Expr\\PostDec' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php', + 'PhpParser\\Node\\Expr\\PostInc' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php', + 'PhpParser\\Node\\Expr\\PreDec' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php', + 'PhpParser\\Node\\Expr\\PreInc' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php', + 'PhpParser\\Node\\Expr\\Print_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php', + 'PhpParser\\Node\\Expr\\PropertyFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php', + 'PhpParser\\Node\\Expr\\ShellExec' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php', + 'PhpParser\\Node\\Expr\\StaticCall' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php', + 'PhpParser\\Node\\Expr\\StaticPropertyFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php', + 'PhpParser\\Node\\Expr\\Ternary' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php', + 'PhpParser\\Node\\Expr\\Throw_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php', + 'PhpParser\\Node\\Expr\\UnaryMinus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php', + 'PhpParser\\Node\\Expr\\UnaryPlus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php', + 'PhpParser\\Node\\Expr\\Variable' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php', + 'PhpParser\\Node\\Expr\\YieldFrom' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php', + 'PhpParser\\Node\\Expr\\Yield_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php', + 'PhpParser\\Node\\FunctionLike' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php', + 'PhpParser\\Node\\Identifier' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Identifier.php', + 'PhpParser\\Node\\IntersectionType' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/IntersectionType.php', + 'PhpParser\\Node\\MatchArm' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/MatchArm.php', + 'PhpParser\\Node\\Name' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Name.php', + 'PhpParser\\Node\\Name\\FullyQualified' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php', + 'PhpParser\\Node\\Name\\Relative' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php', + 'PhpParser\\Node\\NullableType' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/NullableType.php', + 'PhpParser\\Node\\Param' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Param.php', + 'PhpParser\\Node\\Scalar' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar.php', + 'PhpParser\\Node\\Scalar\\DNumber' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php', + 'PhpParser\\Node\\Scalar\\Encapsed' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php', + 'PhpParser\\Node\\Scalar\\EncapsedStringPart' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php', + 'PhpParser\\Node\\Scalar\\LNumber' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php', + 'PhpParser\\Node\\Scalar\\MagicConst' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php', + 'PhpParser\\Node\\Scalar\\MagicConst\\Class_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php', + 'PhpParser\\Node\\Scalar\\MagicConst\\Dir' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php', + 'PhpParser\\Node\\Scalar\\MagicConst\\File' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php', + 'PhpParser\\Node\\Scalar\\MagicConst\\Function_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php', + 'PhpParser\\Node\\Scalar\\MagicConst\\Line' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php', + 'PhpParser\\Node\\Scalar\\MagicConst\\Method' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php', + 'PhpParser\\Node\\Scalar\\MagicConst\\Namespace_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php', + 'PhpParser\\Node\\Scalar\\MagicConst\\Trait_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php', + 'PhpParser\\Node\\Scalar\\String_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php', + 'PhpParser\\Node\\Stmt' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt.php', + 'PhpParser\\Node\\Stmt\\Break_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php', + 'PhpParser\\Node\\Stmt\\Case_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php', + 'PhpParser\\Node\\Stmt\\Catch_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php', + 'PhpParser\\Node\\Stmt\\ClassConst' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php', + 'PhpParser\\Node\\Stmt\\ClassLike' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php', + 'PhpParser\\Node\\Stmt\\ClassMethod' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php', + 'PhpParser\\Node\\Stmt\\Class_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php', + 'PhpParser\\Node\\Stmt\\Const_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php', + 'PhpParser\\Node\\Stmt\\Continue_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php', + 'PhpParser\\Node\\Stmt\\DeclareDeclare' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php', + 'PhpParser\\Node\\Stmt\\Declare_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php', + 'PhpParser\\Node\\Stmt\\Do_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php', + 'PhpParser\\Node\\Stmt\\Echo_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php', + 'PhpParser\\Node\\Stmt\\ElseIf_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php', + 'PhpParser\\Node\\Stmt\\Else_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php', + 'PhpParser\\Node\\Stmt\\EnumCase' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php', + 'PhpParser\\Node\\Stmt\\Enum_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php', + 'PhpParser\\Node\\Stmt\\Expression' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php', + 'PhpParser\\Node\\Stmt\\Finally_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php', + 'PhpParser\\Node\\Stmt\\For_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php', + 'PhpParser\\Node\\Stmt\\Foreach_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php', + 'PhpParser\\Node\\Stmt\\Function_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php', + 'PhpParser\\Node\\Stmt\\Global_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php', + 'PhpParser\\Node\\Stmt\\Goto_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php', + 'PhpParser\\Node\\Stmt\\GroupUse' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php', + 'PhpParser\\Node\\Stmt\\HaltCompiler' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php', + 'PhpParser\\Node\\Stmt\\If_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php', + 'PhpParser\\Node\\Stmt\\InlineHTML' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php', + 'PhpParser\\Node\\Stmt\\Interface_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php', + 'PhpParser\\Node\\Stmt\\Label' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php', + 'PhpParser\\Node\\Stmt\\Namespace_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php', + 'PhpParser\\Node\\Stmt\\Nop' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php', + 'PhpParser\\Node\\Stmt\\Property' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php', + 'PhpParser\\Node\\Stmt\\PropertyProperty' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php', + 'PhpParser\\Node\\Stmt\\Return_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php', + 'PhpParser\\Node\\Stmt\\StaticVar' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php', + 'PhpParser\\Node\\Stmt\\Static_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php', + 'PhpParser\\Node\\Stmt\\Switch_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php', + 'PhpParser\\Node\\Stmt\\Throw_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Throw_.php', + 'PhpParser\\Node\\Stmt\\TraitUse' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php', + 'PhpParser\\Node\\Stmt\\TraitUseAdaptation' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php', + 'PhpParser\\Node\\Stmt\\TraitUseAdaptation\\Alias' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php', + 'PhpParser\\Node\\Stmt\\TraitUseAdaptation\\Precedence' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php', + 'PhpParser\\Node\\Stmt\\Trait_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php', + 'PhpParser\\Node\\Stmt\\TryCatch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php', + 'PhpParser\\Node\\Stmt\\Unset_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php', + 'PhpParser\\Node\\Stmt\\UseUse' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php', + 'PhpParser\\Node\\Stmt\\Use_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php', + 'PhpParser\\Node\\Stmt\\While_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php', + 'PhpParser\\Node\\UnionType' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/UnionType.php', + 'PhpParser\\Node\\VarLikeIdentifier' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php', + 'PhpParser\\Node\\VariadicPlaceholder' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/VariadicPlaceholder.php', + 'PhpParser\\Parser' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Parser.php', + 'PhpParser\\ParserAbstract' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ParserAbstract.php', + 'PhpParser\\ParserFactory' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ParserFactory.php', + 'PhpParser\\Parser\\Multiple' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Parser/Multiple.php', + 'PhpParser\\Parser\\Php5' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Parser/Php5.php', + 'PhpParser\\Parser\\Php7' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Parser/Php7.php', + 'PhpParser\\Parser\\Tokens' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Parser/Tokens.php', + 'PhpParser\\PrettyPrinterAbstract' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php', + 'PhpParser\\PrettyPrinter\\Standard' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php', 'PhpToken' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php', + 'PrestaShop\\AutoIndex\\Command\\AddAutoIndexCommand' => __DIR__ . '/..' . '/prestashop/autoindex/src/Command/AddAutoIndexCommand.php', + 'PrestaShop\\CodingStandards\\Command\\AbstractCommand' => __DIR__ . '/..' . '/prestashop/php-dev-tools/src/Command/AbstractCommand.php', + 'PrestaShop\\CodingStandards\\Command\\CsFixerInitCommand' => __DIR__ . '/..' . '/prestashop/php-dev-tools/src/Command/CsFixerInitCommand.php', + 'PrestaShop\\CodingStandards\\Command\\PhpStanInitCommand' => __DIR__ . '/..' . '/prestashop/php-dev-tools/src/Command/PhpStanInitCommand.php', + 'PrestaShop\\CodingStandards\\CsFixer\\Config' => __DIR__ . '/..' . '/prestashop/php-dev-tools/src/CsFixer/Config.php', + 'PrestaShop\\HeaderStamp\\Command\\UpdateLicensesCommand' => __DIR__ . '/..' . '/prestashop/header-stamp/src/Command/UpdateLicensesCommand.php', + 'PrestaShop\\HeaderStamp\\LicenseHeader' => __DIR__ . '/..' . '/prestashop/header-stamp/src/LicenseHeader.php', + 'PrestaShop\\HeaderStamp\\Reporter' => __DIR__ . '/..' . '/prestashop/header-stamp/src/Reporter.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Controller\\AbandonedCartController' => __DIR__ . '/../..' . '/src/Controller/AbandonedCartController.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Controller\\CustomerSyncController' => __DIR__ . '/../..' . '/src/Controller/CustomerSyncController.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Controller\\ModuleConfigurationController' => __DIR__ . '/../..' . '/src/Controller/ModuleConfigurationController.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Controller\\OptInController' => __DIR__ . '/../..' . '/src/Controller/OptInController.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Controller\\RssFeedController' => __DIR__ . '/../..' . '/src/Controller/RssFeedController.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\AbandonedCartFormDataConfiguration' => __DIR__ . '/../..' . '/src/Form/AbandonedCartFormDataConfiguration.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\AbandonedCartFormType' => __DIR__ . '/../..' . '/src/Form/AbandonedCartFormType.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\AccountConfigurationFormType' => __DIR__ . '/../..' . '/src/Form/AccountConfigurationFormType.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\AccountFormDataConfiguration' => __DIR__ . '/../..' . '/src/Form/AccountFormDataConfiguration.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\ChoiceProvider\\Autoresponder' => __DIR__ . '/../..' . '/src/Form/ChoiceProvider/Autoresponder.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\ChoiceProvider\\ProductCategory' => __DIR__ . '/../..' . '/src/Form/ChoiceProvider/ProductCategory.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\CustomerSyncFormDataConfiguration' => __DIR__ . '/../..' . '/src/Form/CustomerSyncFormDataConfiguration.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\CustomerSyncFormType' => __DIR__ . '/../..' . '/src/Form/CustomerSyncFormType.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\FormDataProvider' => __DIR__ . '/../..' . '/src/Form/FormDataProvider.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\RssFeedFormDataConfiguration' => __DIR__ . '/../..' . '/src/Form/RssFeedFormDataConfiguration.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\RssFeedFormType' => __DIR__ . '/../..' . '/src/Form/RssFeedFormType.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Install\\Installer' => __DIR__ . '/../..' . '/src/Install/Installer.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Lib\\Api' => __DIR__ . '/../..' . '/lib/Api.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Lib\\Logger' => __DIR__ . '/../..' . '/lib/Logger.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Model\\AbandonedCart' => __DIR__ . '/../..' . '/src/Model/AbandonedCart.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Model\\AbandonedCartCollection' => __DIR__ . '/../..' . '/src/Model/AbandonedCartCollection.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Model\\AbandonedCartProduct' => __DIR__ . '/../..' . '/src/Model/AbandonedCartProduct.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Model\\RssFeedProductsCollection' => __DIR__ . '/../..' . '/src/Model/RssFeedProductsCollection.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Model\\SentCart' => __DIR__ . '/../..' . '/src/Model/SentCart.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Model\\Subscriber' => __DIR__ . '/../..' . '/src/Model/Subscriber.php', + 'PrestaShop\\Module\\SmailyForPrestaShop\\Model\\SubscriberCollection' => __DIR__ . '/../..' . '/src/Model/SubscriberCollection.php', + 'Psr\\Container\\ContainerExceptionInterface' => __DIR__ . '/..' . '/psr/container/src/ContainerExceptionInterface.php', + 'Psr\\Container\\ContainerInterface' => __DIR__ . '/..' . '/psr/container/src/ContainerInterface.php', + 'Psr\\Container\\NotFoundExceptionInterface' => __DIR__ . '/..' . '/psr/container/src/NotFoundExceptionInterface.php', + 'Psr\\EventDispatcher\\EventDispatcherInterface' => __DIR__ . '/..' . '/psr/event-dispatcher/src/EventDispatcherInterface.php', + 'Psr\\EventDispatcher\\ListenerProviderInterface' => __DIR__ . '/..' . '/psr/event-dispatcher/src/ListenerProviderInterface.php', + 'Psr\\EventDispatcher\\StoppableEventInterface' => __DIR__ . '/..' . '/psr/event-dispatcher/src/StoppableEventInterface.php', + 'Psr\\Log\\AbstractLogger' => __DIR__ . '/..' . '/psr/log/src/AbstractLogger.php', + 'Psr\\Log\\InvalidArgumentException' => __DIR__ . '/..' . '/psr/log/src/InvalidArgumentException.php', + 'Psr\\Log\\LogLevel' => __DIR__ . '/..' . '/psr/log/src/LogLevel.php', + 'Psr\\Log\\LoggerAwareInterface' => __DIR__ . '/..' . '/psr/log/src/LoggerAwareInterface.php', + 'Psr\\Log\\LoggerAwareTrait' => __DIR__ . '/..' . '/psr/log/src/LoggerAwareTrait.php', + 'Psr\\Log\\LoggerInterface' => __DIR__ . '/..' . '/psr/log/src/LoggerInterface.php', + 'Psr\\Log\\LoggerTrait' => __DIR__ . '/..' . '/psr/log/src/LoggerTrait.php', + 'Psr\\Log\\NullLogger' => __DIR__ . '/..' . '/psr/log/src/NullLogger.php', 'ReturnTypeWillChange' => __DIR__ . '/..' . '/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php', 'SebastianBergmann\\Diff\\Chunk' => __DIR__ . '/..' . '/sebastian/diff/src/Chunk.php', 'SebastianBergmann\\Diff\\ConfigurationException' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/ConfigurationException.php', @@ -201,6 +1070,234 @@ class ComposerStaticInite1765f078aa62628913827ce651850ac 'SebastianBergmann\\Diff\\Parser' => __DIR__ . '/..' . '/sebastian/diff/src/Parser.php', 'SebastianBergmann\\Diff\\TimeEfficientLongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php', 'Stringable' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Stringable.php', + 'Symfony\\Component\\Console\\Application' => __DIR__ . '/..' . '/symfony/console/Application.php', + 'Symfony\\Component\\Console\\Attribute\\AsCommand' => __DIR__ . '/..' . '/symfony/console/Attribute/AsCommand.php', + 'Symfony\\Component\\Console\\CI\\GithubActionReporter' => __DIR__ . '/..' . '/symfony/console/CI/GithubActionReporter.php', + 'Symfony\\Component\\Console\\Color' => __DIR__ . '/..' . '/symfony/console/Color.php', + 'Symfony\\Component\\Console\\CommandLoader\\CommandLoaderInterface' => __DIR__ . '/..' . '/symfony/console/CommandLoader/CommandLoaderInterface.php', + 'Symfony\\Component\\Console\\CommandLoader\\ContainerCommandLoader' => __DIR__ . '/..' . '/symfony/console/CommandLoader/ContainerCommandLoader.php', + 'Symfony\\Component\\Console\\CommandLoader\\FactoryCommandLoader' => __DIR__ . '/..' . '/symfony/console/CommandLoader/FactoryCommandLoader.php', + 'Symfony\\Component\\Console\\Command\\Command' => __DIR__ . '/..' . '/symfony/console/Command/Command.php', + 'Symfony\\Component\\Console\\Command\\CompleteCommand' => __DIR__ . '/..' . '/symfony/console/Command/CompleteCommand.php', + 'Symfony\\Component\\Console\\Command\\DumpCompletionCommand' => __DIR__ . '/..' . '/symfony/console/Command/DumpCompletionCommand.php', + 'Symfony\\Component\\Console\\Command\\HelpCommand' => __DIR__ . '/..' . '/symfony/console/Command/HelpCommand.php', + 'Symfony\\Component\\Console\\Command\\LazyCommand' => __DIR__ . '/..' . '/symfony/console/Command/LazyCommand.php', + 'Symfony\\Component\\Console\\Command\\ListCommand' => __DIR__ . '/..' . '/symfony/console/Command/ListCommand.php', + 'Symfony\\Component\\Console\\Command\\LockableTrait' => __DIR__ . '/..' . '/symfony/console/Command/LockableTrait.php', + 'Symfony\\Component\\Console\\Command\\SignalableCommandInterface' => __DIR__ . '/..' . '/symfony/console/Command/SignalableCommandInterface.php', + 'Symfony\\Component\\Console\\Command\\TraceableCommand' => __DIR__ . '/..' . '/symfony/console/Command/TraceableCommand.php', + 'Symfony\\Component\\Console\\Completion\\CompletionInput' => __DIR__ . '/..' . '/symfony/console/Completion/CompletionInput.php', + 'Symfony\\Component\\Console\\Completion\\CompletionSuggestions' => __DIR__ . '/..' . '/symfony/console/Completion/CompletionSuggestions.php', + 'Symfony\\Component\\Console\\Completion\\Output\\BashCompletionOutput' => __DIR__ . '/..' . '/symfony/console/Completion/Output/BashCompletionOutput.php', + 'Symfony\\Component\\Console\\Completion\\Output\\CompletionOutputInterface' => __DIR__ . '/..' . '/symfony/console/Completion/Output/CompletionOutputInterface.php', + 'Symfony\\Component\\Console\\Completion\\Output\\FishCompletionOutput' => __DIR__ . '/..' . '/symfony/console/Completion/Output/FishCompletionOutput.php', + 'Symfony\\Component\\Console\\Completion\\Output\\ZshCompletionOutput' => __DIR__ . '/..' . '/symfony/console/Completion/Output/ZshCompletionOutput.php', + 'Symfony\\Component\\Console\\Completion\\Suggestion' => __DIR__ . '/..' . '/symfony/console/Completion/Suggestion.php', + 'Symfony\\Component\\Console\\ConsoleEvents' => __DIR__ . '/..' . '/symfony/console/ConsoleEvents.php', + 'Symfony\\Component\\Console\\Cursor' => __DIR__ . '/..' . '/symfony/console/Cursor.php', + 'Symfony\\Component\\Console\\DataCollector\\CommandDataCollector' => __DIR__ . '/..' . '/symfony/console/DataCollector/CommandDataCollector.php', + 'Symfony\\Component\\Console\\Debug\\CliRequest' => __DIR__ . '/..' . '/symfony/console/Debug/CliRequest.php', + 'Symfony\\Component\\Console\\DependencyInjection\\AddConsoleCommandPass' => __DIR__ . '/..' . '/symfony/console/DependencyInjection/AddConsoleCommandPass.php', + 'Symfony\\Component\\Console\\Descriptor\\ApplicationDescription' => __DIR__ . '/..' . '/symfony/console/Descriptor/ApplicationDescription.php', + 'Symfony\\Component\\Console\\Descriptor\\Descriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/Descriptor.php', + 'Symfony\\Component\\Console\\Descriptor\\DescriptorInterface' => __DIR__ . '/..' . '/symfony/console/Descriptor/DescriptorInterface.php', + 'Symfony\\Component\\Console\\Descriptor\\JsonDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/JsonDescriptor.php', + 'Symfony\\Component\\Console\\Descriptor\\MarkdownDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/MarkdownDescriptor.php', + 'Symfony\\Component\\Console\\Descriptor\\ReStructuredTextDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/ReStructuredTextDescriptor.php', + 'Symfony\\Component\\Console\\Descriptor\\TextDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/TextDescriptor.php', + 'Symfony\\Component\\Console\\Descriptor\\XmlDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/XmlDescriptor.php', + 'Symfony\\Component\\Console\\EventListener\\ErrorListener' => __DIR__ . '/..' . '/symfony/console/EventListener/ErrorListener.php', + 'Symfony\\Component\\Console\\Event\\ConsoleCommandEvent' => __DIR__ . '/..' . '/symfony/console/Event/ConsoleCommandEvent.php', + 'Symfony\\Component\\Console\\Event\\ConsoleErrorEvent' => __DIR__ . '/..' . '/symfony/console/Event/ConsoleErrorEvent.php', + 'Symfony\\Component\\Console\\Event\\ConsoleEvent' => __DIR__ . '/..' . '/symfony/console/Event/ConsoleEvent.php', + 'Symfony\\Component\\Console\\Event\\ConsoleSignalEvent' => __DIR__ . '/..' . '/symfony/console/Event/ConsoleSignalEvent.php', + 'Symfony\\Component\\Console\\Event\\ConsoleTerminateEvent' => __DIR__ . '/..' . '/symfony/console/Event/ConsoleTerminateEvent.php', + 'Symfony\\Component\\Console\\Exception\\CommandNotFoundException' => __DIR__ . '/..' . '/symfony/console/Exception/CommandNotFoundException.php', + 'Symfony\\Component\\Console\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/console/Exception/ExceptionInterface.php', + 'Symfony\\Component\\Console\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/console/Exception/InvalidArgumentException.php', + 'Symfony\\Component\\Console\\Exception\\InvalidOptionException' => __DIR__ . '/..' . '/symfony/console/Exception/InvalidOptionException.php', + 'Symfony\\Component\\Console\\Exception\\LogicException' => __DIR__ . '/..' . '/symfony/console/Exception/LogicException.php', + 'Symfony\\Component\\Console\\Exception\\MissingInputException' => __DIR__ . '/..' . '/symfony/console/Exception/MissingInputException.php', + 'Symfony\\Component\\Console\\Exception\\NamespaceNotFoundException' => __DIR__ . '/..' . '/symfony/console/Exception/NamespaceNotFoundException.php', + 'Symfony\\Component\\Console\\Exception\\RunCommandFailedException' => __DIR__ . '/..' . '/symfony/console/Exception/RunCommandFailedException.php', + 'Symfony\\Component\\Console\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/console/Exception/RuntimeException.php', + 'Symfony\\Component\\Console\\Formatter\\NullOutputFormatter' => __DIR__ . '/..' . '/symfony/console/Formatter/NullOutputFormatter.php', + 'Symfony\\Component\\Console\\Formatter\\NullOutputFormatterStyle' => __DIR__ . '/..' . '/symfony/console/Formatter/NullOutputFormatterStyle.php', + 'Symfony\\Component\\Console\\Formatter\\OutputFormatter' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatter.php', + 'Symfony\\Component\\Console\\Formatter\\OutputFormatterInterface' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatterInterface.php', + 'Symfony\\Component\\Console\\Formatter\\OutputFormatterStyle' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatterStyle.php', + 'Symfony\\Component\\Console\\Formatter\\OutputFormatterStyleInterface' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatterStyleInterface.php', + 'Symfony\\Component\\Console\\Formatter\\OutputFormatterStyleStack' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatterStyleStack.php', + 'Symfony\\Component\\Console\\Formatter\\WrappableOutputFormatterInterface' => __DIR__ . '/..' . '/symfony/console/Formatter/WrappableOutputFormatterInterface.php', + 'Symfony\\Component\\Console\\Helper\\DebugFormatterHelper' => __DIR__ . '/..' . '/symfony/console/Helper/DebugFormatterHelper.php', + 'Symfony\\Component\\Console\\Helper\\DescriptorHelper' => __DIR__ . '/..' . '/symfony/console/Helper/DescriptorHelper.php', + 'Symfony\\Component\\Console\\Helper\\Dumper' => __DIR__ . '/..' . '/symfony/console/Helper/Dumper.php', + 'Symfony\\Component\\Console\\Helper\\FormatterHelper' => __DIR__ . '/..' . '/symfony/console/Helper/FormatterHelper.php', + 'Symfony\\Component\\Console\\Helper\\Helper' => __DIR__ . '/..' . '/symfony/console/Helper/Helper.php', + 'Symfony\\Component\\Console\\Helper\\HelperInterface' => __DIR__ . '/..' . '/symfony/console/Helper/HelperInterface.php', + 'Symfony\\Component\\Console\\Helper\\HelperSet' => __DIR__ . '/..' . '/symfony/console/Helper/HelperSet.php', + 'Symfony\\Component\\Console\\Helper\\InputAwareHelper' => __DIR__ . '/..' . '/symfony/console/Helper/InputAwareHelper.php', + 'Symfony\\Component\\Console\\Helper\\OutputWrapper' => __DIR__ . '/..' . '/symfony/console/Helper/OutputWrapper.php', + 'Symfony\\Component\\Console\\Helper\\ProcessHelper' => __DIR__ . '/..' . '/symfony/console/Helper/ProcessHelper.php', + 'Symfony\\Component\\Console\\Helper\\ProgressBar' => __DIR__ . '/..' . '/symfony/console/Helper/ProgressBar.php', + 'Symfony\\Component\\Console\\Helper\\ProgressIndicator' => __DIR__ . '/..' . '/symfony/console/Helper/ProgressIndicator.php', + 'Symfony\\Component\\Console\\Helper\\QuestionHelper' => __DIR__ . '/..' . '/symfony/console/Helper/QuestionHelper.php', + 'Symfony\\Component\\Console\\Helper\\SymfonyQuestionHelper' => __DIR__ . '/..' . '/symfony/console/Helper/SymfonyQuestionHelper.php', + 'Symfony\\Component\\Console\\Helper\\Table' => __DIR__ . '/..' . '/symfony/console/Helper/Table.php', + 'Symfony\\Component\\Console\\Helper\\TableCell' => __DIR__ . '/..' . '/symfony/console/Helper/TableCell.php', + 'Symfony\\Component\\Console\\Helper\\TableCellStyle' => __DIR__ . '/..' . '/symfony/console/Helper/TableCellStyle.php', + 'Symfony\\Component\\Console\\Helper\\TableRows' => __DIR__ . '/..' . '/symfony/console/Helper/TableRows.php', + 'Symfony\\Component\\Console\\Helper\\TableSeparator' => __DIR__ . '/..' . '/symfony/console/Helper/TableSeparator.php', + 'Symfony\\Component\\Console\\Helper\\TableStyle' => __DIR__ . '/..' . '/symfony/console/Helper/TableStyle.php', + 'Symfony\\Component\\Console\\Input\\ArgvInput' => __DIR__ . '/..' . '/symfony/console/Input/ArgvInput.php', + 'Symfony\\Component\\Console\\Input\\ArrayInput' => __DIR__ . '/..' . '/symfony/console/Input/ArrayInput.php', + 'Symfony\\Component\\Console\\Input\\Input' => __DIR__ . '/..' . '/symfony/console/Input/Input.php', + 'Symfony\\Component\\Console\\Input\\InputArgument' => __DIR__ . '/..' . '/symfony/console/Input/InputArgument.php', + 'Symfony\\Component\\Console\\Input\\InputAwareInterface' => __DIR__ . '/..' . '/symfony/console/Input/InputAwareInterface.php', + 'Symfony\\Component\\Console\\Input\\InputDefinition' => __DIR__ . '/..' . '/symfony/console/Input/InputDefinition.php', + 'Symfony\\Component\\Console\\Input\\InputInterface' => __DIR__ . '/..' . '/symfony/console/Input/InputInterface.php', + 'Symfony\\Component\\Console\\Input\\InputOption' => __DIR__ . '/..' . '/symfony/console/Input/InputOption.php', + 'Symfony\\Component\\Console\\Input\\StreamableInputInterface' => __DIR__ . '/..' . '/symfony/console/Input/StreamableInputInterface.php', + 'Symfony\\Component\\Console\\Input\\StringInput' => __DIR__ . '/..' . '/symfony/console/Input/StringInput.php', + 'Symfony\\Component\\Console\\Logger\\ConsoleLogger' => __DIR__ . '/..' . '/symfony/console/Logger/ConsoleLogger.php', + 'Symfony\\Component\\Console\\Messenger\\RunCommandContext' => __DIR__ . '/..' . '/symfony/console/Messenger/RunCommandContext.php', + 'Symfony\\Component\\Console\\Messenger\\RunCommandMessage' => __DIR__ . '/..' . '/symfony/console/Messenger/RunCommandMessage.php', + 'Symfony\\Component\\Console\\Messenger\\RunCommandMessageHandler' => __DIR__ . '/..' . '/symfony/console/Messenger/RunCommandMessageHandler.php', + 'Symfony\\Component\\Console\\Output\\AnsiColorMode' => __DIR__ . '/..' . '/symfony/console/Output/AnsiColorMode.php', + 'Symfony\\Component\\Console\\Output\\BufferedOutput' => __DIR__ . '/..' . '/symfony/console/Output/BufferedOutput.php', + 'Symfony\\Component\\Console\\Output\\ConsoleOutput' => __DIR__ . '/..' . '/symfony/console/Output/ConsoleOutput.php', + 'Symfony\\Component\\Console\\Output\\ConsoleOutputInterface' => __DIR__ . '/..' . '/symfony/console/Output/ConsoleOutputInterface.php', + 'Symfony\\Component\\Console\\Output\\ConsoleSectionOutput' => __DIR__ . '/..' . '/symfony/console/Output/ConsoleSectionOutput.php', + 'Symfony\\Component\\Console\\Output\\NullOutput' => __DIR__ . '/..' . '/symfony/console/Output/NullOutput.php', + 'Symfony\\Component\\Console\\Output\\Output' => __DIR__ . '/..' . '/symfony/console/Output/Output.php', + 'Symfony\\Component\\Console\\Output\\OutputInterface' => __DIR__ . '/..' . '/symfony/console/Output/OutputInterface.php', + 'Symfony\\Component\\Console\\Output\\StreamOutput' => __DIR__ . '/..' . '/symfony/console/Output/StreamOutput.php', + 'Symfony\\Component\\Console\\Output\\TrimmedBufferOutput' => __DIR__ . '/..' . '/symfony/console/Output/TrimmedBufferOutput.php', + 'Symfony\\Component\\Console\\Question\\ChoiceQuestion' => __DIR__ . '/..' . '/symfony/console/Question/ChoiceQuestion.php', + 'Symfony\\Component\\Console\\Question\\ConfirmationQuestion' => __DIR__ . '/..' . '/symfony/console/Question/ConfirmationQuestion.php', + 'Symfony\\Component\\Console\\Question\\Question' => __DIR__ . '/..' . '/symfony/console/Question/Question.php', + 'Symfony\\Component\\Console\\SignalRegistry\\SignalMap' => __DIR__ . '/..' . '/symfony/console/SignalRegistry/SignalMap.php', + 'Symfony\\Component\\Console\\SignalRegistry\\SignalRegistry' => __DIR__ . '/..' . '/symfony/console/SignalRegistry/SignalRegistry.php', + 'Symfony\\Component\\Console\\SingleCommandApplication' => __DIR__ . '/..' . '/symfony/console/SingleCommandApplication.php', + 'Symfony\\Component\\Console\\Style\\OutputStyle' => __DIR__ . '/..' . '/symfony/console/Style/OutputStyle.php', + 'Symfony\\Component\\Console\\Style\\StyleInterface' => __DIR__ . '/..' . '/symfony/console/Style/StyleInterface.php', + 'Symfony\\Component\\Console\\Style\\SymfonyStyle' => __DIR__ . '/..' . '/symfony/console/Style/SymfonyStyle.php', + 'Symfony\\Component\\Console\\Terminal' => __DIR__ . '/..' . '/symfony/console/Terminal.php', + 'Symfony\\Component\\Console\\Tester\\ApplicationTester' => __DIR__ . '/..' . '/symfony/console/Tester/ApplicationTester.php', + 'Symfony\\Component\\Console\\Tester\\CommandCompletionTester' => __DIR__ . '/..' . '/symfony/console/Tester/CommandCompletionTester.php', + 'Symfony\\Component\\Console\\Tester\\CommandTester' => __DIR__ . '/..' . '/symfony/console/Tester/CommandTester.php', + 'Symfony\\Component\\Console\\Tester\\Constraint\\CommandIsSuccessful' => __DIR__ . '/..' . '/symfony/console/Tester/Constraint/CommandIsSuccessful.php', + 'Symfony\\Component\\Console\\Tester\\TesterTrait' => __DIR__ . '/..' . '/symfony/console/Tester/TesterTrait.php', + 'Symfony\\Component\\EventDispatcher\\Attribute\\AsEventListener' => __DIR__ . '/..' . '/symfony/event-dispatcher/Attribute/AsEventListener.php', + 'Symfony\\Component\\EventDispatcher\\Debug\\TraceableEventDispatcher' => __DIR__ . '/..' . '/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php', + 'Symfony\\Component\\EventDispatcher\\Debug\\WrappedListener' => __DIR__ . '/..' . '/symfony/event-dispatcher/Debug/WrappedListener.php', + 'Symfony\\Component\\EventDispatcher\\DependencyInjection\\AddEventAliasesPass' => __DIR__ . '/..' . '/symfony/event-dispatcher/DependencyInjection/AddEventAliasesPass.php', + 'Symfony\\Component\\EventDispatcher\\DependencyInjection\\RegisterListenersPass' => __DIR__ . '/..' . '/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php', + 'Symfony\\Component\\EventDispatcher\\EventDispatcher' => __DIR__ . '/..' . '/symfony/event-dispatcher/EventDispatcher.php', + 'Symfony\\Component\\EventDispatcher\\EventDispatcherInterface' => __DIR__ . '/..' . '/symfony/event-dispatcher/EventDispatcherInterface.php', + 'Symfony\\Component\\EventDispatcher\\EventSubscriberInterface' => __DIR__ . '/..' . '/symfony/event-dispatcher/EventSubscriberInterface.php', + 'Symfony\\Component\\EventDispatcher\\GenericEvent' => __DIR__ . '/..' . '/symfony/event-dispatcher/GenericEvent.php', + 'Symfony\\Component\\EventDispatcher\\ImmutableEventDispatcher' => __DIR__ . '/..' . '/symfony/event-dispatcher/ImmutableEventDispatcher.php', + 'Symfony\\Component\\Filesystem\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/filesystem/Exception/ExceptionInterface.php', + 'Symfony\\Component\\Filesystem\\Exception\\FileNotFoundException' => __DIR__ . '/..' . '/symfony/filesystem/Exception/FileNotFoundException.php', + 'Symfony\\Component\\Filesystem\\Exception\\IOException' => __DIR__ . '/..' . '/symfony/filesystem/Exception/IOException.php', + 'Symfony\\Component\\Filesystem\\Exception\\IOExceptionInterface' => __DIR__ . '/..' . '/symfony/filesystem/Exception/IOExceptionInterface.php', + 'Symfony\\Component\\Filesystem\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/filesystem/Exception/InvalidArgumentException.php', + 'Symfony\\Component\\Filesystem\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/filesystem/Exception/RuntimeException.php', + 'Symfony\\Component\\Filesystem\\Filesystem' => __DIR__ . '/..' . '/symfony/filesystem/Filesystem.php', + 'Symfony\\Component\\Filesystem\\Path' => __DIR__ . '/..' . '/symfony/filesystem/Path.php', + 'Symfony\\Component\\Finder\\Comparator\\Comparator' => __DIR__ . '/..' . '/symfony/finder/Comparator/Comparator.php', + 'Symfony\\Component\\Finder\\Comparator\\DateComparator' => __DIR__ . '/..' . '/symfony/finder/Comparator/DateComparator.php', + 'Symfony\\Component\\Finder\\Comparator\\NumberComparator' => __DIR__ . '/..' . '/symfony/finder/Comparator/NumberComparator.php', + 'Symfony\\Component\\Finder\\Exception\\AccessDeniedException' => __DIR__ . '/..' . '/symfony/finder/Exception/AccessDeniedException.php', + 'Symfony\\Component\\Finder\\Exception\\DirectoryNotFoundException' => __DIR__ . '/..' . '/symfony/finder/Exception/DirectoryNotFoundException.php', + 'Symfony\\Component\\Finder\\Finder' => __DIR__ . '/..' . '/symfony/finder/Finder.php', + 'Symfony\\Component\\Finder\\Gitignore' => __DIR__ . '/..' . '/symfony/finder/Gitignore.php', + 'Symfony\\Component\\Finder\\Glob' => __DIR__ . '/..' . '/symfony/finder/Glob.php', + 'Symfony\\Component\\Finder\\Iterator\\CustomFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/CustomFilterIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\DateRangeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/DateRangeFilterIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\DepthRangeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/DepthRangeFilterIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\ExcludeDirectoryFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\FileTypeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/FileTypeFilterIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\FilecontentFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/FilecontentFilterIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\FilenameFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/FilenameFilterIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\LazyIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/LazyIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\MultiplePcreFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/MultiplePcreFilterIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\PathFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/PathFilterIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\RecursiveDirectoryIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/RecursiveDirectoryIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\SizeRangeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/SizeRangeFilterIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\SortableIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/SortableIterator.php', + 'Symfony\\Component\\Finder\\Iterator\\VcsIgnoredFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/VcsIgnoredFilterIterator.php', + 'Symfony\\Component\\Finder\\SplFileInfo' => __DIR__ . '/..' . '/symfony/finder/SplFileInfo.php', + 'Symfony\\Component\\OptionsResolver\\Debug\\OptionsResolverIntrospector' => __DIR__ . '/..' . '/symfony/options-resolver/Debug/OptionsResolverIntrospector.php', + 'Symfony\\Component\\OptionsResolver\\Exception\\AccessException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/AccessException.php', + 'Symfony\\Component\\OptionsResolver\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/ExceptionInterface.php', + 'Symfony\\Component\\OptionsResolver\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/InvalidArgumentException.php', + 'Symfony\\Component\\OptionsResolver\\Exception\\InvalidOptionsException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/InvalidOptionsException.php', + 'Symfony\\Component\\OptionsResolver\\Exception\\MissingOptionsException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/MissingOptionsException.php', + 'Symfony\\Component\\OptionsResolver\\Exception\\NoConfigurationException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/NoConfigurationException.php', + 'Symfony\\Component\\OptionsResolver\\Exception\\NoSuchOptionException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/NoSuchOptionException.php', + 'Symfony\\Component\\OptionsResolver\\Exception\\OptionDefinitionException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/OptionDefinitionException.php', + 'Symfony\\Component\\OptionsResolver\\Exception\\UndefinedOptionsException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/UndefinedOptionsException.php', + 'Symfony\\Component\\OptionsResolver\\OptionConfigurator' => __DIR__ . '/..' . '/symfony/options-resolver/OptionConfigurator.php', + 'Symfony\\Component\\OptionsResolver\\Options' => __DIR__ . '/..' . '/symfony/options-resolver/Options.php', + 'Symfony\\Component\\OptionsResolver\\OptionsResolver' => __DIR__ . '/..' . '/symfony/options-resolver/OptionsResolver.php', + 'Symfony\\Component\\Process\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/process/Exception/ExceptionInterface.php', + 'Symfony\\Component\\Process\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/process/Exception/InvalidArgumentException.php', + 'Symfony\\Component\\Process\\Exception\\LogicException' => __DIR__ . '/..' . '/symfony/process/Exception/LogicException.php', + 'Symfony\\Component\\Process\\Exception\\ProcessFailedException' => __DIR__ . '/..' . '/symfony/process/Exception/ProcessFailedException.php', + 'Symfony\\Component\\Process\\Exception\\ProcessSignaledException' => __DIR__ . '/..' . '/symfony/process/Exception/ProcessSignaledException.php', + 'Symfony\\Component\\Process\\Exception\\ProcessTimedOutException' => __DIR__ . '/..' . '/symfony/process/Exception/ProcessTimedOutException.php', + 'Symfony\\Component\\Process\\Exception\\RunProcessFailedException' => __DIR__ . '/..' . '/symfony/process/Exception/RunProcessFailedException.php', + 'Symfony\\Component\\Process\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/process/Exception/RuntimeException.php', + 'Symfony\\Component\\Process\\ExecutableFinder' => __DIR__ . '/..' . '/symfony/process/ExecutableFinder.php', + 'Symfony\\Component\\Process\\InputStream' => __DIR__ . '/..' . '/symfony/process/InputStream.php', + 'Symfony\\Component\\Process\\Messenger\\RunProcessContext' => __DIR__ . '/..' . '/symfony/process/Messenger/RunProcessContext.php', + 'Symfony\\Component\\Process\\Messenger\\RunProcessMessage' => __DIR__ . '/..' . '/symfony/process/Messenger/RunProcessMessage.php', + 'Symfony\\Component\\Process\\Messenger\\RunProcessMessageHandler' => __DIR__ . '/..' . '/symfony/process/Messenger/RunProcessMessageHandler.php', + 'Symfony\\Component\\Process\\PhpExecutableFinder' => __DIR__ . '/..' . '/symfony/process/PhpExecutableFinder.php', + 'Symfony\\Component\\Process\\PhpProcess' => __DIR__ . '/..' . '/symfony/process/PhpProcess.php', + 'Symfony\\Component\\Process\\PhpSubprocess' => __DIR__ . '/..' . '/symfony/process/PhpSubprocess.php', + 'Symfony\\Component\\Process\\Pipes\\AbstractPipes' => __DIR__ . '/..' . '/symfony/process/Pipes/AbstractPipes.php', + 'Symfony\\Component\\Process\\Pipes\\PipesInterface' => __DIR__ . '/..' . '/symfony/process/Pipes/PipesInterface.php', + 'Symfony\\Component\\Process\\Pipes\\UnixPipes' => __DIR__ . '/..' . '/symfony/process/Pipes/UnixPipes.php', + 'Symfony\\Component\\Process\\Pipes\\WindowsPipes' => __DIR__ . '/..' . '/symfony/process/Pipes/WindowsPipes.php', + 'Symfony\\Component\\Process\\Process' => __DIR__ . '/..' . '/symfony/process/Process.php', + 'Symfony\\Component\\Process\\ProcessUtils' => __DIR__ . '/..' . '/symfony/process/ProcessUtils.php', + 'Symfony\\Component\\Stopwatch\\Section' => __DIR__ . '/..' . '/symfony/stopwatch/Section.php', + 'Symfony\\Component\\Stopwatch\\Stopwatch' => __DIR__ . '/..' . '/symfony/stopwatch/Stopwatch.php', + 'Symfony\\Component\\Stopwatch\\StopwatchEvent' => __DIR__ . '/..' . '/symfony/stopwatch/StopwatchEvent.php', + 'Symfony\\Component\\Stopwatch\\StopwatchPeriod' => __DIR__ . '/..' . '/symfony/stopwatch/StopwatchPeriod.php', + 'Symfony\\Component\\String\\AbstractString' => __DIR__ . '/..' . '/symfony/string/AbstractString.php', + 'Symfony\\Component\\String\\AbstractUnicodeString' => __DIR__ . '/..' . '/symfony/string/AbstractUnicodeString.php', + 'Symfony\\Component\\String\\ByteString' => __DIR__ . '/..' . '/symfony/string/ByteString.php', + 'Symfony\\Component\\String\\CodePointString' => __DIR__ . '/..' . '/symfony/string/CodePointString.php', + 'Symfony\\Component\\String\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/string/Exception/ExceptionInterface.php', + 'Symfony\\Component\\String\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/string/Exception/InvalidArgumentException.php', + 'Symfony\\Component\\String\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/string/Exception/RuntimeException.php', + 'Symfony\\Component\\String\\Inflector\\EnglishInflector' => __DIR__ . '/..' . '/symfony/string/Inflector/EnglishInflector.php', + 'Symfony\\Component\\String\\Inflector\\FrenchInflector' => __DIR__ . '/..' . '/symfony/string/Inflector/FrenchInflector.php', + 'Symfony\\Component\\String\\Inflector\\InflectorInterface' => __DIR__ . '/..' . '/symfony/string/Inflector/InflectorInterface.php', + 'Symfony\\Component\\String\\LazyString' => __DIR__ . '/..' . '/symfony/string/LazyString.php', + 'Symfony\\Component\\String\\Slugger\\AsciiSlugger' => __DIR__ . '/..' . '/symfony/string/Slugger/AsciiSlugger.php', + 'Symfony\\Component\\String\\Slugger\\SluggerInterface' => __DIR__ . '/..' . '/symfony/string/Slugger/SluggerInterface.php', + 'Symfony\\Component\\String\\UnicodeString' => __DIR__ . '/..' . '/symfony/string/UnicodeString.php', + 'Symfony\\Contracts\\EventDispatcher\\Event' => __DIR__ . '/..' . '/symfony/event-dispatcher-contracts/Event.php', + 'Symfony\\Contracts\\EventDispatcher\\EventDispatcherInterface' => __DIR__ . '/..' . '/symfony/event-dispatcher-contracts/EventDispatcherInterface.php', + 'Symfony\\Contracts\\Service\\Attribute\\Required' => __DIR__ . '/..' . '/symfony/service-contracts/Attribute/Required.php', + 'Symfony\\Contracts\\Service\\Attribute\\SubscribedService' => __DIR__ . '/..' . '/symfony/service-contracts/Attribute/SubscribedService.php', + 'Symfony\\Contracts\\Service\\ResetInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ResetInterface.php', + 'Symfony\\Contracts\\Service\\ServiceLocatorTrait' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceLocatorTrait.php', + 'Symfony\\Contracts\\Service\\ServiceProviderInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceProviderInterface.php', + 'Symfony\\Contracts\\Service\\ServiceSubscriberInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceSubscriberInterface.php', + 'Symfony\\Contracts\\Service\\ServiceSubscriberTrait' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceSubscriberTrait.php', + 'Symfony\\Polyfill\\Ctype\\Ctype' => __DIR__ . '/..' . '/symfony/polyfill-ctype/Ctype.php', + 'Symfony\\Polyfill\\Intl\\Grapheme\\Grapheme' => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme/Grapheme.php', + 'Symfony\\Polyfill\\Intl\\Normalizer\\Normalizer' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/Normalizer.php', + 'Symfony\\Polyfill\\Mbstring\\Mbstring' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/Mbstring.php', + 'Symfony\\Polyfill\\Php80\\Php80' => __DIR__ . '/..' . '/symfony/polyfill-php80/Php80.php', + 'Symfony\\Polyfill\\Php80\\PhpToken' => __DIR__ . '/..' . '/symfony/polyfill-php80/PhpToken.php', + 'Symfony\\Polyfill\\Php81\\Php81' => __DIR__ . '/..' . '/symfony/polyfill-php81/Php81.php', 'UnhandledMatchError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php', 'ValueError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/ValueError.php', ); From f45b1b5ee690bb4bb752c949ddda2b08fb6665a8 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Tue, 7 May 2024 19:32:06 +0300 Subject: [PATCH 081/114] Fix autoresponder not shown after connect --- src/src/Controller/ModuleConfigurationController.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/src/Controller/ModuleConfigurationController.php b/src/src/Controller/ModuleConfigurationController.php index cbe7d6f..3f6a8ab 100644 --- a/src/src/Controller/ModuleConfigurationController.php +++ b/src/src/Controller/ModuleConfigurationController.php @@ -119,7 +119,8 @@ private function handleAccountFormSubmit(FormHandlerInterface $formHandler): Res if (empty($errors)) { $this->addFlash('success', $this->trans('Connected with Smaily account.', 'Modules.Smailyforprestashop.Admin')); - return $this->renderForms(); + // Need redirect to query fresh automation flows. + return $this->redirectToRoute('smailyforprestashop_module_configuration'); } $this->flashErrors($errors); From 26cfce7b15788ad2a29b3c20b084d8ed1a029bf3 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Tue, 7 May 2024 20:02:07 +0300 Subject: [PATCH 082/114] Refactor cart generatePayload function --- .../Controller/AbandonedCartController.php | 22 +++++++------------ 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/src/src/Controller/AbandonedCartController.php b/src/src/Controller/AbandonedCartController.php index e944a6d..d811757 100644 --- a/src/src/Controller/AbandonedCartController.php +++ b/src/src/Controller/AbandonedCartController.php @@ -207,46 +207,40 @@ private function generatePayload(AbandonedCart $cart): array $selected_fields = array_intersect($fields_available, array_keys(array_filter($syncAdditional))); // Collect products of abandoned cart. - $count = 1; $currency = \Context::getContext()->currency->iso_code; - foreach ($cart->products as $product) { - // Get only 10 products. - if ($count > 10) { - $payload['over_10_products'] = 'true'; - break; - } + $payload['over_10_products'] = count($cart->products) > 10; + foreach (array_slice($cart->products, 0, 10) as $i => $product) { // Standardize template parameters across integrations. foreach ($selected_fields as $sync_field) { switch ($sync_field) { case 'base_price': - $payload['product_base_price_' . $count] = \Context::getContext()->currentLocale->formatPrice( + $payload['product_base_price_' . $i + 1] = \Context::getContext()->currentLocale->formatPrice( $product->basePrice, $currency ); break; case 'description': - $payload['product_description_' . $count] = $product->description; + $payload['product_description_' . $i + 1] = $product->description; break; case 'name': - $payload['product_name_' . $count] = $product->name; + $payload['product_name_' . $i + 1] = $product->name; break; case 'price': - $payload['product_price_' . $count] = \Context::getContext()->currentLocale->formatPrice( + $payload['product_price_' . $i + 1] = \Context::getContext()->currentLocale->formatPrice( $product->price, $currency ); break; case 'sku': - $payload['product_sku_' . $count] = $product->sku; + $payload['product_sku_' . $i + 1] = $product->sku; break; case 'quantity': - $payload['product_quantity_' . $count] = $product->quantity; + $payload['product_quantity_' . $i + 1] = $product->quantity; break; default: break; } } - ++$count; } return $payload; From 04a8e137ba83825cb9a949ba49adbc7e2974532e Mon Sep 17 00:00:00 2001 From: Kaarel Date: Wed, 8 May 2024 12:33:49 +0300 Subject: [PATCH 083/114] Improve readability of AbandonedCartController --- .../Controller/AbandonedCartController.php | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/src/src/Controller/AbandonedCartController.php b/src/src/Controller/AbandonedCartController.php index d811757..00e4c0c 100644 --- a/src/src/Controller/AbandonedCartController.php +++ b/src/src/Controller/AbandonedCartController.php @@ -83,7 +83,6 @@ public function sync(string $token): bool $count = 0; $failCount = 0; - $success = true; $abandonedCartsCollection = new AbandonedCartCollection(); foreach ($abandonedCartsCollection->carts as $cart) { @@ -93,23 +92,20 @@ public function sync(string $token): bool // This doesn't allow the check to pass. I recommend running the cron job // in a private window to avoid this. if (!$this->isDelayTimePassed($cart)) { - break; + continue; } - if (!$this->send($cart)) { - ++$failCount; - $success = false; - } + $this->send($cart) || $failCount++; ++$count; } echo sprintf("%s abandoned cart email(s) sent!\r\n", $count); - if (!$success) { + if ($failCount > 0) { echo sprintf("%s failed cart(s), check logs!\r\n", $failCount); } - return $success; + return $failCount > 0; } private function isDelayTimePassed(AbandonedCart $cart): bool @@ -119,12 +115,9 @@ private function isDelayTimePassed(AbandonedCart $cart): bool $reminder_time = strtotime('+' . $syncInterval . ' minutes', $cart_updated_time); $current_time = strtotime(date('Y-m-d H:i') . ':00'); - // Don't continue if cart delay time has not passed. - if ($current_time < $reminder_time) { - return false; - } - return true; + // Don't continue if cart delay time has not passed. + return $current_time >= $reminder_time; } /** From 85e67c8953f3067c62f71b3029f9984ecc7c9017 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Mon, 13 May 2024 12:30:30 +0300 Subject: [PATCH 084/114] Drop XDEBUG values, add prestashop-data volume --- docker-compose.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docker-compose.yaml b/docker-compose.yaml index d1cd27e..efc968c 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -2,17 +2,15 @@ services: prestashop: container_name: prestashop image: prestashop/prestashop-flashlight:8.1.5 - # image: prestashop/prestashop-flashlight:nightly # Nightly build currently has XDEBUG support depends_on: mysql: condition: service_healthy environment: - PS_DOMAIN=localhost:8080 - - DEBUG_MODE=true - - XDEBUG_ENABLED=true ports: - 8080:80 volumes: + - prestashop-data:/var/www/html - .vscode:/var/www/html/.vscode - ./src:/var/www/html/modules/smailyforprestashop @@ -68,4 +66,5 @@ services: - 8025:8025 volumes: + prestashop-data: prestashop-db-data: From f7ead4adeda963b1b959f965278434f3d9d0ded9 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Mon, 13 May 2024 12:37:06 +0300 Subject: [PATCH 085/114] Improve contributing guide --- CONTRIBUTING.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 459a56c..56cd2e9 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -24,7 +24,7 @@ Next, change your working directory to the local repository: And run the environment: - $ docker compose up + $ docker compose up -d You can access PrestaShop store from `http://localhost:8080` and administration interface from `http://localhost:8080/admin-dev` URL. @@ -54,9 +54,9 @@ You can run the environment by executing: > **Note!** Make sure you do not have any other process(es) listening on ports 8080 and 8888. -### Developing in VsCode Remote Container +### Developing in VSCode Remote Container -It is advised to develop the application inside VSCode remote container. This allows to get PHP intellisense on PrestaShop classes, includes, etc and provides an debugging option when using latest version of the `prestashop/prestashop-flashlight` image. Open `/var/www/html` directory of `prestashop` container as this provides context for intellisense. +It is advised to develop the application inside VSCode remote container. This allows to get PHP intellisense on PrestaShop classes, includes, etc and provides an debugging option when using latest version of the `prestashop/prestashop-flashlight` image. Open `/var/www/html` directory of `prestashop` container as this provides context for IntelliSense. ## Stopping the environment @@ -70,16 +70,16 @@ If you need to reset the installation, just simply delete environment's Docker v $ docker compose down --remove-orphans -v -## Helpful notices for development +## Troubleshooting -### php-cs-fixer not working +### PHP CS Fixer is not working You may notice that `php-cs-fixer` might not work for some PrestaShop image versions. `php-cs-fixer` output provides a hint that the `/var/www/html/tests` directory does not exist. This is due to the `tests` folder being included in the [PrestaShop repo](https://github.com/PrestaShop/PrestaShop) but not in the docker image. Adding an empty `/var/www/heml/tests` folder enables the `php-cs-fixer`. -## cache invalidation +## Invalidating cache There seems to be lot of issues related to cache being invalid. Sometimes the module routes are not found or services configuration is missing etc. Most of them can be fixed by pruning cache folder located in `/var/www/html/var/cache/dev`. Some versions use `admin-dev` folder. -## catching shop sent emails +## Catching shop sent emails -The development environment is configured with mailhog that is accessible from `localhost:8025`. You need to configure the shop to use this SMTP server. Navigate from the side menu to `CONFIGURE` -> `Advanced Parameters` -> `E-mail`. Select `Set my own SMTP parameters (for advanced users ONLY)` and use `mailhog` as SMTP server and `1025` as the port. Sending a test email should result a test message arriving to the inbox of mailhog client on `localhost:8025`. +The development environment is configured with MailHog that is accessible from `localhost:8025`. You need to configure the shop to use this SMTP server. Navigate from the side menu to `CONFIGURE` -> `Advanced Parameters` -> `E-mail`. Select `Set my own SMTP parameters (for advanced users ONLY)` and use `mailhog` as SMTP server and `1025` as the port. Sending a test email should result a test message arriving to the inbox of MailHog client on `localhost:8025`. From ff934f9a4cc4bd6cac3edc4cf58394a2300b0bde Mon Sep 17 00:00:00 2001 From: Kaarel Date: Mon, 13 May 2024 12:39:49 +0300 Subject: [PATCH 086/114] Use VS Code instead of VSCode --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 56cd2e9..a427ca5 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -54,9 +54,9 @@ You can run the environment by executing: > **Note!** Make sure you do not have any other process(es) listening on ports 8080 and 8888. -### Developing in VSCode Remote Container +### Developing in VS Code Remote Container -It is advised to develop the application inside VSCode remote container. This allows to get PHP intellisense on PrestaShop classes, includes, etc and provides an debugging option when using latest version of the `prestashop/prestashop-flashlight` image. Open `/var/www/html` directory of `prestashop` container as this provides context for IntelliSense. +It is advised to develop the application inside VS Code remote container. This allows to get PHP IntelliSense on PrestaShop classes, includes, etc and provides an debugging option when using latest version of the `prestashop/prestashop-flashlight` image. Open `/var/www/html` directory of `prestashop` container as this provides context for IntelliSense. ## Stopping the environment From c9e4f694704b19cc7ca3b7dc1ff0412bd4d05909 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Mon, 13 May 2024 12:55:28 +0300 Subject: [PATCH 087/114] Unify PrestaShop word usage, improve README.md --- .github/ISSUE_TEMPLATE/bug_report.md | 6 +++--- .github/pull_request_template.md | 2 +- CHANGELOG.md | 2 +- CONTRIBUTING.md | 4 ++-- README.md | 19 +++++++++---------- USERGUIDE.md | 8 ++++---- 6 files changed, 20 insertions(+), 21 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 2a2b56b..a6400e0 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -25,11 +25,11 @@ A clear and concise description of what actually happened. **Screenshots** If applicable, add screenshots to help explain your problem. -**Prestashop version** -Add the Prestashop version you are currently using. +**PrestaShop version** +Add the PrestaShop version you are currently using. **Module version** -Add the Smaily For Prestashop module version you are currently using. +Add the Smaily For PrestaShop module version you are currently using. **Additional context** Add any other context about the problem here. diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 3784571..e8f187e 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -22,5 +22,5 @@ A list of changes regarding the next version release: **After PR merge** - [ ] Released new version in GitHub -- [ ] Updated plugin on the Prestashop Addons Marketplace +- [ ] Updated plugin on the PrestaShop Addons Marketplace - [ ] Pinged code owners to inform marketing about new version diff --git a/CHANGELOG.md b/CHANGELOG.md index fd8b79c..8fa3aff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,7 +17,7 @@ - New feature to trigger opt-in if new customer joins with newsletter enabled [[#32](https://github.com/sendsmaily/smaily-prestashop-module/issues/32)] - Fix missing template variables [[#33](https://github.com/sendsmaily/smaily-prestashop-module/issues/33)] -- Use PrestashopLogger for logs created by module [[#36](https://github.com/sendsmaily/smaily-prestashop-module/issues/36)] +- Use PrestaShopLogger for logs created by module [[#36](https://github.com/sendsmaily/smaily-prestashop-module/issues/36)] ### 1.4.0 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a427ca5..8434af3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -80,6 +80,6 @@ You may notice that `php-cs-fixer` might not work for some PrestaShop image vers There seems to be lot of issues related to cache being invalid. Sometimes the module routes are not found or services configuration is missing etc. Most of them can be fixed by pruning cache folder located in `/var/www/html/var/cache/dev`. Some versions use `admin-dev` folder. -## Catching shop sent emails +## Catching sent emails -The development environment is configured with MailHog that is accessible from `localhost:8025`. You need to configure the shop to use this SMTP server. Navigate from the side menu to `CONFIGURE` -> `Advanced Parameters` -> `E-mail`. Select `Set my own SMTP parameters (for advanced users ONLY)` and use `mailhog` as SMTP server and `1025` as the port. Sending a test email should result a test message arriving to the inbox of MailHog client on `localhost:8025`. +The development environment is configured with MailHog that is accessible from `localhost:8025`. You need to configure the store to use this SMTP server. Navigate from the side menu to `CONFIGURE` -> `Advanced Parameters` -> `E-mail`. Select `Set my own SMTP parameters (for advanced users ONLY)` and use `mailhog` as SMTP server and `1025` as the port. Sending a test email should result a test message arriving to the inbox of MailHog client on `localhost:8025`. diff --git a/README.md b/README.md index 3b0c143..9957d90 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Smaily for Prestashop +# Smaily for PrestaShop ## Description @@ -10,7 +10,6 @@ Automatically subscribe newsletter subscribers to a Smaily subscribers list, gen ### PrestaShop Newsletter Subscribers -- Add subscribers to the Smaily subscribers list - Use the Subscribe Newsletter modules form to send subscribers directly to the Smaily subscribers list - Subscribe Newsletter form with CAPTCHA support @@ -20,9 +19,9 @@ Generate an RSS feed with the 50 latest updated active products for easy import ### Two-way synchronization between Smaily and PrestaShop -- Remove Store subscribers based on the Smaily unsubscribed list +- Remove PrestaShop subscribers based on the Smaily unsubscribed list - Update unsubscribed status in PrestaShop users database -- Collect and send new user data to Smaily for subscribers in the Store +- Collect and send new user data to Smaily for subscribers in the store - Generate data log for each update ### Abandoned cart @@ -32,7 +31,7 @@ Generate an RSS feed with the 50 latest updated active products for easy import ## Requirements -Smaily for Prestashop requires PHP 7.2+ (PHP 8.1+ recommended). You'll also need to be running Prestashop 8.0+. +Smaily for PrestaShop requires PHP 7.2+ (PHP 8.1+ recommended). You'll also need to be running PrestaShop 8.0+. ## Documentation & Support @@ -40,16 +39,16 @@ Online documentation and code samples are available via our [Help Center](https: ## Contribute -All development for Smaily for Prestashop is [handled via GitHub](https://github.com/sendsmaily/smaily-prestashop-module). Opening new issues and submitting pull requests are welcome. +All development for Smaily for PrestaShop is [handled via GitHub](https://github.com/sendsmaily/smaily-prestashop-module). Opening new issues and submitting pull requests are welcome. ## Installation -1. Upload or extract the `smailyforprestashop` folder to your site's `/modules/` directory. You can also find this module in **Modules -> Selection** - section in your admin panel - search for Smaily for Prestashop. -2. Install the plugin from the **Modules** - menu in Prestashop. +1. Upload or extract the `smailyforprestashop` folder to your site's `/modules/` directory. You can also find this module in **Modules -> Selection** - section in your admin panel - search for Smaily for PrestaShop. +2. Install the plugin from the **Modules** - menu in PrestaShop. ## Usage -1. Go to Modules -> Module Manager -> Smaily for Prestashop and click Configure +1. Go to Modules -> Module Manager -> Smaily for PrestaShop and click Configure 2. Insert your Smaily API authentication information and click **Connect** to get started. 3. Under the **Customer Sync** tab select if you want to enable customer synchronization. 4. Select additional fields you want to synchronize (email is automatic) and change the cron token if you like your own. @@ -61,7 +60,7 @@ All development for Smaily for Prestashop is [handled via GitHub](https://github 10. Select additional fields to send to the abandoned cart template. Firstname, lastname and store-url are always added. 11. Add delay time when the cart is considered abandoned. Minimum time 15 minutes. Change the cron token if you like your own. 12. Click **Save** to save abandoned cart settings. -13. Cron is set up to synchronize contacts when CRON-URL is visited. Use host Cpanel, PrestaShop Cron tasks manager or external cron service to automate the process. +13. Cron is set up to synchronize contacts when cron-URL is visited. Use host cPanel, PrestaShop cron tasks manager or external cron service to automate the process. 14. That's it, your PrestaShop store is now integrated with the Smaily Plugin! ## Using the Newsletter Subscription form diff --git a/USERGUIDE.md b/USERGUIDE.md index 77a3883..4b3a78a 100644 --- a/USERGUIDE.md +++ b/USERGUIDE.md @@ -1,10 +1,10 @@ # USER GUIDE -This guide will help you set up and configure Smaily for Prestashop module. +This guide will help you set up and configure Smaily for PrestaShop module. ## Installation -1. You can get the **Smaily for Prestashop module** from Smaily's [GitHub repository](https://github.com/sendsmaily/smaily-prestashop-module/releases). +1. You can get the **Smaily for PrestaShop module** from Smaily's [GitHub repository](https://github.com/sendsmaily/smaily-prestashop-module/releases). 2. Download the .zip file for the latest release. Extracted contents of the archive to a `smailyforprestashop` folder. @@ -16,7 +16,7 @@ This guide will help you set up and configure Smaily for Prestashop module. ## Connecting module to Smaily account -1. To start using Smaily extension navigate to **Modules -> Module Manager** section. On the configuration page, find **Smaily for Prestashop**, then click on **Configure**. +1. To start using Smaily extension navigate to **Modules -> Module Manager** section. On the configuration page, find **Smaily for PrestaShop**, then click on **Configure**. 2. You will be presented with a configuration page for entering your Smaily API credentials - **subdomain, username, and password**. You can follow our [API user creation guide](https://smaily.com/help/api/general/create-api-user/). @@ -67,7 +67,7 @@ Registered customers, who have opted for the newsletter will be added to Smaily' ## RSS -Smaily's module can create an RSS link of available Prestashop products. +Smaily's module can create an RSS link of available PrestaShop products. The module provides several options for generating an RSS feed link. 1. **Products category**: selecting a category will display only products under that category in the RSS feed. From b99b3f6f671f5c0485dc551907d8648ff3ff59c1 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Mon, 13 May 2024 14:02:21 +0300 Subject: [PATCH 088/114] Add post install script for MailHog --- docker-compose.yaml | 1 + post-scripts/01-mailhog.sh | 6 ++++++ 2 files changed, 7 insertions(+) create mode 100755 post-scripts/01-mailhog.sh diff --git a/docker-compose.yaml b/docker-compose.yaml index efc968c..dd6365f 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -13,6 +13,7 @@ services: - prestashop-data:/var/www/html - .vscode:/var/www/html/.vscode - ./src:/var/www/html/modules/smailyforprestashop + - ./post-scripts:/tmp/post-scripts mysql: container_name: prestashop_db diff --git a/post-scripts/01-mailhog.sh b/post-scripts/01-mailhog.sh new file mode 100755 index 0000000..be35667 --- /dev/null +++ b/post-scripts/01-mailhog.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +echo "Adding MailHog config.." +/usr/local/bin/php /var/www/html/bin/console prestashop:config set PS_MAIL_SERVER --value mailhog +/usr/local/bin/php /var/www/html/bin/console prestashop:config set PS_MAIL_SMTP_PORT --value 1025 +/usr/local/bin/php /var/www/html/bin/console prestashop:config set PS_MAIL_METHOD --value 2 From 4a732cefdcc2ea818231256282e5c56a4248afc4 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Mon, 13 May 2024 14:03:32 +0300 Subject: [PATCH 089/114] Remove email section from CONTRIBUTING.md --- CONTRIBUTING.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8434af3..d431cc8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -79,7 +79,3 @@ You may notice that `php-cs-fixer` might not work for some PrestaShop image vers ## Invalidating cache There seems to be lot of issues related to cache being invalid. Sometimes the module routes are not found or services configuration is missing etc. Most of them can be fixed by pruning cache folder located in `/var/www/html/var/cache/dev`. Some versions use `admin-dev` folder. - -## Catching sent emails - -The development environment is configured with MailHog that is accessible from `localhost:8025`. You need to configure the store to use this SMTP server. Navigate from the side menu to `CONFIGURE` -> `Advanced Parameters` -> `E-mail`. Select `Set my own SMTP parameters (for advanced users ONLY)` and use `mailhog` as SMTP server and `1025` as the port. Sending a test email should result a test message arriving to the inbox of MailHog client on `localhost:8025`. From f738362f7b9402cb2444dc98c31fbe3856b4bea2 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Mon, 13 May 2024 14:43:57 +0300 Subject: [PATCH 090/114] Add missing type declaration and default value --- src/src/Controller/CustomerSyncController.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/src/Controller/CustomerSyncController.php b/src/src/Controller/CustomerSyncController.php index 0f4d247..f9438f3 100644 --- a/src/src/Controller/CustomerSyncController.php +++ b/src/src/Controller/CustomerSyncController.php @@ -121,7 +121,7 @@ public function sync(string $token): bool * * @return bool success status */ - private function removeUnsubscribers($limit = 1000) + private function removeUnsubscribers(int $limit = 1000) { $offset = 0; @@ -174,7 +174,7 @@ function ($item) { * * @return bool success status */ - public function sendSubscribersToSmaily(int $limit): bool + public function sendSubscribersToSmaily(int $limit = 1000): bool { $offset = 0; $subscriberCollection = new SubscriberCollection(); From 2177a59e0ffb3a25756d976177e10903db432a4d Mon Sep 17 00:00:00 2001 From: Kaarel Date: Tue, 14 May 2024 08:21:10 +0300 Subject: [PATCH 091/114] Add validation for subdomain field --- src/src/Form/AccountConfigurationFormType.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/src/Form/AccountConfigurationFormType.php b/src/src/Form/AccountConfigurationFormType.php index 5bae2e7..98948a2 100644 --- a/src/src/Form/AccountConfigurationFormType.php +++ b/src/src/Form/AccountConfigurationFormType.php @@ -38,6 +38,7 @@ use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormError; use Symfony\Component\Form\FormEvents; +use Symfony\Component\Validator\Constraints\Regex; class AccountConfigurationFormType extends TranslatorAwareType { @@ -47,6 +48,15 @@ public function buildForm(FormBuilderInterface $builder, array $options): void ->add('subdomain', TextType::class, [ 'label' => $this->trans('Subdomain', 'Modules.Smailyforprestashop.Admin'), 'help' => $this->trans('For example demo from https://demo.sendsmaily.net', 'Modules.Smailyforprestashop.Admin'), + 'constraints' => [ + new Regex([ + 'pattern' => '/^[a-zA-Z0-9]*$/i', // ASCII + 'message' => $this->trans( + 'Invalid subdomain value', + 'Modules.Smailyforprestashop.Admin', + ), + ]), + ], ]) ->add('username', TextType::class, [ 'label' => $this->trans('Username', 'Modules.Smailyforprestashop.Admin'), From c1dee353f2d547a25da9df3db13ac035a04cd6a7 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Tue, 14 May 2024 09:37:04 +0300 Subject: [PATCH 092/114] Add correct error message for missing abandoned cart trigger --- src/src/Form/AbandonedCartFormDataConfiguration.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/src/Form/AbandonedCartFormDataConfiguration.php b/src/src/Form/AbandonedCartFormDataConfiguration.php index d743fc1..54a296a 100644 --- a/src/src/Form/AbandonedCartFormDataConfiguration.php +++ b/src/src/Form/AbandonedCartFormDataConfiguration.php @@ -72,7 +72,7 @@ public function updateConfiguration(array $formData): array if ($formData['enabled'] && empty($formData['autoresponder'])) { $errors[] = [ - 'key' => 'Please select an automation workflow for customer Opt-In trigger.', + 'key' => 'Please select an automation workflow for Abandoned Cart trigger.', 'domain' => 'Modules.Smailyforprestashop.Admin', 'parameters' => [], ]; From f96e1be5474711c98c04ab0439a2e4407a31f32c Mon Sep 17 00:00:00 2001 From: Kaarel Date: Tue, 14 May 2024 09:48:15 +0300 Subject: [PATCH 093/114] Fix typo --- src/src/Form/AbandonedCartFormType.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/src/Form/AbandonedCartFormType.php b/src/src/Form/AbandonedCartFormType.php index a8ede3b..fa9cd72 100644 --- a/src/src/Form/AbandonedCartFormType.php +++ b/src/src/Form/AbandonedCartFormType.php @@ -76,7 +76,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('enabled', SwitchType::class, [ - 'label' => $this->trans('Enable Abandoed Cart', 'Modules.Smailyforprestashop.Admin'), + 'label' => $this->trans('Enable Abandoned Cart', 'Modules.Smailyforprestashop.Admin'), 'required' => false, ]) ->add('autoresponder', ChoiceType::class, [ From c906154150898763fe6c430f145362e3e581795c Mon Sep 17 00:00:00 2001 From: Kaarel Date: Tue, 14 May 2024 10:25:19 +0300 Subject: [PATCH 094/114] Improve abandoned cart SQL query --- src/src/Model/AbandonedCartCollection.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/src/Model/AbandonedCartCollection.php b/src/src/Model/AbandonedCartCollection.php index b56175c..3b35ed2 100644 --- a/src/src/Model/AbandonedCartCollection.php +++ b/src/src/Model/AbandonedCartCollection.php @@ -54,6 +54,9 @@ public function __construct() */ private function getCarts() { + // Legacy method that requires trimming as query strings were previously concatenated. + $shopRestriction = ltrim(\Shop::addSqlRestriction(\Shop::SHARE_CUSTOMER, 'c'), ' AND '); + $sql = new \DbQuery(); $sql->select('c.`id_cart`, c.`id_customer`, c.`date_upd`, cu.`firstname`, cu.`lastname`, cu.`email`'); $sql->from('cart', 'c'); @@ -63,8 +66,8 @@ private function getCarts() $sql->where('sc.`id_cart` IS NULL'); $sql->where('DATE_SUB(CURDATE(),INTERVAL 10 DAY) <= c.date_add'); $sql->where('o.`id_order` IS NULL'); + $sql->where($shopRestriction); $sql->groupBy('cu.`id_customer`'); - $sql .= \Shop::addSqlRestriction(\Shop::SHARE_CUSTOMER, 'c'); $carts = $this->db->executeS($sql); From 4200394aaa2dc66be01e3d940e2991b22e56b6a2 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Tue, 14 May 2024 10:41:11 +0300 Subject: [PATCH 095/114] Use array_column instead of array_map --- src/src/Controller/CustomerSyncController.php | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/src/Controller/CustomerSyncController.php b/src/src/Controller/CustomerSyncController.php index f9438f3..490817d 100644 --- a/src/src/Controller/CustomerSyncController.php +++ b/src/src/Controller/CustomerSyncController.php @@ -144,14 +144,7 @@ private function removeUnsubscribers(int $limit = 1000) // Remove subscribed status for unsubscribers. $subscriberCollectionModel = new SubscriberCollection(); - $result = $subscriberCollectionModel->batchUnsubscribeByEmail( - array_map( - function ($item) { - return $item['email']; - }, - $body, - ) - ); + $result = $subscriberCollectionModel->batchUnsubscribeByEmail(array_column($body, 'email')); // Stop if query fails. if (!$result) { From fec894bc0c5b2c3e6cbbef2f674940532c1c8276 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Tue, 14 May 2024 10:51:55 +0300 Subject: [PATCH 096/114] Improve wording in Ps_Emailsubscription help text --- src/overrides/ps_emailsubscription.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/overrides/ps_emailsubscription.php b/src/overrides/ps_emailsubscription.php index 3b37446..88a92d2 100644 --- a/src/overrides/ps_emailsubscription.php +++ b/src/overrides/ps_emailsubscription.php @@ -42,7 +42,7 @@ public function getContent() $this->trans('Smaily for PrestaShop modules opt-in automation trigger is active. Set up verification, confirmation and voucher sending in Smaily to avoid sending double emails.', [], 'Modules.Smailyforprestashop.Admin') . '' . ' ' . - $this->trans('How to set up automation flow?', [], 'Modules.Smailyforprestashop.Admin') . + $this->trans('How to set up an automation flow?', [], 'Modules.Smailyforprestashop.Admin') . '' . ''; } From c2046e0c57195aec84496ba3534380030d92eaa4 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Tue, 14 May 2024 11:03:37 +0300 Subject: [PATCH 097/114] Fix validation errors routing to account tab --- .../ModuleConfigurationController.php | 31 ++++++++++++------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/src/src/Controller/ModuleConfigurationController.php b/src/src/Controller/ModuleConfigurationController.php index 3f6a8ab..af411f8 100644 --- a/src/src/Controller/ModuleConfigurationController.php +++ b/src/src/Controller/ModuleConfigurationController.php @@ -57,7 +57,6 @@ class ModuleConfigurationController extends FrameworkBundleAdminController */ private $abandonedCartForm; - /** * @var FormInterface; */ @@ -91,19 +90,19 @@ public function index(Request $request): Response return $this->handleAccountFormSubmit($accountFormDataHandler); } - if ($this->customerSyncForm->get('submit')->isClicked() && $this->customerSyncForm->isValid()) { + if ($this->customerSyncForm->get('submit')->isClicked()) { $this->tab = 'sync'; return $this->handleCustomerSyncFormSubmit($customerSyncFormDataHandler); } - if ($this->abandonedCartForm->get('submit')->isClicked() && $this->abandonedCartForm->isValid()) { + if ($this->abandonedCartForm->get('submit')->isClicked()) { $this->tab = 'cart'; return $this->handleAbandonedCartFormSubmit($abandonedCartFormDataHandler); } - if ($this->rssFeedForm->get('submit')->isClicked() && $this->rssFeedForm->isValid()) { + if ($this->rssFeedForm->get('submit')->isClicked()) { $this->tab = 'rss'; return $this->handleRssFeedFormSubmit($rssFeedFormDataHandler); @@ -130,9 +129,13 @@ private function handleAccountFormSubmit(FormHandlerInterface $formHandler): Res private function handleCustomerSyncFormSubmit(FormHandlerInterface $formHandler): Response { + if (!$this->customerSyncForm->isValid()) { + return $this->renderForms(); + } + $formData = $this->customerSyncForm->getData(); - $errors = $formHandler->save($formData); + $errors = $formHandler->save($formData); if (empty($errors)) { $this->addFlash('success', $this->trans('Configuration saved.', 'Modules.Smailyforprestashop.Admin')); if ($formData['optin_enabled']) { @@ -155,8 +158,11 @@ private function handleCustomerSyncFormSubmit(FormHandlerInterface $formHandler) private function handleAbandonedCartFormSubmit(FormHandlerInterface $formHandler): Response { - $errors = $formHandler->save($this->abandonedCartForm->getData()); + if (!$this->abandonedCartForm->isValid()) { + return $this->renderForms(); + } + $errors = $formHandler->save($this->abandonedCartForm->getData()); if (empty($errors)) { $this->addFlash('success', $this->trans('Configuration saved.', 'Modules.Smailyforprestashop.Admin')); @@ -170,8 +176,11 @@ private function handleAbandonedCartFormSubmit(FormHandlerInterface $formHandler private function handleRssFeedFormSubmit(FormHandlerInterface $formHandler): Response { - $errors = $formHandler->save($this->rssFeedForm->getData()); + if (!$this->rssFeedForm->isValid()) { + return $this->renderForms(); + } + $errors = $formHandler->save($this->rssFeedForm->getData()); if (empty($errors)) { $this->addFlash('success', $this->trans('RSS-feed URL updated.', 'Modules.Smailyforprestashop.Admin')); @@ -191,10 +200,10 @@ private function renderForms(): Response // Allow to access settings only if account is connected. if (!$isAccountConnected) { return $this->render('@Modules/smailyforprestashop/views/templates/admin/configuration.html.twig', [ - 'accountConfigurationForm' => $this->accountForm->createView(), - 'accountConnected' => false, - 'tab' => $this->tab, - 'jsVariables' => [], + 'accountConfigurationForm' => $this->accountForm->createView(), + 'accountConnected' => false, + 'tab' => $this->tab, + 'jsVariables' => [], ]); } From b3592f646fdb93e6b0ec8635b35761bcddeeae0c Mon Sep 17 00:00:00 2001 From: Kaarel Date: Tue, 14 May 2024 12:07:09 +0300 Subject: [PATCH 098/114] Fix RSS product category select value not updated --- src/src/Form/ChoiceProvider/ProductCategory.php | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/src/Form/ChoiceProvider/ProductCategory.php b/src/src/Form/ChoiceProvider/ProductCategory.php index 3d223f6..de19cce 100644 --- a/src/src/Form/ChoiceProvider/ProductCategory.php +++ b/src/src/Form/ChoiceProvider/ProductCategory.php @@ -56,14 +56,10 @@ public function __construct(TranslatorInterface $translator, CategoryDataProvide */ public function getChoices(): array { - $choices = [ + return [ $this->translator->trans('All products', [], 'Modules.Smailyforprestashop.Admin') => null, + ...$this->recursivelyNormalizeCategories($this->categoryDataProvider->getNestedCategories()), ]; - - return array_merge( - $choices, - $this->recursivelyNormalizeCategories($this->categoryDataProvider->getNestedCategories()) - ); } /** @@ -78,7 +74,7 @@ private function recursivelyNormalizeCategories($categories) $normalized = []; foreach ($categories as $category) { - $normalized[$category['name']] = $category['id_category']; + $normalized[$category['name']] = strval($category['id_category']); if (isset($category['children']) && is_array($category['children'])) { $normalized += $this->recursivelyNormalizeCategories($category['children']); } From c4d3c635b299e35de00afc10d66e6e3ebd29a33f Mon Sep 17 00:00:00 2001 From: Kaarel Date: Tue, 14 May 2024 12:34:30 +0300 Subject: [PATCH 099/114] Use debug mode --- docker-compose.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/docker-compose.yaml b/docker-compose.yaml index dd6365f..d53a910 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -7,6 +7,7 @@ services: condition: service_healthy environment: - PS_DOMAIN=localhost:8080 + - DEBUG_MODE=true ports: - 8080:80 volumes: From 6899016d329272f0a732fd38f849a9a7bd38a414 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Tue, 14 May 2024 12:55:55 +0300 Subject: [PATCH 100/114] Add vendor files to source control. --- src/.gitignore | 9 - src/vendor/autoload.php | 20 +- src/vendor/composer/ClassLoader.php | 137 +- src/vendor/composer/InstalledVersions.php | 350 +++++ src/vendor/composer/LICENSE | 19 + src/vendor/composer/autoload_classmap.php | 1123 +--------------- src/vendor/composer/autoload_files.php | 17 - src/vendor/composer/autoload_namespaces.php | 2 +- src/vendor/composer/autoload_psr4.php | 29 +- src/vendor/composer/autoload_real.php | 37 +- src/vendor/composer/autoload_static.php | 1281 +------------------ src/vendor/composer/installed.json | 5 + src/vendor/composer/installed.php | 23 + 13 files changed, 492 insertions(+), 2560 deletions(-) create mode 100644 src/vendor/composer/InstalledVersions.php create mode 100644 src/vendor/composer/LICENSE delete mode 100644 src/vendor/composer/autoload_files.php create mode 100644 src/vendor/composer/installed.json create mode 100644 src/vendor/composer/installed.php diff --git a/src/.gitignore b/src/.gitignore index 002ea86..c3ed10e 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -1,10 +1 @@ *.cache - -# Keep only autoload files -vendor/* -!vendor/autoload.php -!vendor/composer -vendor/composer/* -!vendor/composer/autoload* -!vendor/composer/ClassLoader.php -!vendor/composer/platform_check.php diff --git a/src/vendor/autoload.php b/src/vendor/autoload.php index 6709c11..a73001a 100644 --- a/src/vendor/autoload.php +++ b/src/vendor/autoload.php @@ -2,24 +2,6 @@ // autoload.php @generated by Composer -if (PHP_VERSION_ID < 50600) { - if (!headers_sent()) { - header('HTTP/1.1 500 Internal Server Error'); - } - $err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL; - if (!ini_get('display_errors')) { - if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') { - fwrite(STDERR, $err); - } elseif (!headers_sent()) { - echo $err; - } - } - trigger_error( - $err, - E_USER_ERROR - ); -} - require_once __DIR__ . '/composer/autoload_real.php'; -return ComposerAutoloaderInite1765f078aa62628913827ce651850ac::getLoader(); +return ComposerAutoloaderInit0561655749add06403fad08441d54811::getLoader(); diff --git a/src/vendor/composer/ClassLoader.php b/src/vendor/composer/ClassLoader.php index 7824d8f..afef3fa 100644 --- a/src/vendor/composer/ClassLoader.php +++ b/src/vendor/composer/ClassLoader.php @@ -42,37 +42,35 @@ */ class ClassLoader { - /** @var \Closure(string):void */ - private static $includeFile; - - /** @var string|null */ + /** @var ?string */ private $vendorDir; // PSR-4 /** - * @var array> + * @var array[] + * @psalm-var array> */ private $prefixLengthsPsr4 = array(); /** - * @var array> + * @var array[] + * @psalm-var array> */ private $prefixDirsPsr4 = array(); /** - * @var list + * @var array[] + * @psalm-var array */ private $fallbackDirsPsr4 = array(); // PSR-0 /** - * List of PSR-0 prefixes - * - * Structured as array('F (first letter)' => array('Foo\Bar (full prefix)' => array('path', 'path2'))) - * - * @var array>> + * @var array[] + * @psalm-var array> */ private $prefixesPsr0 = array(); /** - * @var list + * @var array[] + * @psalm-var array */ private $fallbackDirsPsr0 = array(); @@ -80,7 +78,8 @@ class ClassLoader private $useIncludePath = false; /** - * @var array + * @var string[] + * @psalm-var array */ private $classMap = array(); @@ -88,29 +87,29 @@ class ClassLoader private $classMapAuthoritative = false; /** - * @var array + * @var bool[] + * @psalm-var array */ private $missingClasses = array(); - /** @var string|null */ + /** @var ?string */ private $apcuPrefix; /** - * @var array + * @var self[] */ private static $registeredLoaders = array(); /** - * @param string|null $vendorDir + * @param ?string $vendorDir */ public function __construct($vendorDir = null) { $this->vendorDir = $vendorDir; - self::initializeIncludeClosure(); } /** - * @return array> + * @return string[] */ public function getPrefixes() { @@ -122,7 +121,8 @@ public function getPrefixes() } /** - * @return array> + * @return array[] + * @psalm-return array> */ public function getPrefixesPsr4() { @@ -130,7 +130,8 @@ public function getPrefixesPsr4() } /** - * @return list + * @return array[] + * @psalm-return array */ public function getFallbackDirs() { @@ -138,7 +139,8 @@ public function getFallbackDirs() } /** - * @return list + * @return array[] + * @psalm-return array */ public function getFallbackDirsPsr4() { @@ -146,7 +148,8 @@ public function getFallbackDirsPsr4() } /** - * @return array Array of classname => path + * @return string[] Array of classname => path + * @psalm-return array */ public function getClassMap() { @@ -154,7 +157,8 @@ public function getClassMap() } /** - * @param array $classMap Class to filename map + * @param string[] $classMap Class to filename map + * @psalm-param array $classMap * * @return void */ @@ -171,25 +175,24 @@ public function addClassMap(array $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 list|string $paths The PSR-0 root directories - * @param bool $prepend Whether to prepend the directories + * @param string $prefix The prefix + * @param string[]|string $paths The PSR-0 root directories + * @param bool $prepend Whether to prepend the directories * * @return void */ public function add($prefix, $paths, $prepend = false) { - $paths = (array) $paths; if (!$prefix) { if ($prepend) { $this->fallbackDirsPsr0 = array_merge( - $paths, + (array) $paths, $this->fallbackDirsPsr0 ); } else { $this->fallbackDirsPsr0 = array_merge( $this->fallbackDirsPsr0, - $paths + (array) $paths ); } @@ -198,19 +201,19 @@ public function add($prefix, $paths, $prepend = false) $first = $prefix[0]; if (!isset($this->prefixesPsr0[$first][$prefix])) { - $this->prefixesPsr0[$first][$prefix] = $paths; + $this->prefixesPsr0[$first][$prefix] = (array) $paths; return; } if ($prepend) { $this->prefixesPsr0[$first][$prefix] = array_merge( - $paths, + (array) $paths, $this->prefixesPsr0[$first][$prefix] ); } else { $this->prefixesPsr0[$first][$prefix] = array_merge( $this->prefixesPsr0[$first][$prefix], - $paths + (array) $paths ); } } @@ -219,9 +222,9 @@ public function add($prefix, $paths, $prepend = false) * 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 list|string $paths The PSR-4 base directories - * @param bool $prepend Whether to prepend the directories + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param string[]|string $paths The PSR-4 base directories + * @param bool $prepend Whether to prepend the directories * * @throws \InvalidArgumentException * @@ -229,18 +232,17 @@ public function add($prefix, $paths, $prepend = false) */ public function addPsr4($prefix, $paths, $prepend = false) { - $paths = (array) $paths; if (!$prefix) { // Register directories for the root namespace. if ($prepend) { $this->fallbackDirsPsr4 = array_merge( - $paths, + (array) $paths, $this->fallbackDirsPsr4 ); } else { $this->fallbackDirsPsr4 = array_merge( $this->fallbackDirsPsr4, - $paths + (array) $paths ); } } elseif (!isset($this->prefixDirsPsr4[$prefix])) { @@ -250,18 +252,18 @@ public function addPsr4($prefix, $paths, $prepend = false) throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); } $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; - $this->prefixDirsPsr4[$prefix] = $paths; + $this->prefixDirsPsr4[$prefix] = (array) $paths; } elseif ($prepend) { // Prepend directories for an already registered namespace. $this->prefixDirsPsr4[$prefix] = array_merge( - $paths, + (array) $paths, $this->prefixDirsPsr4[$prefix] ); } else { // Append directories for an already registered namespace. $this->prefixDirsPsr4[$prefix] = array_merge( $this->prefixDirsPsr4[$prefix], - $paths + (array) $paths ); } } @@ -270,8 +272,8 @@ public function addPsr4($prefix, $paths, $prepend = false) * 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 list|string $paths The PSR-0 base directories + * @param string $prefix The prefix + * @param string[]|string $paths The PSR-0 base directories * * @return void */ @@ -288,8 +290,8 @@ public function set($prefix, $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 list|string $paths The PSR-4 base directories + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param string[]|string $paths The PSR-4 base directories * * @throws \InvalidArgumentException * @@ -423,8 +425,7 @@ public function unregister() public function loadClass($class) { if ($file = $this->findFile($class)) { - $includeFile = self::$includeFile; - $includeFile($file); + includeFile($file); return true; } @@ -475,9 +476,9 @@ public function findFile($class) } /** - * Returns the currently registered loaders keyed by their corresponding vendor directories. + * Returns the currently registered loaders indexed by their corresponding vendor directories. * - * @return array + * @return self[] */ public static function getRegisteredLoaders() { @@ -554,26 +555,18 @@ private function findFileWithExtension($class, $ext) return false; } +} - /** - * @return void - */ - private static function initializeIncludeClosure() - { - if (self::$includeFile !== null) { - return; - } - - /** - * Scope isolated include. - * - * Prevents access to $this/self from included files. - * - * @param string $file - * @return void - */ - self::$includeFile = \Closure::bind(static function($file) { - include $file; - }, null, null); - } +/** + * Scope isolated include. + * + * Prevents access to $this/self from included files. + * + * @param string $file + * @return void + * @private + */ +function includeFile($file) +{ + include $file; } diff --git a/src/vendor/composer/InstalledVersions.php b/src/vendor/composer/InstalledVersions.php new file mode 100644 index 0000000..d50e0c9 --- /dev/null +++ b/src/vendor/composer/InstalledVersions.php @@ -0,0 +1,350 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer; + +use Composer\Autoload\ClassLoader; +use Composer\Semver\VersionParser; + +/** + * This class is copied in every Composer installed project and available to all + * + * See also https://getcomposer.org/doc/07-runtime.md#installed-versions + * + * To require its presence, you can require `composer-runtime-api ^2.0` + */ +class InstalledVersions +{ + /** + * @var mixed[]|null + * @psalm-var array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array}|array{}|null + */ + private static $installed; + + /** + * @var bool|null + */ + private static $canGetVendors; + + /** + * @var array[] + * @psalm-var array}> + */ + private static $installedByVendor = array(); + + /** + * Returns a list of all package names which are present, either by being installed, replaced or provided + * + * @return string[] + * @psalm-return list + */ + 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))); + } + + /** + * Returns a list of all package names with a specific type e.g. 'library' + * + * @param string $type + * @return string[] + * @psalm-return list + */ + public static function getInstalledPackagesByType($type) + { + $packagesByType = array(); + + foreach (self::getInstalled() as $installed) { + foreach ($installed['versions'] as $name => $package) { + if (isset($package['type']) && $package['type'] === $type) { + $packagesByType[] = $name; + } + } + } + + return $packagesByType; + } + + /** + * Checks whether the given package is installed + * + * This also returns true if the package name is provided or replaced by another package + * + * @param string $packageName + * @param bool $includeDevRequirements + * @return bool + */ + public static function isInstalled($packageName, $includeDevRequirements = true) + { + foreach (self::getInstalled() as $installed) { + if (isset($installed['versions'][$packageName])) { + return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']); + } + } + + return false; + } + + /** + * Checks whether the given package satisfies a version constraint + * + * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call: + * + * Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3') + * + * @param VersionParser $parser Install composer/semver to have access to this class and functionality + * @param string $packageName + * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package + * @return bool + */ + public static function satisfies(VersionParser $parser, $packageName, $constraint) + { + $constraint = $parser->parseConstraints($constraint); + $provided = $parser->parseConstraints(self::getVersionRanges($packageName)); + + return $provided->matches($constraint); + } + + /** + * Returns a version constraint representing all the range(s) which are installed for a given package + * + * It is easier to use this via isInstalled() with the $constraint argument if you need to check + * whether a given version of a package is installed, and not just whether it exists + * + * @param string $packageName + * @return string Version constraint usable with composer/semver + */ + 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'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present + */ + 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'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present + */ + 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'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference + */ + 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'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path. + */ + public static function getInstallPath($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @return array + * @psalm-return array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string} + */ + public static function getRootPackage() + { + $installed = self::getInstalled(); + + return $installed[0]['root']; + } + + /** + * Returns the raw installed.php data for custom implementations + * + * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect. + * @return array[] + * @psalm-return array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array} + */ + public static function getRawData() + { + @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED); + + if (null === self::$installed) { + // only require the installed.php file if this file is loaded from its dumped location, + // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 + if (substr(__DIR__, -8, 1) !== 'C') { + self::$installed = include __DIR__ . '/installed.php'; + } else { + self::$installed = array(); + } + } + + return self::$installed; + } + + /** + * Returns the raw data of all installed.php which are currently loaded for custom implementations + * + * @return array[] + * @psalm-return list}> + */ + public static function getAllRawData() + { + return self::getInstalled(); + } + + /** + * Lets you reload the static array from another file + * + * This is only useful for complex integrations in which a project needs to use + * this class but then also needs to execute another project's autoloader in process, + * and wants to ensure both projects have access to their version of installed.php. + * + * A typical case would be PHPUnit, where it would need to make sure it reads all + * the data it needs from this class, then call reload() with + * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure + * the project in which it runs can then also use this class safely, without + * interference between PHPUnit's dependencies and the project's dependencies. + * + * @param array[] $data A vendor/composer/installed.php data set + * @return void + * + * @psalm-param array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array} $data + */ + public static function reload($data) + { + self::$installed = $data; + self::$installedByVendor = array(); + } + + /** + * @return array[] + * @psalm-return list}> + */ + 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'; + if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) { + self::$installed = $installed[count($installed) - 1]; + } + } + } + } + + if (null === self::$installed) { + // only require the installed.php file if this file is loaded from its dumped location, + // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 + if (substr(__DIR__, -8, 1) !== 'C') { + self::$installed = require __DIR__ . '/installed.php'; + } else { + self::$installed = array(); + } + } + $installed[] = self::$installed; + + return $installed; + } +} diff --git a/src/vendor/composer/LICENSE b/src/vendor/composer/LICENSE new file mode 100644 index 0000000..62ecfd8 --- /dev/null +++ b/src/vendor/composer/LICENSE @@ -0,0 +1,19 @@ +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. diff --git a/src/vendor/composer/autoload_classmap.php b/src/vendor/composer/autoload_classmap.php index 75ef56c..b26f1b1 100644 --- a/src/vendor/composer/autoload_classmap.php +++ b/src/vendor/composer/autoload_classmap.php @@ -2,1130 +2,9 @@ // autoload_classmap.php @generated by Composer -$vendorDir = dirname(__DIR__); +$vendorDir = dirname(dirname(__FILE__)); $baseDir = dirname($vendorDir); return array( - 'Attribute' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Attribute.php', - 'CURLStringFile' => $vendorDir . '/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php', 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php', - 'Composer\\Pcre\\MatchAllResult' => $vendorDir . '/composer/pcre/src/MatchAllResult.php', - 'Composer\\Pcre\\MatchAllStrictGroupsResult' => $vendorDir . '/composer/pcre/src/MatchAllStrictGroupsResult.php', - 'Composer\\Pcre\\MatchAllWithOffsetsResult' => $vendorDir . '/composer/pcre/src/MatchAllWithOffsetsResult.php', - 'Composer\\Pcre\\MatchResult' => $vendorDir . '/composer/pcre/src/MatchResult.php', - 'Composer\\Pcre\\MatchStrictGroupsResult' => $vendorDir . '/composer/pcre/src/MatchStrictGroupsResult.php', - 'Composer\\Pcre\\MatchWithOffsetsResult' => $vendorDir . '/composer/pcre/src/MatchWithOffsetsResult.php', - 'Composer\\Pcre\\PcreException' => $vendorDir . '/composer/pcre/src/PcreException.php', - 'Composer\\Pcre\\Preg' => $vendorDir . '/composer/pcre/src/Preg.php', - 'Composer\\Pcre\\Regex' => $vendorDir . '/composer/pcre/src/Regex.php', - 'Composer\\Pcre\\ReplaceResult' => $vendorDir . '/composer/pcre/src/ReplaceResult.php', - 'Composer\\Pcre\\UnexpectedNullMatchException' => $vendorDir . '/composer/pcre/src/UnexpectedNullMatchException.php', - 'Composer\\Semver\\Comparator' => $vendorDir . '/composer/semver/src/Comparator.php', - 'Composer\\Semver\\CompilingMatcher' => $vendorDir . '/composer/semver/src/CompilingMatcher.php', - 'Composer\\Semver\\Constraint\\Bound' => $vendorDir . '/composer/semver/src/Constraint/Bound.php', - 'Composer\\Semver\\Constraint\\Constraint' => $vendorDir . '/composer/semver/src/Constraint/Constraint.php', - 'Composer\\Semver\\Constraint\\ConstraintInterface' => $vendorDir . '/composer/semver/src/Constraint/ConstraintInterface.php', - 'Composer\\Semver\\Constraint\\MatchAllConstraint' => $vendorDir . '/composer/semver/src/Constraint/MatchAllConstraint.php', - 'Composer\\Semver\\Constraint\\MatchNoneConstraint' => $vendorDir . '/composer/semver/src/Constraint/MatchNoneConstraint.php', - 'Composer\\Semver\\Constraint\\MultiConstraint' => $vendorDir . '/composer/semver/src/Constraint/MultiConstraint.php', - 'Composer\\Semver\\Interval' => $vendorDir . '/composer/semver/src/Interval.php', - 'Composer\\Semver\\Intervals' => $vendorDir . '/composer/semver/src/Intervals.php', - 'Composer\\Semver\\Semver' => $vendorDir . '/composer/semver/src/Semver.php', - 'Composer\\Semver\\VersionParser' => $vendorDir . '/composer/semver/src/VersionParser.php', - 'Composer\\XdebugHandler\\PhpConfig' => $vendorDir . '/composer/xdebug-handler/src/PhpConfig.php', - 'Composer\\XdebugHandler\\Process' => $vendorDir . '/composer/xdebug-handler/src/Process.php', - 'Composer\\XdebugHandler\\Status' => $vendorDir . '/composer/xdebug-handler/src/Status.php', - 'Composer\\XdebugHandler\\XdebugHandler' => $vendorDir . '/composer/xdebug-handler/src/XdebugHandler.php', - 'Normalizer' => $vendorDir . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php', - 'PhpCsFixer\\AbstractDoctrineAnnotationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/AbstractDoctrineAnnotationFixer.php', - 'PhpCsFixer\\AbstractFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/AbstractFixer.php', - 'PhpCsFixer\\AbstractFopenFlagFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/AbstractFopenFlagFixer.php', - 'PhpCsFixer\\AbstractFunctionReferenceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/AbstractFunctionReferenceFixer.php', - 'PhpCsFixer\\AbstractNoUselessElseFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/AbstractNoUselessElseFixer.php', - 'PhpCsFixer\\AbstractPhpdocToTypeDeclarationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/AbstractPhpdocToTypeDeclarationFixer.php', - 'PhpCsFixer\\AbstractPhpdocTypesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/AbstractPhpdocTypesFixer.php', - 'PhpCsFixer\\AbstractProxyFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/AbstractProxyFixer.php', - 'PhpCsFixer\\Cache\\Cache' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/Cache.php', - 'PhpCsFixer\\Cache\\CacheInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/CacheInterface.php', - 'PhpCsFixer\\Cache\\CacheManagerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/CacheManagerInterface.php', - 'PhpCsFixer\\Cache\\Directory' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/Directory.php', - 'PhpCsFixer\\Cache\\DirectoryInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/DirectoryInterface.php', - 'PhpCsFixer\\Cache\\FileCacheManager' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/FileCacheManager.php', - 'PhpCsFixer\\Cache\\FileHandler' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/FileHandler.php', - 'PhpCsFixer\\Cache\\FileHandlerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/FileHandlerInterface.php', - 'PhpCsFixer\\Cache\\NullCacheManager' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/NullCacheManager.php', - 'PhpCsFixer\\Cache\\Signature' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/Signature.php', - 'PhpCsFixer\\Cache\\SignatureInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Cache/SignatureInterface.php', - 'PhpCsFixer\\Config' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Config.php', - 'PhpCsFixer\\ConfigInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/ConfigInterface.php', - 'PhpCsFixer\\ConfigurationException\\InvalidConfigurationException' => $vendorDir . '/friendsofphp/php-cs-fixer/src/ConfigurationException/InvalidConfigurationException.php', - 'PhpCsFixer\\ConfigurationException\\InvalidFixerConfigurationException' => $vendorDir . '/friendsofphp/php-cs-fixer/src/ConfigurationException/InvalidFixerConfigurationException.php', - 'PhpCsFixer\\ConfigurationException\\InvalidForEnvFixerConfigurationException' => $vendorDir . '/friendsofphp/php-cs-fixer/src/ConfigurationException/InvalidForEnvFixerConfigurationException.php', - 'PhpCsFixer\\ConfigurationException\\RequiredFixerConfigurationException' => $vendorDir . '/friendsofphp/php-cs-fixer/src/ConfigurationException/RequiredFixerConfigurationException.php', - 'PhpCsFixer\\Console\\Application' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Application.php', - 'PhpCsFixer\\Console\\Command\\CheckCommand' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Command/CheckCommand.php', - 'PhpCsFixer\\Console\\Command\\DescribeCommand' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Command/DescribeCommand.php', - 'PhpCsFixer\\Console\\Command\\DescribeNameNotFoundException' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Command/DescribeNameNotFoundException.php', - 'PhpCsFixer\\Console\\Command\\DocumentationCommand' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Command/DocumentationCommand.php', - 'PhpCsFixer\\Console\\Command\\FixCommand' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Command/FixCommand.php', - 'PhpCsFixer\\Console\\Command\\FixCommandExitStatusCalculator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Command/FixCommandExitStatusCalculator.php', - 'PhpCsFixer\\Console\\Command\\HelpCommand' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Command/HelpCommand.php', - 'PhpCsFixer\\Console\\Command\\ListFilesCommand' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Command/ListFilesCommand.php', - 'PhpCsFixer\\Console\\Command\\ListSetsCommand' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Command/ListSetsCommand.php', - 'PhpCsFixer\\Console\\Command\\SelfUpdateCommand' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Command/SelfUpdateCommand.php', - 'PhpCsFixer\\Console\\ConfigurationResolver' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/ConfigurationResolver.php', - 'PhpCsFixer\\Console\\Output\\ErrorOutput' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Output/ErrorOutput.php', - 'PhpCsFixer\\Console\\Output\\OutputContext' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Output/OutputContext.php', - 'PhpCsFixer\\Console\\Output\\Progress\\DotsOutput' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/DotsOutput.php', - 'PhpCsFixer\\Console\\Output\\Progress\\NullOutput' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/NullOutput.php', - 'PhpCsFixer\\Console\\Output\\Progress\\PercentageBarOutput' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/PercentageBarOutput.php', - 'PhpCsFixer\\Console\\Output\\Progress\\ProgressOutputFactory' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputFactory.php', - 'PhpCsFixer\\Console\\Output\\Progress\\ProgressOutputInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputInterface.php', - 'PhpCsFixer\\Console\\Output\\Progress\\ProgressOutputType' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputType.php', - 'PhpCsFixer\\Console\\Report\\FixReport\\CheckstyleReporter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/CheckstyleReporter.php', - 'PhpCsFixer\\Console\\Report\\FixReport\\GitlabReporter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/GitlabReporter.php', - 'PhpCsFixer\\Console\\Report\\FixReport\\JsonReporter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/JsonReporter.php', - 'PhpCsFixer\\Console\\Report\\FixReport\\JunitReporter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/JunitReporter.php', - 'PhpCsFixer\\Console\\Report\\FixReport\\ReportSummary' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/ReportSummary.php', - 'PhpCsFixer\\Console\\Report\\FixReport\\ReporterFactory' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/ReporterFactory.php', - 'PhpCsFixer\\Console\\Report\\FixReport\\ReporterInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/ReporterInterface.php', - 'PhpCsFixer\\Console\\Report\\FixReport\\TextReporter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/TextReporter.php', - 'PhpCsFixer\\Console\\Report\\FixReport\\XmlReporter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/XmlReporter.php', - 'PhpCsFixer\\Console\\Report\\ListSetsReport\\JsonReporter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/JsonReporter.php', - 'PhpCsFixer\\Console\\Report\\ListSetsReport\\ReportSummary' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/ReportSummary.php', - 'PhpCsFixer\\Console\\Report\\ListSetsReport\\ReporterFactory' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/ReporterFactory.php', - 'PhpCsFixer\\Console\\Report\\ListSetsReport\\ReporterInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/ReporterInterface.php', - 'PhpCsFixer\\Console\\Report\\ListSetsReport\\TextReporter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/TextReporter.php', - 'PhpCsFixer\\Console\\SelfUpdate\\GithubClient' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/GithubClient.php', - 'PhpCsFixer\\Console\\SelfUpdate\\GithubClientInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/GithubClientInterface.php', - 'PhpCsFixer\\Console\\SelfUpdate\\NewVersionChecker' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/NewVersionChecker.php', - 'PhpCsFixer\\Console\\SelfUpdate\\NewVersionCheckerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/NewVersionCheckerInterface.php', - 'PhpCsFixer\\Console\\WarningsDetector' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Console/WarningsDetector.php', - 'PhpCsFixer\\Differ\\DiffConsoleFormatter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Differ/DiffConsoleFormatter.php', - 'PhpCsFixer\\Differ\\DifferInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Differ/DifferInterface.php', - 'PhpCsFixer\\Differ\\FullDiffer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Differ/FullDiffer.php', - 'PhpCsFixer\\Differ\\NullDiffer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Differ/NullDiffer.php', - 'PhpCsFixer\\Differ\\UnifiedDiffer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Differ/UnifiedDiffer.php', - 'PhpCsFixer\\DocBlock\\Annotation' => $vendorDir . '/friendsofphp/php-cs-fixer/src/DocBlock/Annotation.php', - 'PhpCsFixer\\DocBlock\\DocBlock' => $vendorDir . '/friendsofphp/php-cs-fixer/src/DocBlock/DocBlock.php', - 'PhpCsFixer\\DocBlock\\Line' => $vendorDir . '/friendsofphp/php-cs-fixer/src/DocBlock/Line.php', - 'PhpCsFixer\\DocBlock\\ShortDescription' => $vendorDir . '/friendsofphp/php-cs-fixer/src/DocBlock/ShortDescription.php', - 'PhpCsFixer\\DocBlock\\Tag' => $vendorDir . '/friendsofphp/php-cs-fixer/src/DocBlock/Tag.php', - 'PhpCsFixer\\DocBlock\\TagComparator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/DocBlock/TagComparator.php', - 'PhpCsFixer\\DocBlock\\TypeExpression' => $vendorDir . '/friendsofphp/php-cs-fixer/src/DocBlock/TypeExpression.php', - 'PhpCsFixer\\Doctrine\\Annotation\\DocLexer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Doctrine/Annotation/DocLexer.php', - 'PhpCsFixer\\Doctrine\\Annotation\\Token' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Doctrine/Annotation/Token.php', - 'PhpCsFixer\\Doctrine\\Annotation\\Tokens' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Doctrine/Annotation/Tokens.php', - 'PhpCsFixer\\Documentation\\DocumentationLocator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Documentation/DocumentationLocator.php', - 'PhpCsFixer\\Documentation\\FixerDocumentGenerator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Documentation/FixerDocumentGenerator.php', - 'PhpCsFixer\\Documentation\\RstUtils' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Documentation/RstUtils.php', - 'PhpCsFixer\\Documentation\\RuleSetDocumentationGenerator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Documentation/RuleSetDocumentationGenerator.php', - 'PhpCsFixer\\Error\\Error' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Error/Error.php', - 'PhpCsFixer\\Error\\ErrorsManager' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Error/ErrorsManager.php', - 'PhpCsFixer\\ExecutorWithoutErrorHandler' => $vendorDir . '/friendsofphp/php-cs-fixer/src/ExecutorWithoutErrorHandler.php', - 'PhpCsFixer\\ExecutorWithoutErrorHandlerException' => $vendorDir . '/friendsofphp/php-cs-fixer/src/ExecutorWithoutErrorHandlerException.php', - 'PhpCsFixer\\FileReader' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FileReader.php', - 'PhpCsFixer\\FileRemoval' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FileRemoval.php', - 'PhpCsFixer\\Finder' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Finder.php', - 'PhpCsFixer\\FixerConfiguration\\AliasedFixerOption' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/AliasedFixerOption.php', - 'PhpCsFixer\\FixerConfiguration\\AliasedFixerOptionBuilder' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/AliasedFixerOptionBuilder.php', - 'PhpCsFixer\\FixerConfiguration\\AllowedValueSubset' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/AllowedValueSubset.php', - 'PhpCsFixer\\FixerConfiguration\\DeprecatedFixerOption' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/DeprecatedFixerOption.php', - 'PhpCsFixer\\FixerConfiguration\\DeprecatedFixerOptionInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/DeprecatedFixerOptionInterface.php', - 'PhpCsFixer\\FixerConfiguration\\FixerConfigurationResolver' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerConfigurationResolver.php', - 'PhpCsFixer\\FixerConfiguration\\FixerConfigurationResolverInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerConfigurationResolverInterface.php', - 'PhpCsFixer\\FixerConfiguration\\FixerOption' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerOption.php', - 'PhpCsFixer\\FixerConfiguration\\FixerOptionBuilder' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerOptionBuilder.php', - 'PhpCsFixer\\FixerConfiguration\\FixerOptionInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerOptionInterface.php', - 'PhpCsFixer\\FixerConfiguration\\FixerOptionSorter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerOptionSorter.php', - 'PhpCsFixer\\FixerConfiguration\\InvalidOptionsForEnvException' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/InvalidOptionsForEnvException.php', - 'PhpCsFixer\\FixerDefinition\\CodeSample' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/CodeSample.php', - 'PhpCsFixer\\FixerDefinition\\CodeSampleInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/CodeSampleInterface.php', - 'PhpCsFixer\\FixerDefinition\\FileSpecificCodeSample' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/FileSpecificCodeSample.php', - 'PhpCsFixer\\FixerDefinition\\FileSpecificCodeSampleInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/FileSpecificCodeSampleInterface.php', - 'PhpCsFixer\\FixerDefinition\\FixerDefinition' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/FixerDefinition.php', - 'PhpCsFixer\\FixerDefinition\\FixerDefinitionInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/FixerDefinitionInterface.php', - 'PhpCsFixer\\FixerDefinition\\VersionSpecificCodeSample' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecificCodeSample.php', - 'PhpCsFixer\\FixerDefinition\\VersionSpecificCodeSampleInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecificCodeSampleInterface.php', - 'PhpCsFixer\\FixerDefinition\\VersionSpecification' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecification.php', - 'PhpCsFixer\\FixerDefinition\\VersionSpecificationInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecificationInterface.php', - 'PhpCsFixer\\FixerFactory' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerFactory.php', - 'PhpCsFixer\\FixerFileProcessedEvent' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerFileProcessedEvent.php', - 'PhpCsFixer\\FixerNameValidator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerNameValidator.php', - 'PhpCsFixer\\Fixer\\AbstractIncrementOperatorFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/AbstractIncrementOperatorFixer.php', - 'PhpCsFixer\\Fixer\\AbstractPhpUnitFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/AbstractPhpUnitFixer.php', - 'PhpCsFixer\\Fixer\\AbstractShortOperatorFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/AbstractShortOperatorFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\ArrayPushFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/ArrayPushFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\BacktickToShellExecFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/BacktickToShellExecFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\EregToPregFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/EregToPregFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\MbStrFunctionsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/MbStrFunctionsFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\ModernizeStrposFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/ModernizeStrposFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\NoAliasFunctionsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/NoAliasFunctionsFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\NoAliasLanguageConstructCallFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/NoAliasLanguageConstructCallFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\NoMixedEchoPrintFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/NoMixedEchoPrintFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\PowToExponentiationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/PowToExponentiationFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\RandomApiMigrationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/RandomApiMigrationFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\SetTypeToCastFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/SetTypeToCastFixer.php', - 'PhpCsFixer\\Fixer\\ArrayNotation\\ArraySyntaxFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/ArraySyntaxFixer.php', - 'PhpCsFixer\\Fixer\\ArrayNotation\\NoMultilineWhitespaceAroundDoubleArrowFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoMultilineWhitespaceAroundDoubleArrowFixer.php', - 'PhpCsFixer\\Fixer\\ArrayNotation\\NoTrailingCommaInSinglelineArrayFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoTrailingCommaInSinglelineArrayFixer.php', - 'PhpCsFixer\\Fixer\\ArrayNotation\\NoWhitespaceBeforeCommaInArrayFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoWhitespaceBeforeCommaInArrayFixer.php', - 'PhpCsFixer\\Fixer\\ArrayNotation\\NormalizeIndexBraceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NormalizeIndexBraceFixer.php', - 'PhpCsFixer\\Fixer\\ArrayNotation\\ReturnToYieldFromFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/ReturnToYieldFromFixer.php', - 'PhpCsFixer\\Fixer\\ArrayNotation\\TrimArraySpacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/TrimArraySpacesFixer.php', - 'PhpCsFixer\\Fixer\\ArrayNotation\\WhitespaceAfterCommaInArrayFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/WhitespaceAfterCommaInArrayFixer.php', - 'PhpCsFixer\\Fixer\\ArrayNotation\\YieldFromArrayToYieldsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/YieldFromArrayToYieldsFixer.php', - 'PhpCsFixer\\Fixer\\AttributeNotation\\AttributeEmptyParenthesesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/AttributeNotation/AttributeEmptyParenthesesFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\BracesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/BracesFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\BracesPositionFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/BracesPositionFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\CurlyBracesPositionFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/CurlyBracesPositionFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\EncodingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/EncodingFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\NoMultipleStatementsPerLineFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/NoMultipleStatementsPerLineFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\NoTrailingCommaInSinglelineFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/NoTrailingCommaInSinglelineFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\NonPrintableCharacterFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/NonPrintableCharacterFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\NumericLiteralSeparatorFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/NumericLiteralSeparatorFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\OctalNotationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/OctalNotationFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\PsrAutoloadingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/PsrAutoloadingFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\SingleLineEmptyBodyFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/SingleLineEmptyBodyFixer.php', - 'PhpCsFixer\\Fixer\\Casing\\ClassReferenceNameCasingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/ClassReferenceNameCasingFixer.php', - 'PhpCsFixer\\Fixer\\Casing\\ConstantCaseFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/ConstantCaseFixer.php', - 'PhpCsFixer\\Fixer\\Casing\\IntegerLiteralCaseFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/IntegerLiteralCaseFixer.php', - 'PhpCsFixer\\Fixer\\Casing\\LowercaseKeywordsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/LowercaseKeywordsFixer.php', - 'PhpCsFixer\\Fixer\\Casing\\LowercaseStaticReferenceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/LowercaseStaticReferenceFixer.php', - 'PhpCsFixer\\Fixer\\Casing\\MagicConstantCasingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/MagicConstantCasingFixer.php', - 'PhpCsFixer\\Fixer\\Casing\\MagicMethodCasingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/MagicMethodCasingFixer.php', - 'PhpCsFixer\\Fixer\\Casing\\NativeFunctionCasingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/NativeFunctionCasingFixer.php', - 'PhpCsFixer\\Fixer\\Casing\\NativeFunctionTypeDeclarationCasingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/NativeFunctionTypeDeclarationCasingFixer.php', - 'PhpCsFixer\\Fixer\\Casing\\NativeTypeDeclarationCasingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/NativeTypeDeclarationCasingFixer.php', - 'PhpCsFixer\\Fixer\\CastNotation\\CastSpacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/CastSpacesFixer.php', - 'PhpCsFixer\\Fixer\\CastNotation\\LowercaseCastFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/LowercaseCastFixer.php', - 'PhpCsFixer\\Fixer\\CastNotation\\ModernizeTypesCastingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/ModernizeTypesCastingFixer.php', - 'PhpCsFixer\\Fixer\\CastNotation\\NoShortBoolCastFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/NoShortBoolCastFixer.php', - 'PhpCsFixer\\Fixer\\CastNotation\\NoUnsetCastFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/NoUnsetCastFixer.php', - 'PhpCsFixer\\Fixer\\CastNotation\\ShortScalarCastFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/ShortScalarCastFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\ClassAttributesSeparationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ClassAttributesSeparationFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\ClassDefinitionFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ClassDefinitionFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\FinalClassFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/FinalClassFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\FinalInternalClassFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/FinalInternalClassFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\FinalPublicMethodForAbstractClassFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/FinalPublicMethodForAbstractClassFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\NoBlankLinesAfterClassOpeningFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoBlankLinesAfterClassOpeningFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\NoNullPropertyInitializationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoNullPropertyInitializationFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\NoPhp4ConstructorFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoPhp4ConstructorFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\NoUnneededFinalMethodFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoUnneededFinalMethodFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\OrderedClassElementsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedClassElementsFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\OrderedInterfacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedInterfacesFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\OrderedTraitsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedTraitsFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\OrderedTypesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedTypesFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\PhpdocReadonlyClassCommentToKeywordFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/PhpdocReadonlyClassCommentToKeywordFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\ProtectedToPrivateFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ProtectedToPrivateFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\SelfAccessorFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SelfAccessorFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\SelfStaticAccessorFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SelfStaticAccessorFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\SingleClassElementPerStatementFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SingleClassElementPerStatementFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\SingleTraitInsertPerStatementFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SingleTraitInsertPerStatementFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\VisibilityRequiredFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/VisibilityRequiredFixer.php', - 'PhpCsFixer\\Fixer\\ClassUsage\\DateTimeImmutableFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ClassUsage/DateTimeImmutableFixer.php', - 'PhpCsFixer\\Fixer\\Comment\\CommentToPhpdocFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/CommentToPhpdocFixer.php', - 'PhpCsFixer\\Fixer\\Comment\\HeaderCommentFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/HeaderCommentFixer.php', - 'PhpCsFixer\\Fixer\\Comment\\MultilineCommentOpeningClosingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/MultilineCommentOpeningClosingFixer.php', - 'PhpCsFixer\\Fixer\\Comment\\NoEmptyCommentFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/NoEmptyCommentFixer.php', - 'PhpCsFixer\\Fixer\\Comment\\NoTrailingWhitespaceInCommentFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/NoTrailingWhitespaceInCommentFixer.php', - 'PhpCsFixer\\Fixer\\Comment\\SingleLineCommentSpacingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/SingleLineCommentSpacingFixer.php', - 'PhpCsFixer\\Fixer\\Comment\\SingleLineCommentStyleFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/SingleLineCommentStyleFixer.php', - 'PhpCsFixer\\Fixer\\ConfigurableFixerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ConfigurableFixerInterface.php', - 'PhpCsFixer\\Fixer\\ConstantNotation\\NativeConstantInvocationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ConstantNotation/NativeConstantInvocationFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\ControlStructureBracesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/ControlStructureBracesFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\ControlStructureContinuationPositionFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/ControlStructureContinuationPositionFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\ElseifFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/ElseifFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\EmptyLoopBodyFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/EmptyLoopBodyFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\EmptyLoopConditionFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/EmptyLoopConditionFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\IncludeFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/IncludeFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\NoAlternativeSyntaxFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoAlternativeSyntaxFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\NoBreakCommentFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoBreakCommentFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\NoSuperfluousElseifFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoSuperfluousElseifFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\NoTrailingCommaInListCallFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoTrailingCommaInListCallFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\NoUnneededBracesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoUnneededBracesFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\NoUnneededControlParenthesesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoUnneededControlParenthesesFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\NoUnneededCurlyBracesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoUnneededCurlyBracesFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\NoUselessElseFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoUselessElseFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\SimplifiedIfReturnFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/SimplifiedIfReturnFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\SwitchCaseSemicolonToColonFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/SwitchCaseSemicolonToColonFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\SwitchCaseSpaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/SwitchCaseSpaceFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\SwitchContinueToBreakFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/SwitchContinueToBreakFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\TrailingCommaInMultilineFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/TrailingCommaInMultilineFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\YodaStyleFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/YodaStyleFixer.php', - 'PhpCsFixer\\Fixer\\DeprecatedFixerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/DeprecatedFixerInterface.php', - 'PhpCsFixer\\Fixer\\DoctrineAnnotation\\DoctrineAnnotationArrayAssignmentFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationArrayAssignmentFixer.php', - 'PhpCsFixer\\Fixer\\DoctrineAnnotation\\DoctrineAnnotationBracesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationBracesFixer.php', - 'PhpCsFixer\\Fixer\\DoctrineAnnotation\\DoctrineAnnotationIndentationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationIndentationFixer.php', - 'PhpCsFixer\\Fixer\\DoctrineAnnotation\\DoctrineAnnotationSpacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationSpacesFixer.php', - 'PhpCsFixer\\Fixer\\ExperimentalFixerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ExperimentalFixerInterface.php', - 'PhpCsFixer\\Fixer\\FixerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FixerInterface.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\CombineNestedDirnameFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/CombineNestedDirnameFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\DateTimeCreateFromFormatCallFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/DateTimeCreateFromFormatCallFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\FopenFlagOrderFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FopenFlagOrderFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\FopenFlagsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FopenFlagsFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\FunctionDeclarationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FunctionDeclarationFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\FunctionTypehintSpaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FunctionTypehintSpaceFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\ImplodeCallFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/ImplodeCallFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\LambdaNotUsedImportFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/LambdaNotUsedImportFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\MethodArgumentSpaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/MethodArgumentSpaceFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\NativeFunctionInvocationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NativeFunctionInvocationFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\NoSpacesAfterFunctionNameFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoSpacesAfterFunctionNameFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\NoTrailingCommaInSinglelineFunctionCallFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoTrailingCommaInSinglelineFunctionCallFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\NoUnreachableDefaultArgumentValueFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoUnreachableDefaultArgumentValueFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\NoUselessSprintfFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoUselessSprintfFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\NullableTypeDeclarationForDefaultNullValueFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NullableTypeDeclarationForDefaultNullValueFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\PhpdocToParamTypeFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/PhpdocToParamTypeFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\PhpdocToPropertyTypeFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/PhpdocToPropertyTypeFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\PhpdocToReturnTypeFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/PhpdocToReturnTypeFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\RegularCallableCallFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/RegularCallableCallFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\ReturnTypeDeclarationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/ReturnTypeDeclarationFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\SingleLineThrowFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/SingleLineThrowFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\StaticLambdaFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/StaticLambdaFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\UseArrowFunctionsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/UseArrowFunctionsFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\VoidReturnFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/VoidReturnFixer.php', - 'PhpCsFixer\\Fixer\\Import\\FullyQualifiedStrictTypesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Import/FullyQualifiedStrictTypesFixer.php', - 'PhpCsFixer\\Fixer\\Import\\GlobalNamespaceImportFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Import/GlobalNamespaceImportFixer.php', - 'PhpCsFixer\\Fixer\\Import\\GroupImportFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Import/GroupImportFixer.php', - 'PhpCsFixer\\Fixer\\Import\\NoLeadingImportSlashFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Import/NoLeadingImportSlashFixer.php', - 'PhpCsFixer\\Fixer\\Import\\NoUnneededImportAliasFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Import/NoUnneededImportAliasFixer.php', - 'PhpCsFixer\\Fixer\\Import\\NoUnusedImportsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Import/NoUnusedImportsFixer.php', - 'PhpCsFixer\\Fixer\\Import\\OrderedImportsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Import/OrderedImportsFixer.php', - 'PhpCsFixer\\Fixer\\Import\\SingleImportPerStatementFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Import/SingleImportPerStatementFixer.php', - 'PhpCsFixer\\Fixer\\Import\\SingleLineAfterImportsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Import/SingleLineAfterImportsFixer.php', - 'PhpCsFixer\\Fixer\\Indentation' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Indentation.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\ClassKeywordFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/ClassKeywordFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\ClassKeywordRemoveFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/ClassKeywordRemoveFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\CombineConsecutiveIssetsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/CombineConsecutiveIssetsFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\CombineConsecutiveUnsetsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/CombineConsecutiveUnsetsFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\DeclareEqualNormalizeFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/DeclareEqualNormalizeFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\DeclareParenthesesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/DeclareParenthesesFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\DirConstantFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/DirConstantFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\ErrorSuppressionFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/ErrorSuppressionFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\ExplicitIndirectVariableFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/ExplicitIndirectVariableFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\FunctionToConstantFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/FunctionToConstantFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\GetClassToClassKeywordFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/GetClassToClassKeywordFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\IsNullFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/IsNullFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\NoUnsetOnPropertyFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/NoUnsetOnPropertyFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\NullableTypeDeclarationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/NullableTypeDeclarationFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\SingleSpaceAfterConstructFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/SingleSpaceAfterConstructFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\SingleSpaceAroundConstructFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/SingleSpaceAroundConstructFixer.php', - 'PhpCsFixer\\Fixer\\ListNotation\\ListSyntaxFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ListNotation/ListSyntaxFixer.php', - 'PhpCsFixer\\Fixer\\NamespaceNotation\\BlankLineAfterNamespaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/BlankLineAfterNamespaceFixer.php', - 'PhpCsFixer\\Fixer\\NamespaceNotation\\BlankLinesBeforeNamespaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/BlankLinesBeforeNamespaceFixer.php', - 'PhpCsFixer\\Fixer\\NamespaceNotation\\CleanNamespaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/CleanNamespaceFixer.php', - 'PhpCsFixer\\Fixer\\NamespaceNotation\\NoBlankLinesBeforeNamespaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/NoBlankLinesBeforeNamespaceFixer.php', - 'PhpCsFixer\\Fixer\\NamespaceNotation\\NoLeadingNamespaceWhitespaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/NoLeadingNamespaceWhitespaceFixer.php', - 'PhpCsFixer\\Fixer\\NamespaceNotation\\SingleBlankLineBeforeNamespaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/SingleBlankLineBeforeNamespaceFixer.php', - 'PhpCsFixer\\Fixer\\Naming\\NoHomoglyphNamesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Naming/NoHomoglyphNamesFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\AssignNullCoalescingToCoalesceEqualFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/AssignNullCoalescingToCoalesceEqualFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\BinaryOperatorSpacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/BinaryOperatorSpacesFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\ConcatSpaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/ConcatSpaceFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\IncrementStyleFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/IncrementStyleFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\LogicalOperatorsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/LogicalOperatorsFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\LongToShorthandOperatorFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/LongToShorthandOperatorFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\NewWithBracesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NewWithBracesFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\NewWithParenthesesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NewWithParenthesesFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\NoSpaceAroundDoubleColonFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NoSpaceAroundDoubleColonFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\NoUselessConcatOperatorFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NoUselessConcatOperatorFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\NoUselessNullsafeOperatorFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NoUselessNullsafeOperatorFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\NotOperatorWithSpaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NotOperatorWithSpaceFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\NotOperatorWithSuccessorSpaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NotOperatorWithSuccessorSpaceFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\ObjectOperatorWithoutWhitespaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/ObjectOperatorWithoutWhitespaceFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\OperatorLinebreakFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/OperatorLinebreakFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\StandardizeIncrementFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/StandardizeIncrementFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\StandardizeNotEqualsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/StandardizeNotEqualsFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\TernaryOperatorSpacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/TernaryOperatorSpacesFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\TernaryToElvisOperatorFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/TernaryToElvisOperatorFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\TernaryToNullCoalescingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/TernaryToNullCoalescingFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\UnaryOperatorSpacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/UnaryOperatorSpacesFixer.php', - 'PhpCsFixer\\Fixer\\PhpTag\\BlankLineAfterOpeningTagFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/BlankLineAfterOpeningTagFixer.php', - 'PhpCsFixer\\Fixer\\PhpTag\\EchoTagSyntaxFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/EchoTagSyntaxFixer.php', - 'PhpCsFixer\\Fixer\\PhpTag\\FullOpeningTagFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/FullOpeningTagFixer.php', - 'PhpCsFixer\\Fixer\\PhpTag\\LinebreakAfterOpeningTagFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/LinebreakAfterOpeningTagFixer.php', - 'PhpCsFixer\\Fixer\\PhpTag\\NoClosingTagFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/NoClosingTagFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitConstructFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitConstructFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDataProviderNameFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderNameFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDataProviderReturnTypeFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderReturnTypeFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDataProviderStaticFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderStaticFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDedicateAssertFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDedicateAssertFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDedicateAssertInternalTypeFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDedicateAssertInternalTypeFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitExpectationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitExpectationFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitFqcnAnnotationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitFqcnAnnotationFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitInternalClassFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitInternalClassFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitMethodCasingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitMethodCasingFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitMockFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitMockFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitMockShortWillReturnFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitMockShortWillReturnFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitNamespacedFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitNamespacedFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitNoExpectationAnnotationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitNoExpectationAnnotationFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitSetUpTearDownVisibilityFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitSetUpTearDownVisibilityFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitSizeClassFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitSizeClassFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitStrictFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitStrictFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitTargetVersion' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTargetVersion.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitTestAnnotationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTestAnnotationFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitTestCaseStaticMethodCallsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTestCaseStaticMethodCallsFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitTestClassRequiresCoversFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTestClassRequiresCoversFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\AlignMultilineCommentFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/AlignMultilineCommentFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\GeneralPhpdocAnnotationRemoveFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/GeneralPhpdocAnnotationRemoveFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\GeneralPhpdocTagRenameFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/GeneralPhpdocTagRenameFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\NoBlankLinesAfterPhpdocFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/NoBlankLinesAfterPhpdocFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\NoEmptyPhpdocFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/NoEmptyPhpdocFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\NoSuperfluousPhpdocTagsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/NoSuperfluousPhpdocTagsFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocAddMissingParamAnnotationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocAddMissingParamAnnotationFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocAlignFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocAlignFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocAnnotationWithoutDotFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocAnnotationWithoutDotFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocArrayTypeFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocArrayTypeFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocIndentFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocIndentFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocInlineTagNormalizerFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocInlineTagNormalizerFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocLineSpanFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocLineSpanFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocListTypeFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocListTypeFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoAccessFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoAccessFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoAliasTagFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoAliasTagFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoEmptyReturnFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoEmptyReturnFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoPackageFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoPackageFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoUselessInheritdocFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoUselessInheritdocFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocOrderByValueFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocOrderByValueFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocOrderFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocOrderFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocParamOrderFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocParamOrderFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocReturnSelfReferenceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocReturnSelfReferenceFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocScalarFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocScalarFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocSeparationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocSeparationFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocSingleLineVarSpacingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocSingleLineVarSpacingFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocSummaryFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocSummaryFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTagCasingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTagCasingFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTagTypeFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTagTypeFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocToCommentFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocToCommentFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTrimConsecutiveBlankLineSeparationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTrimConsecutiveBlankLineSeparationFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTrimFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTrimFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTypesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTypesFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTypesOrderFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTypesOrderFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocVarAnnotationCorrectOrderFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocVarAnnotationCorrectOrderFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocVarWithoutNameFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocVarWithoutNameFixer.php', - 'PhpCsFixer\\Fixer\\ReturnNotation\\NoUselessReturnFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ReturnNotation/NoUselessReturnFixer.php', - 'PhpCsFixer\\Fixer\\ReturnNotation\\ReturnAssignmentFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ReturnNotation/ReturnAssignmentFixer.php', - 'PhpCsFixer\\Fixer\\ReturnNotation\\SimplifiedNullReturnFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ReturnNotation/SimplifiedNullReturnFixer.php', - 'PhpCsFixer\\Fixer\\Semicolon\\MultilineWhitespaceBeforeSemicolonsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/MultilineWhitespaceBeforeSemicolonsFixer.php', - 'PhpCsFixer\\Fixer\\Semicolon\\NoEmptyStatementFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/NoEmptyStatementFixer.php', - 'PhpCsFixer\\Fixer\\Semicolon\\NoSinglelineWhitespaceBeforeSemicolonsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/NoSinglelineWhitespaceBeforeSemicolonsFixer.php', - 'PhpCsFixer\\Fixer\\Semicolon\\SemicolonAfterInstructionFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/SemicolonAfterInstructionFixer.php', - 'PhpCsFixer\\Fixer\\Semicolon\\SpaceAfterSemicolonFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/SpaceAfterSemicolonFixer.php', - 'PhpCsFixer\\Fixer\\Strict\\DeclareStrictTypesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Strict/DeclareStrictTypesFixer.php', - 'PhpCsFixer\\Fixer\\Strict\\StrictComparisonFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Strict/StrictComparisonFixer.php', - 'PhpCsFixer\\Fixer\\Strict\\StrictParamFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Strict/StrictParamFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\EscapeImplicitBackslashesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/EscapeImplicitBackslashesFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\ExplicitStringVariableFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/ExplicitStringVariableFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\HeredocClosingMarkerFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/HeredocClosingMarkerFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\HeredocToNowdocFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/HeredocToNowdocFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\MultilineStringToHeredocFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/MultilineStringToHeredocFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\NoBinaryStringFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/NoBinaryStringFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\NoTrailingWhitespaceInStringFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/NoTrailingWhitespaceInStringFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\SimpleToComplexStringVariableFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/SimpleToComplexStringVariableFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\SingleQuoteFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/SingleQuoteFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\StringImplicitBackslashesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/StringImplicitBackslashesFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\StringLengthToEmptyFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/StringLengthToEmptyFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\StringLineEndingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/StringLineEndingFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\ArrayIndentationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/ArrayIndentationFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\BlankLineBeforeStatementFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/BlankLineBeforeStatementFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\BlankLineBetweenImportGroupsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/BlankLineBetweenImportGroupsFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\CompactNullableTypeDeclarationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/CompactNullableTypeDeclarationFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\CompactNullableTypehintFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/CompactNullableTypehintFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\HeredocIndentationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/HeredocIndentationFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\IndentationTypeFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/IndentationTypeFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\LineEndingFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/LineEndingFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\MethodChainingIndentationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/MethodChainingIndentationFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\NoExtraBlankLinesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoExtraBlankLinesFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\NoSpacesAroundOffsetFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoSpacesAroundOffsetFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\NoSpacesInsideParenthesisFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoSpacesInsideParenthesisFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\NoTrailingWhitespaceFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoTrailingWhitespaceFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\NoWhitespaceInBlankLineFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoWhitespaceInBlankLineFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\SingleBlankLineAtEofFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/SingleBlankLineAtEofFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\SpacesInsideParenthesesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/SpacesInsideParenthesesFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\StatementIndentationFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/StatementIndentationFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\TypeDeclarationSpacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/TypeDeclarationSpacesFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\TypesSpacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/TypesSpacesFixer.php', - 'PhpCsFixer\\Fixer\\WhitespacesAwareFixerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/WhitespacesAwareFixerInterface.php', - 'PhpCsFixer\\Indicator\\PhpUnitTestCaseIndicator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Indicator/PhpUnitTestCaseIndicator.php', - 'PhpCsFixer\\Linter\\CachingLinter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/CachingLinter.php', - 'PhpCsFixer\\Linter\\Linter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/Linter.php', - 'PhpCsFixer\\Linter\\LinterInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/LinterInterface.php', - 'PhpCsFixer\\Linter\\LintingException' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/LintingException.php', - 'PhpCsFixer\\Linter\\LintingResultInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/LintingResultInterface.php', - 'PhpCsFixer\\Linter\\ProcessLinter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/ProcessLinter.php', - 'PhpCsFixer\\Linter\\ProcessLinterProcessBuilder' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/ProcessLinterProcessBuilder.php', - 'PhpCsFixer\\Linter\\ProcessLintingResult' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/ProcessLintingResult.php', - 'PhpCsFixer\\Linter\\TokenizerLinter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/TokenizerLinter.php', - 'PhpCsFixer\\Linter\\TokenizerLintingResult' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/TokenizerLintingResult.php', - 'PhpCsFixer\\Linter\\UnavailableLinterException' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/UnavailableLinterException.php', - 'PhpCsFixer\\PharChecker' => $vendorDir . '/friendsofphp/php-cs-fixer/src/PharChecker.php', - 'PhpCsFixer\\PharCheckerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/PharCheckerInterface.php', - 'PhpCsFixer\\Preg' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Preg.php', - 'PhpCsFixer\\PregException' => $vendorDir . '/friendsofphp/php-cs-fixer/src/PregException.php', - 'PhpCsFixer\\RuleSet\\AbstractMigrationSetDescription' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/AbstractMigrationSetDescription.php', - 'PhpCsFixer\\RuleSet\\AbstractRuleSetDescription' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/AbstractRuleSetDescription.php', - 'PhpCsFixer\\RuleSet\\DeprecatedRuleSetDescriptionInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/DeprecatedRuleSetDescriptionInterface.php', - 'PhpCsFixer\\RuleSet\\RuleSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/RuleSet.php', - 'PhpCsFixer\\RuleSet\\RuleSetDescriptionInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/RuleSetDescriptionInterface.php', - 'PhpCsFixer\\RuleSet\\RuleSetInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/RuleSetInterface.php', - 'PhpCsFixer\\RuleSet\\RuleSets' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/RuleSets.php', - 'PhpCsFixer\\RuleSet\\Sets\\DoctrineAnnotationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/DoctrineAnnotationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERCS1x0RiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS1x0RiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERCS1x0Set' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS1x0Set.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERCS2x0RiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS2x0RiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERCS2x0Set' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS2x0Set.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERCSRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCSRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERCSSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCSSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP54MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP54MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP56MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP56MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP70MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP70MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP70MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP70MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP71MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP71MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP71MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP71MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP73MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP73MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP74MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP74MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP74MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP74MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP80MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP80MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP80MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP80MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP81MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP81MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP82MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP82MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP83MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP83MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit100MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit100MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit30MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit30MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit32MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit32MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit35MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit35MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit43MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit43MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit48MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit48MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit50MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit50MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit52MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit52MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit54MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit54MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit55MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit55MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit56MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit56MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit57MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit57MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit60MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit60MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit75MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit75MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit84MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit84MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PSR12RiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PSR12RiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PSR12Set' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PSR12Set.php', - 'PhpCsFixer\\RuleSet\\Sets\\PSR1Set' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PSR1Set.php', - 'PhpCsFixer\\RuleSet\\Sets\\PSR2Set' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PSR2Set.php', - 'PhpCsFixer\\RuleSet\\Sets\\PhpCsFixerRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PhpCsFixerRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PhpCsFixerSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PhpCsFixerSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\SymfonyRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/SymfonyRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\SymfonySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/SymfonySet.php', - 'PhpCsFixer\\Runner\\FileCachingLintingIterator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Runner/FileCachingLintingIterator.php', - 'PhpCsFixer\\Runner\\FileFilterIterator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Runner/FileFilterIterator.php', - 'PhpCsFixer\\Runner\\FileLintingIterator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Runner/FileLintingIterator.php', - 'PhpCsFixer\\Runner\\Runner' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Runner/Runner.php', - 'PhpCsFixer\\StdinFileInfo' => $vendorDir . '/friendsofphp/php-cs-fixer/src/StdinFileInfo.php', - 'PhpCsFixer\\Tokenizer\\AbstractTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/AbstractTransformer.php', - 'PhpCsFixer\\Tokenizer\\AbstractTypeTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/AbstractTypeTransformer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\AlternativeSyntaxAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/AlternativeSyntaxAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\AbstractControlCaseStructuresAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/AbstractControlCaseStructuresAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\ArgumentAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/ArgumentAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\CaseAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/CaseAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\DataProviderAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/DataProviderAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\DefaultAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/DefaultAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\EnumAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/EnumAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\MatchAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/MatchAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\NamespaceAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/NamespaceAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\NamespaceUseAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/NamespaceUseAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\StartEndTokenAwareAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/StartEndTokenAwareAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\SwitchAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/SwitchAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\TypeAnalysis' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/TypeAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\ArgumentsAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ArgumentsAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\AttributeAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/AttributeAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\BlocksAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/BlocksAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\ClassyAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ClassyAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\CommentsAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/CommentsAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\ControlCaseStructuresAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ControlCaseStructuresAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\DataProviderAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/DataProviderAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\FunctionsAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/FunctionsAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\GotoLabelAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/GotoLabelAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\NamespaceUsesAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/NamespaceUsesAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\NamespacesAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/NamespacesAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\RangeAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/RangeAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\ReferenceAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ReferenceAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\SwitchAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/SwitchAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\WhitespacesAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/WhitespacesAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\CT' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/CT.php', - 'PhpCsFixer\\Tokenizer\\CodeHasher' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/CodeHasher.php', - 'PhpCsFixer\\Tokenizer\\Processor\\ImportProcessor' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Processor/ImportProcessor.php', - 'PhpCsFixer\\Tokenizer\\Token' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Token.php', - 'PhpCsFixer\\Tokenizer\\Tokens' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Tokens.php', - 'PhpCsFixer\\Tokenizer\\TokensAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/TokensAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\TransformerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/TransformerInterface.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\ArrayTypehintTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ArrayTypehintTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\AttributeTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/AttributeTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\BraceClassInstantiationTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/BraceClassInstantiationTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\BraceTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/BraceTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\ClassConstantTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ClassConstantTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\ConstructorPromotionTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ConstructorPromotionTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\DisjunctiveNormalFormTypeParenthesisTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/DisjunctiveNormalFormTypeParenthesisTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\FirstClassCallableTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/FirstClassCallableTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\ImportTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ImportTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\NameQualifiedTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/NameQualifiedTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\NamedArgumentTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/NamedArgumentTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\NamespaceOperatorTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/NamespaceOperatorTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\NullableTypeTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/NullableTypeTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\ReturnRefTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ReturnRefTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\SquareBraceTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/SquareBraceTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\TypeAlternationTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/TypeAlternationTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\TypeColonTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/TypeColonTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\TypeIntersectionTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/TypeIntersectionTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\UseTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/UseTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\WhitespacyCommentTransformer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/WhitespacyCommentTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformers' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformers.php', - 'PhpCsFixer\\ToolInfo' => $vendorDir . '/friendsofphp/php-cs-fixer/src/ToolInfo.php', - 'PhpCsFixer\\ToolInfoInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/ToolInfoInterface.php', - 'PhpCsFixer\\Utils' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Utils.php', - 'PhpCsFixer\\WhitespacesFixerConfig' => $vendorDir . '/friendsofphp/php-cs-fixer/src/WhitespacesFixerConfig.php', - 'PhpCsFixer\\WordMatcher' => $vendorDir . '/friendsofphp/php-cs-fixer/src/WordMatcher.php', - 'PhpParser\\Builder' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder.php', - 'PhpParser\\BuilderFactory' => $vendorDir . '/nikic/php-parser/lib/PhpParser/BuilderFactory.php', - 'PhpParser\\BuilderHelpers' => $vendorDir . '/nikic/php-parser/lib/PhpParser/BuilderHelpers.php', - 'PhpParser\\Builder\\ClassConst' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php', - 'PhpParser\\Builder\\Class_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Class_.php', - 'PhpParser\\Builder\\Declaration' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Declaration.php', - 'PhpParser\\Builder\\EnumCase' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php', - 'PhpParser\\Builder\\Enum_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Enum_.php', - 'PhpParser\\Builder\\FunctionLike' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php', - 'PhpParser\\Builder\\Function_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Function_.php', - 'PhpParser\\Builder\\Interface_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Interface_.php', - 'PhpParser\\Builder\\Method' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Method.php', - 'PhpParser\\Builder\\Namespace_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php', - 'PhpParser\\Builder\\Param' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Param.php', - 'PhpParser\\Builder\\Property' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Property.php', - 'PhpParser\\Builder\\TraitUse' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php', - 'PhpParser\\Builder\\TraitUseAdaptation' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php', - 'PhpParser\\Builder\\Trait_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Trait_.php', - 'PhpParser\\Builder\\Use_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Builder/Use_.php', - 'PhpParser\\Comment' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Comment.php', - 'PhpParser\\Comment\\Doc' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Comment/Doc.php', - 'PhpParser\\ConstExprEvaluationException' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ConstExprEvaluationException.php', - 'PhpParser\\ConstExprEvaluator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.php', - 'PhpParser\\Error' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Error.php', - 'PhpParser\\ErrorHandler' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ErrorHandler.php', - 'PhpParser\\ErrorHandler\\Collecting' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ErrorHandler/Collecting.php', - 'PhpParser\\ErrorHandler\\Throwing' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.php', - 'PhpParser\\Internal\\DiffElem' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Internal/DiffElem.php', - 'PhpParser\\Internal\\Differ' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Internal/Differ.php', - 'PhpParser\\Internal\\PrintableNewAnonClassNode' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php', - 'PhpParser\\Internal\\TokenStream' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php', - 'PhpParser\\JsonDecoder' => $vendorDir . '/nikic/php-parser/lib/PhpParser/JsonDecoder.php', - 'PhpParser\\Lexer' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer.php', - 'PhpParser\\Lexer\\Emulative' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php', - 'PhpParser\\Lexer\\TokenEmulator\\AttributeEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\CoaleseEqualTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/CoaleseEqualTokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\EnumTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/EnumTokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\ExplicitOctalEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ExplicitOctalEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\FlexibleDocStringEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FlexibleDocStringEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\FnTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FnTokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\KeywordEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\MatchTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\NullsafeTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\NumericLiteralSeparatorEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NumericLiteralSeparatorEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\ReadonlyFunctionTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyFunctionTokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\ReadonlyTokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\ReverseEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\TokenEmulator' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php', - 'PhpParser\\NameContext' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NameContext.php', - 'PhpParser\\Node' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node.php', - 'PhpParser\\NodeAbstract' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeAbstract.php', - 'PhpParser\\NodeDumper' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeDumper.php', - 'PhpParser\\NodeFinder' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeFinder.php', - 'PhpParser\\NodeTraverser' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeTraverser.php', - 'PhpParser\\NodeTraverserInterface' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.php', - 'PhpParser\\NodeVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor.php', - 'PhpParser\\NodeVisitorAbstract' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.php', - 'PhpParser\\NodeVisitor\\CloningVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.php', - 'PhpParser\\NodeVisitor\\FindingVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php', - 'PhpParser\\NodeVisitor\\FirstFindingVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php', - 'PhpParser\\NodeVisitor\\NameResolver' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php', - 'PhpParser\\NodeVisitor\\NodeConnectingVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php', - 'PhpParser\\NodeVisitor\\ParentConnectingVisitor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php', - 'PhpParser\\Node\\Arg' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Arg.php', - 'PhpParser\\Node\\Attribute' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Attribute.php', - 'PhpParser\\Node\\AttributeGroup' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php', - 'PhpParser\\Node\\ComplexType' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/ComplexType.php', - 'PhpParser\\Node\\Const_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Const_.php', - 'PhpParser\\Node\\Expr' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr.php', - 'PhpParser\\Node\\Expr\\ArrayDimFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php', - 'PhpParser\\Node\\Expr\\ArrayItem' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php', - 'PhpParser\\Node\\Expr\\Array_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php', - 'PhpParser\\Node\\Expr\\ArrowFunction' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php', - 'PhpParser\\Node\\Expr\\Assign' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php', - 'PhpParser\\Node\\Expr\\AssignOp' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php', - 'PhpParser\\Node\\Expr\\AssignOp\\BitwiseAnd' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php', - 'PhpParser\\Node\\Expr\\AssignOp\\BitwiseOr' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php', - 'PhpParser\\Node\\Expr\\AssignOp\\BitwiseXor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Coalesce' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Concat' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Div' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Minus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Mod' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Mul' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Plus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Pow' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php', - 'PhpParser\\Node\\Expr\\AssignOp\\ShiftLeft' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php', - 'PhpParser\\Node\\Expr\\AssignOp\\ShiftRight' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php', - 'PhpParser\\Node\\Expr\\AssignRef' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php', - 'PhpParser\\Node\\Expr\\BinaryOp' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseAnd' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseOr' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseXor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\BooleanAnd' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\BooleanOr' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Coalesce' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Concat' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Div' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Equal' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Greater' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\GreaterOrEqual' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Identical' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\LogicalAnd' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\LogicalOr' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\LogicalXor' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Minus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Mod' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Mul' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\NotEqual' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\NotIdentical' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Plus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Pow' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\ShiftLeft' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\ShiftRight' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Smaller' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\SmallerOrEqual' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Spaceship' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php', - 'PhpParser\\Node\\Expr\\BitwiseNot' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php', - 'PhpParser\\Node\\Expr\\BooleanNot' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php', - 'PhpParser\\Node\\Expr\\CallLike' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php', - 'PhpParser\\Node\\Expr\\Cast' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php', - 'PhpParser\\Node\\Expr\\Cast\\Array_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php', - 'PhpParser\\Node\\Expr\\Cast\\Bool_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php', - 'PhpParser\\Node\\Expr\\Cast\\Double' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php', - 'PhpParser\\Node\\Expr\\Cast\\Int_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php', - 'PhpParser\\Node\\Expr\\Cast\\Object_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php', - 'PhpParser\\Node\\Expr\\Cast\\String_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php', - 'PhpParser\\Node\\Expr\\Cast\\Unset_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php', - 'PhpParser\\Node\\Expr\\ClassConstFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php', - 'PhpParser\\Node\\Expr\\Clone_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php', - 'PhpParser\\Node\\Expr\\Closure' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php', - 'PhpParser\\Node\\Expr\\ClosureUse' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php', - 'PhpParser\\Node\\Expr\\ConstFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php', - 'PhpParser\\Node\\Expr\\Empty_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php', - 'PhpParser\\Node\\Expr\\Error' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php', - 'PhpParser\\Node\\Expr\\ErrorSuppress' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php', - 'PhpParser\\Node\\Expr\\Eval_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php', - 'PhpParser\\Node\\Expr\\Exit_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php', - 'PhpParser\\Node\\Expr\\FuncCall' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php', - 'PhpParser\\Node\\Expr\\Include_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php', - 'PhpParser\\Node\\Expr\\Instanceof_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php', - 'PhpParser\\Node\\Expr\\Isset_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php', - 'PhpParser\\Node\\Expr\\List_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php', - 'PhpParser\\Node\\Expr\\Match_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php', - 'PhpParser\\Node\\Expr\\MethodCall' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php', - 'PhpParser\\Node\\Expr\\New_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php', - 'PhpParser\\Node\\Expr\\NullsafeMethodCall' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php', - 'PhpParser\\Node\\Expr\\NullsafePropertyFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php', - 'PhpParser\\Node\\Expr\\PostDec' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php', - 'PhpParser\\Node\\Expr\\PostInc' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php', - 'PhpParser\\Node\\Expr\\PreDec' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php', - 'PhpParser\\Node\\Expr\\PreInc' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php', - 'PhpParser\\Node\\Expr\\Print_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php', - 'PhpParser\\Node\\Expr\\PropertyFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php', - 'PhpParser\\Node\\Expr\\ShellExec' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php', - 'PhpParser\\Node\\Expr\\StaticCall' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php', - 'PhpParser\\Node\\Expr\\StaticPropertyFetch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php', - 'PhpParser\\Node\\Expr\\Ternary' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php', - 'PhpParser\\Node\\Expr\\Throw_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php', - 'PhpParser\\Node\\Expr\\UnaryMinus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php', - 'PhpParser\\Node\\Expr\\UnaryPlus' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php', - 'PhpParser\\Node\\Expr\\Variable' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php', - 'PhpParser\\Node\\Expr\\YieldFrom' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php', - 'PhpParser\\Node\\Expr\\Yield_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php', - 'PhpParser\\Node\\FunctionLike' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php', - 'PhpParser\\Node\\Identifier' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Identifier.php', - 'PhpParser\\Node\\IntersectionType' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/IntersectionType.php', - 'PhpParser\\Node\\MatchArm' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/MatchArm.php', - 'PhpParser\\Node\\Name' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Name.php', - 'PhpParser\\Node\\Name\\FullyQualified' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php', - 'PhpParser\\Node\\Name\\Relative' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php', - 'PhpParser\\Node\\NullableType' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/NullableType.php', - 'PhpParser\\Node\\Param' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Param.php', - 'PhpParser\\Node\\Scalar' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar.php', - 'PhpParser\\Node\\Scalar\\DNumber' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php', - 'PhpParser\\Node\\Scalar\\Encapsed' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php', - 'PhpParser\\Node\\Scalar\\EncapsedStringPart' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php', - 'PhpParser\\Node\\Scalar\\LNumber' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php', - 'PhpParser\\Node\\Scalar\\MagicConst' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Class_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Dir' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\File' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Function_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Line' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Method' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Namespace_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Trait_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php', - 'PhpParser\\Node\\Scalar\\String_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php', - 'PhpParser\\Node\\Stmt' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt.php', - 'PhpParser\\Node\\Stmt\\Break_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php', - 'PhpParser\\Node\\Stmt\\Case_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php', - 'PhpParser\\Node\\Stmt\\Catch_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php', - 'PhpParser\\Node\\Stmt\\ClassConst' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php', - 'PhpParser\\Node\\Stmt\\ClassLike' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php', - 'PhpParser\\Node\\Stmt\\ClassMethod' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php', - 'PhpParser\\Node\\Stmt\\Class_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php', - 'PhpParser\\Node\\Stmt\\Const_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php', - 'PhpParser\\Node\\Stmt\\Continue_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php', - 'PhpParser\\Node\\Stmt\\DeclareDeclare' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php', - 'PhpParser\\Node\\Stmt\\Declare_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php', - 'PhpParser\\Node\\Stmt\\Do_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php', - 'PhpParser\\Node\\Stmt\\Echo_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php', - 'PhpParser\\Node\\Stmt\\ElseIf_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php', - 'PhpParser\\Node\\Stmt\\Else_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php', - 'PhpParser\\Node\\Stmt\\EnumCase' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php', - 'PhpParser\\Node\\Stmt\\Enum_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php', - 'PhpParser\\Node\\Stmt\\Expression' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php', - 'PhpParser\\Node\\Stmt\\Finally_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php', - 'PhpParser\\Node\\Stmt\\For_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php', - 'PhpParser\\Node\\Stmt\\Foreach_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php', - 'PhpParser\\Node\\Stmt\\Function_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php', - 'PhpParser\\Node\\Stmt\\Global_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php', - 'PhpParser\\Node\\Stmt\\Goto_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php', - 'PhpParser\\Node\\Stmt\\GroupUse' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php', - 'PhpParser\\Node\\Stmt\\HaltCompiler' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php', - 'PhpParser\\Node\\Stmt\\If_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php', - 'PhpParser\\Node\\Stmt\\InlineHTML' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php', - 'PhpParser\\Node\\Stmt\\Interface_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php', - 'PhpParser\\Node\\Stmt\\Label' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php', - 'PhpParser\\Node\\Stmt\\Namespace_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php', - 'PhpParser\\Node\\Stmt\\Nop' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php', - 'PhpParser\\Node\\Stmt\\Property' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php', - 'PhpParser\\Node\\Stmt\\PropertyProperty' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php', - 'PhpParser\\Node\\Stmt\\Return_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php', - 'PhpParser\\Node\\Stmt\\StaticVar' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php', - 'PhpParser\\Node\\Stmt\\Static_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php', - 'PhpParser\\Node\\Stmt\\Switch_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php', - 'PhpParser\\Node\\Stmt\\Throw_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Throw_.php', - 'PhpParser\\Node\\Stmt\\TraitUse' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php', - 'PhpParser\\Node\\Stmt\\TraitUseAdaptation' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php', - 'PhpParser\\Node\\Stmt\\TraitUseAdaptation\\Alias' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php', - 'PhpParser\\Node\\Stmt\\TraitUseAdaptation\\Precedence' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php', - 'PhpParser\\Node\\Stmt\\Trait_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php', - 'PhpParser\\Node\\Stmt\\TryCatch' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php', - 'PhpParser\\Node\\Stmt\\Unset_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php', - 'PhpParser\\Node\\Stmt\\UseUse' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php', - 'PhpParser\\Node\\Stmt\\Use_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php', - 'PhpParser\\Node\\Stmt\\While_' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php', - 'PhpParser\\Node\\UnionType' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/UnionType.php', - 'PhpParser\\Node\\VarLikeIdentifier' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php', - 'PhpParser\\Node\\VariadicPlaceholder' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Node/VariadicPlaceholder.php', - 'PhpParser\\Parser' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Parser.php', - 'PhpParser\\ParserAbstract' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ParserAbstract.php', - 'PhpParser\\ParserFactory' => $vendorDir . '/nikic/php-parser/lib/PhpParser/ParserFactory.php', - 'PhpParser\\Parser\\Multiple' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Parser/Multiple.php', - 'PhpParser\\Parser\\Php5' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Parser/Php5.php', - 'PhpParser\\Parser\\Php7' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Parser/Php7.php', - 'PhpParser\\Parser\\Tokens' => $vendorDir . '/nikic/php-parser/lib/PhpParser/Parser/Tokens.php', - 'PhpParser\\PrettyPrinterAbstract' => $vendorDir . '/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php', - 'PhpParser\\PrettyPrinter\\Standard' => $vendorDir . '/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php', - 'PhpToken' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php', - 'PrestaShop\\AutoIndex\\Command\\AddAutoIndexCommand' => $vendorDir . '/prestashop/autoindex/src/Command/AddAutoIndexCommand.php', - 'PrestaShop\\CodingStandards\\Command\\AbstractCommand' => $vendorDir . '/prestashop/php-dev-tools/src/Command/AbstractCommand.php', - 'PrestaShop\\CodingStandards\\Command\\CsFixerInitCommand' => $vendorDir . '/prestashop/php-dev-tools/src/Command/CsFixerInitCommand.php', - 'PrestaShop\\CodingStandards\\Command\\PhpStanInitCommand' => $vendorDir . '/prestashop/php-dev-tools/src/Command/PhpStanInitCommand.php', - 'PrestaShop\\CodingStandards\\CsFixer\\Config' => $vendorDir . '/prestashop/php-dev-tools/src/CsFixer/Config.php', - 'PrestaShop\\HeaderStamp\\Command\\UpdateLicensesCommand' => $vendorDir . '/prestashop/header-stamp/src/Command/UpdateLicensesCommand.php', - 'PrestaShop\\HeaderStamp\\LicenseHeader' => $vendorDir . '/prestashop/header-stamp/src/LicenseHeader.php', - 'PrestaShop\\HeaderStamp\\Reporter' => $vendorDir . '/prestashop/header-stamp/src/Reporter.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Controller\\AbandonedCartController' => $baseDir . '/src/Controller/AbandonedCartController.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Controller\\CustomerSyncController' => $baseDir . '/src/Controller/CustomerSyncController.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Controller\\ModuleConfigurationController' => $baseDir . '/src/Controller/ModuleConfigurationController.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Controller\\OptInController' => $baseDir . '/src/Controller/OptInController.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Controller\\RssFeedController' => $baseDir . '/src/Controller/RssFeedController.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\AbandonedCartFormDataConfiguration' => $baseDir . '/src/Form/AbandonedCartFormDataConfiguration.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\AbandonedCartFormType' => $baseDir . '/src/Form/AbandonedCartFormType.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\AccountConfigurationFormType' => $baseDir . '/src/Form/AccountConfigurationFormType.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\AccountFormDataConfiguration' => $baseDir . '/src/Form/AccountFormDataConfiguration.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\ChoiceProvider\\Autoresponder' => $baseDir . '/src/Form/ChoiceProvider/Autoresponder.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\ChoiceProvider\\ProductCategory' => $baseDir . '/src/Form/ChoiceProvider/ProductCategory.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\CustomerSyncFormDataConfiguration' => $baseDir . '/src/Form/CustomerSyncFormDataConfiguration.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\CustomerSyncFormType' => $baseDir . '/src/Form/CustomerSyncFormType.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\FormDataProvider' => $baseDir . '/src/Form/FormDataProvider.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\RssFeedFormDataConfiguration' => $baseDir . '/src/Form/RssFeedFormDataConfiguration.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\RssFeedFormType' => $baseDir . '/src/Form/RssFeedFormType.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Install\\Installer' => $baseDir . '/src/Install/Installer.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Lib\\Api' => $baseDir . '/lib/Api.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Lib\\Logger' => $baseDir . '/lib/Logger.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Model\\AbandonedCart' => $baseDir . '/src/Model/AbandonedCart.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Model\\AbandonedCartCollection' => $baseDir . '/src/Model/AbandonedCartCollection.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Model\\AbandonedCartProduct' => $baseDir . '/src/Model/AbandonedCartProduct.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Model\\RssFeedProductsCollection' => $baseDir . '/src/Model/RssFeedProductsCollection.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Model\\SentCart' => $baseDir . '/src/Model/SentCart.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Model\\Subscriber' => $baseDir . '/src/Model/Subscriber.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Model\\SubscriberCollection' => $baseDir . '/src/Model/SubscriberCollection.php', - 'Psr\\Container\\ContainerExceptionInterface' => $vendorDir . '/psr/container/src/ContainerExceptionInterface.php', - 'Psr\\Container\\ContainerInterface' => $vendorDir . '/psr/container/src/ContainerInterface.php', - 'Psr\\Container\\NotFoundExceptionInterface' => $vendorDir . '/psr/container/src/NotFoundExceptionInterface.php', - 'Psr\\EventDispatcher\\EventDispatcherInterface' => $vendorDir . '/psr/event-dispatcher/src/EventDispatcherInterface.php', - 'Psr\\EventDispatcher\\ListenerProviderInterface' => $vendorDir . '/psr/event-dispatcher/src/ListenerProviderInterface.php', - 'Psr\\EventDispatcher\\StoppableEventInterface' => $vendorDir . '/psr/event-dispatcher/src/StoppableEventInterface.php', - 'Psr\\Log\\AbstractLogger' => $vendorDir . '/psr/log/src/AbstractLogger.php', - 'Psr\\Log\\InvalidArgumentException' => $vendorDir . '/psr/log/src/InvalidArgumentException.php', - 'Psr\\Log\\LogLevel' => $vendorDir . '/psr/log/src/LogLevel.php', - 'Psr\\Log\\LoggerAwareInterface' => $vendorDir . '/psr/log/src/LoggerAwareInterface.php', - 'Psr\\Log\\LoggerAwareTrait' => $vendorDir . '/psr/log/src/LoggerAwareTrait.php', - 'Psr\\Log\\LoggerInterface' => $vendorDir . '/psr/log/src/LoggerInterface.php', - 'Psr\\Log\\LoggerTrait' => $vendorDir . '/psr/log/src/LoggerTrait.php', - 'Psr\\Log\\NullLogger' => $vendorDir . '/psr/log/src/NullLogger.php', - 'ReturnTypeWillChange' => $vendorDir . '/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php', - 'SebastianBergmann\\Diff\\Chunk' => $vendorDir . '/sebastian/diff/src/Chunk.php', - 'SebastianBergmann\\Diff\\ConfigurationException' => $vendorDir . '/sebastian/diff/src/Exception/ConfigurationException.php', - 'SebastianBergmann\\Diff\\Diff' => $vendorDir . '/sebastian/diff/src/Diff.php', - 'SebastianBergmann\\Diff\\Differ' => $vendorDir . '/sebastian/diff/src/Differ.php', - 'SebastianBergmann\\Diff\\Exception' => $vendorDir . '/sebastian/diff/src/Exception/Exception.php', - 'SebastianBergmann\\Diff\\InvalidArgumentException' => $vendorDir . '/sebastian/diff/src/Exception/InvalidArgumentException.php', - 'SebastianBergmann\\Diff\\Line' => $vendorDir . '/sebastian/diff/src/Line.php', - 'SebastianBergmann\\Diff\\LongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/LongestCommonSubsequenceCalculator.php', - 'SebastianBergmann\\Diff\\MemoryEfficientLongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php', - 'SebastianBergmann\\Diff\\Output\\AbstractChunkOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php', - 'SebastianBergmann\\Diff\\Output\\DiffOnlyOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php', - 'SebastianBergmann\\Diff\\Output\\DiffOutputBuilderInterface' => $vendorDir . '/sebastian/diff/src/Output/DiffOutputBuilderInterface.php', - 'SebastianBergmann\\Diff\\Output\\StrictUnifiedDiffOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/StrictUnifiedDiffOutputBuilder.php', - 'SebastianBergmann\\Diff\\Output\\UnifiedDiffOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php', - 'SebastianBergmann\\Diff\\Parser' => $vendorDir . '/sebastian/diff/src/Parser.php', - 'SebastianBergmann\\Diff\\TimeEfficientLongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php', - 'Stringable' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Stringable.php', - 'Symfony\\Component\\Console\\Application' => $vendorDir . '/symfony/console/Application.php', - 'Symfony\\Component\\Console\\Attribute\\AsCommand' => $vendorDir . '/symfony/console/Attribute/AsCommand.php', - 'Symfony\\Component\\Console\\CI\\GithubActionReporter' => $vendorDir . '/symfony/console/CI/GithubActionReporter.php', - 'Symfony\\Component\\Console\\Color' => $vendorDir . '/symfony/console/Color.php', - 'Symfony\\Component\\Console\\CommandLoader\\CommandLoaderInterface' => $vendorDir . '/symfony/console/CommandLoader/CommandLoaderInterface.php', - 'Symfony\\Component\\Console\\CommandLoader\\ContainerCommandLoader' => $vendorDir . '/symfony/console/CommandLoader/ContainerCommandLoader.php', - 'Symfony\\Component\\Console\\CommandLoader\\FactoryCommandLoader' => $vendorDir . '/symfony/console/CommandLoader/FactoryCommandLoader.php', - 'Symfony\\Component\\Console\\Command\\Command' => $vendorDir . '/symfony/console/Command/Command.php', - 'Symfony\\Component\\Console\\Command\\CompleteCommand' => $vendorDir . '/symfony/console/Command/CompleteCommand.php', - 'Symfony\\Component\\Console\\Command\\DumpCompletionCommand' => $vendorDir . '/symfony/console/Command/DumpCompletionCommand.php', - 'Symfony\\Component\\Console\\Command\\HelpCommand' => $vendorDir . '/symfony/console/Command/HelpCommand.php', - 'Symfony\\Component\\Console\\Command\\LazyCommand' => $vendorDir . '/symfony/console/Command/LazyCommand.php', - 'Symfony\\Component\\Console\\Command\\ListCommand' => $vendorDir . '/symfony/console/Command/ListCommand.php', - 'Symfony\\Component\\Console\\Command\\LockableTrait' => $vendorDir . '/symfony/console/Command/LockableTrait.php', - 'Symfony\\Component\\Console\\Command\\SignalableCommandInterface' => $vendorDir . '/symfony/console/Command/SignalableCommandInterface.php', - 'Symfony\\Component\\Console\\Command\\TraceableCommand' => $vendorDir . '/symfony/console/Command/TraceableCommand.php', - 'Symfony\\Component\\Console\\Completion\\CompletionInput' => $vendorDir . '/symfony/console/Completion/CompletionInput.php', - 'Symfony\\Component\\Console\\Completion\\CompletionSuggestions' => $vendorDir . '/symfony/console/Completion/CompletionSuggestions.php', - 'Symfony\\Component\\Console\\Completion\\Output\\BashCompletionOutput' => $vendorDir . '/symfony/console/Completion/Output/BashCompletionOutput.php', - 'Symfony\\Component\\Console\\Completion\\Output\\CompletionOutputInterface' => $vendorDir . '/symfony/console/Completion/Output/CompletionOutputInterface.php', - 'Symfony\\Component\\Console\\Completion\\Output\\FishCompletionOutput' => $vendorDir . '/symfony/console/Completion/Output/FishCompletionOutput.php', - 'Symfony\\Component\\Console\\Completion\\Output\\ZshCompletionOutput' => $vendorDir . '/symfony/console/Completion/Output/ZshCompletionOutput.php', - 'Symfony\\Component\\Console\\Completion\\Suggestion' => $vendorDir . '/symfony/console/Completion/Suggestion.php', - 'Symfony\\Component\\Console\\ConsoleEvents' => $vendorDir . '/symfony/console/ConsoleEvents.php', - 'Symfony\\Component\\Console\\Cursor' => $vendorDir . '/symfony/console/Cursor.php', - 'Symfony\\Component\\Console\\DataCollector\\CommandDataCollector' => $vendorDir . '/symfony/console/DataCollector/CommandDataCollector.php', - 'Symfony\\Component\\Console\\Debug\\CliRequest' => $vendorDir . '/symfony/console/Debug/CliRequest.php', - 'Symfony\\Component\\Console\\DependencyInjection\\AddConsoleCommandPass' => $vendorDir . '/symfony/console/DependencyInjection/AddConsoleCommandPass.php', - 'Symfony\\Component\\Console\\Descriptor\\ApplicationDescription' => $vendorDir . '/symfony/console/Descriptor/ApplicationDescription.php', - 'Symfony\\Component\\Console\\Descriptor\\Descriptor' => $vendorDir . '/symfony/console/Descriptor/Descriptor.php', - 'Symfony\\Component\\Console\\Descriptor\\DescriptorInterface' => $vendorDir . '/symfony/console/Descriptor/DescriptorInterface.php', - 'Symfony\\Component\\Console\\Descriptor\\JsonDescriptor' => $vendorDir . '/symfony/console/Descriptor/JsonDescriptor.php', - 'Symfony\\Component\\Console\\Descriptor\\MarkdownDescriptor' => $vendorDir . '/symfony/console/Descriptor/MarkdownDescriptor.php', - 'Symfony\\Component\\Console\\Descriptor\\ReStructuredTextDescriptor' => $vendorDir . '/symfony/console/Descriptor/ReStructuredTextDescriptor.php', - 'Symfony\\Component\\Console\\Descriptor\\TextDescriptor' => $vendorDir . '/symfony/console/Descriptor/TextDescriptor.php', - 'Symfony\\Component\\Console\\Descriptor\\XmlDescriptor' => $vendorDir . '/symfony/console/Descriptor/XmlDescriptor.php', - 'Symfony\\Component\\Console\\EventListener\\ErrorListener' => $vendorDir . '/symfony/console/EventListener/ErrorListener.php', - 'Symfony\\Component\\Console\\Event\\ConsoleCommandEvent' => $vendorDir . '/symfony/console/Event/ConsoleCommandEvent.php', - 'Symfony\\Component\\Console\\Event\\ConsoleErrorEvent' => $vendorDir . '/symfony/console/Event/ConsoleErrorEvent.php', - 'Symfony\\Component\\Console\\Event\\ConsoleEvent' => $vendorDir . '/symfony/console/Event/ConsoleEvent.php', - 'Symfony\\Component\\Console\\Event\\ConsoleSignalEvent' => $vendorDir . '/symfony/console/Event/ConsoleSignalEvent.php', - 'Symfony\\Component\\Console\\Event\\ConsoleTerminateEvent' => $vendorDir . '/symfony/console/Event/ConsoleTerminateEvent.php', - 'Symfony\\Component\\Console\\Exception\\CommandNotFoundException' => $vendorDir . '/symfony/console/Exception/CommandNotFoundException.php', - 'Symfony\\Component\\Console\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/console/Exception/ExceptionInterface.php', - 'Symfony\\Component\\Console\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/console/Exception/InvalidArgumentException.php', - 'Symfony\\Component\\Console\\Exception\\InvalidOptionException' => $vendorDir . '/symfony/console/Exception/InvalidOptionException.php', - 'Symfony\\Component\\Console\\Exception\\LogicException' => $vendorDir . '/symfony/console/Exception/LogicException.php', - 'Symfony\\Component\\Console\\Exception\\MissingInputException' => $vendorDir . '/symfony/console/Exception/MissingInputException.php', - 'Symfony\\Component\\Console\\Exception\\NamespaceNotFoundException' => $vendorDir . '/symfony/console/Exception/NamespaceNotFoundException.php', - 'Symfony\\Component\\Console\\Exception\\RunCommandFailedException' => $vendorDir . '/symfony/console/Exception/RunCommandFailedException.php', - 'Symfony\\Component\\Console\\Exception\\RuntimeException' => $vendorDir . '/symfony/console/Exception/RuntimeException.php', - 'Symfony\\Component\\Console\\Formatter\\NullOutputFormatter' => $vendorDir . '/symfony/console/Formatter/NullOutputFormatter.php', - 'Symfony\\Component\\Console\\Formatter\\NullOutputFormatterStyle' => $vendorDir . '/symfony/console/Formatter/NullOutputFormatterStyle.php', - 'Symfony\\Component\\Console\\Formatter\\OutputFormatter' => $vendorDir . '/symfony/console/Formatter/OutputFormatter.php', - 'Symfony\\Component\\Console\\Formatter\\OutputFormatterInterface' => $vendorDir . '/symfony/console/Formatter/OutputFormatterInterface.php', - 'Symfony\\Component\\Console\\Formatter\\OutputFormatterStyle' => $vendorDir . '/symfony/console/Formatter/OutputFormatterStyle.php', - 'Symfony\\Component\\Console\\Formatter\\OutputFormatterStyleInterface' => $vendorDir . '/symfony/console/Formatter/OutputFormatterStyleInterface.php', - 'Symfony\\Component\\Console\\Formatter\\OutputFormatterStyleStack' => $vendorDir . '/symfony/console/Formatter/OutputFormatterStyleStack.php', - 'Symfony\\Component\\Console\\Formatter\\WrappableOutputFormatterInterface' => $vendorDir . '/symfony/console/Formatter/WrappableOutputFormatterInterface.php', - 'Symfony\\Component\\Console\\Helper\\DebugFormatterHelper' => $vendorDir . '/symfony/console/Helper/DebugFormatterHelper.php', - 'Symfony\\Component\\Console\\Helper\\DescriptorHelper' => $vendorDir . '/symfony/console/Helper/DescriptorHelper.php', - 'Symfony\\Component\\Console\\Helper\\Dumper' => $vendorDir . '/symfony/console/Helper/Dumper.php', - 'Symfony\\Component\\Console\\Helper\\FormatterHelper' => $vendorDir . '/symfony/console/Helper/FormatterHelper.php', - 'Symfony\\Component\\Console\\Helper\\Helper' => $vendorDir . '/symfony/console/Helper/Helper.php', - 'Symfony\\Component\\Console\\Helper\\HelperInterface' => $vendorDir . '/symfony/console/Helper/HelperInterface.php', - 'Symfony\\Component\\Console\\Helper\\HelperSet' => $vendorDir . '/symfony/console/Helper/HelperSet.php', - 'Symfony\\Component\\Console\\Helper\\InputAwareHelper' => $vendorDir . '/symfony/console/Helper/InputAwareHelper.php', - 'Symfony\\Component\\Console\\Helper\\OutputWrapper' => $vendorDir . '/symfony/console/Helper/OutputWrapper.php', - 'Symfony\\Component\\Console\\Helper\\ProcessHelper' => $vendorDir . '/symfony/console/Helper/ProcessHelper.php', - 'Symfony\\Component\\Console\\Helper\\ProgressBar' => $vendorDir . '/symfony/console/Helper/ProgressBar.php', - 'Symfony\\Component\\Console\\Helper\\ProgressIndicator' => $vendorDir . '/symfony/console/Helper/ProgressIndicator.php', - 'Symfony\\Component\\Console\\Helper\\QuestionHelper' => $vendorDir . '/symfony/console/Helper/QuestionHelper.php', - 'Symfony\\Component\\Console\\Helper\\SymfonyQuestionHelper' => $vendorDir . '/symfony/console/Helper/SymfonyQuestionHelper.php', - 'Symfony\\Component\\Console\\Helper\\Table' => $vendorDir . '/symfony/console/Helper/Table.php', - 'Symfony\\Component\\Console\\Helper\\TableCell' => $vendorDir . '/symfony/console/Helper/TableCell.php', - 'Symfony\\Component\\Console\\Helper\\TableCellStyle' => $vendorDir . '/symfony/console/Helper/TableCellStyle.php', - 'Symfony\\Component\\Console\\Helper\\TableRows' => $vendorDir . '/symfony/console/Helper/TableRows.php', - 'Symfony\\Component\\Console\\Helper\\TableSeparator' => $vendorDir . '/symfony/console/Helper/TableSeparator.php', - 'Symfony\\Component\\Console\\Helper\\TableStyle' => $vendorDir . '/symfony/console/Helper/TableStyle.php', - 'Symfony\\Component\\Console\\Input\\ArgvInput' => $vendorDir . '/symfony/console/Input/ArgvInput.php', - 'Symfony\\Component\\Console\\Input\\ArrayInput' => $vendorDir . '/symfony/console/Input/ArrayInput.php', - 'Symfony\\Component\\Console\\Input\\Input' => $vendorDir . '/symfony/console/Input/Input.php', - 'Symfony\\Component\\Console\\Input\\InputArgument' => $vendorDir . '/symfony/console/Input/InputArgument.php', - 'Symfony\\Component\\Console\\Input\\InputAwareInterface' => $vendorDir . '/symfony/console/Input/InputAwareInterface.php', - 'Symfony\\Component\\Console\\Input\\InputDefinition' => $vendorDir . '/symfony/console/Input/InputDefinition.php', - 'Symfony\\Component\\Console\\Input\\InputInterface' => $vendorDir . '/symfony/console/Input/InputInterface.php', - 'Symfony\\Component\\Console\\Input\\InputOption' => $vendorDir . '/symfony/console/Input/InputOption.php', - 'Symfony\\Component\\Console\\Input\\StreamableInputInterface' => $vendorDir . '/symfony/console/Input/StreamableInputInterface.php', - 'Symfony\\Component\\Console\\Input\\StringInput' => $vendorDir . '/symfony/console/Input/StringInput.php', - 'Symfony\\Component\\Console\\Logger\\ConsoleLogger' => $vendorDir . '/symfony/console/Logger/ConsoleLogger.php', - 'Symfony\\Component\\Console\\Messenger\\RunCommandContext' => $vendorDir . '/symfony/console/Messenger/RunCommandContext.php', - 'Symfony\\Component\\Console\\Messenger\\RunCommandMessage' => $vendorDir . '/symfony/console/Messenger/RunCommandMessage.php', - 'Symfony\\Component\\Console\\Messenger\\RunCommandMessageHandler' => $vendorDir . '/symfony/console/Messenger/RunCommandMessageHandler.php', - 'Symfony\\Component\\Console\\Output\\AnsiColorMode' => $vendorDir . '/symfony/console/Output/AnsiColorMode.php', - 'Symfony\\Component\\Console\\Output\\BufferedOutput' => $vendorDir . '/symfony/console/Output/BufferedOutput.php', - 'Symfony\\Component\\Console\\Output\\ConsoleOutput' => $vendorDir . '/symfony/console/Output/ConsoleOutput.php', - 'Symfony\\Component\\Console\\Output\\ConsoleOutputInterface' => $vendorDir . '/symfony/console/Output/ConsoleOutputInterface.php', - 'Symfony\\Component\\Console\\Output\\ConsoleSectionOutput' => $vendorDir . '/symfony/console/Output/ConsoleSectionOutput.php', - 'Symfony\\Component\\Console\\Output\\NullOutput' => $vendorDir . '/symfony/console/Output/NullOutput.php', - 'Symfony\\Component\\Console\\Output\\Output' => $vendorDir . '/symfony/console/Output/Output.php', - 'Symfony\\Component\\Console\\Output\\OutputInterface' => $vendorDir . '/symfony/console/Output/OutputInterface.php', - 'Symfony\\Component\\Console\\Output\\StreamOutput' => $vendorDir . '/symfony/console/Output/StreamOutput.php', - 'Symfony\\Component\\Console\\Output\\TrimmedBufferOutput' => $vendorDir . '/symfony/console/Output/TrimmedBufferOutput.php', - 'Symfony\\Component\\Console\\Question\\ChoiceQuestion' => $vendorDir . '/symfony/console/Question/ChoiceQuestion.php', - 'Symfony\\Component\\Console\\Question\\ConfirmationQuestion' => $vendorDir . '/symfony/console/Question/ConfirmationQuestion.php', - 'Symfony\\Component\\Console\\Question\\Question' => $vendorDir . '/symfony/console/Question/Question.php', - 'Symfony\\Component\\Console\\SignalRegistry\\SignalMap' => $vendorDir . '/symfony/console/SignalRegistry/SignalMap.php', - 'Symfony\\Component\\Console\\SignalRegistry\\SignalRegistry' => $vendorDir . '/symfony/console/SignalRegistry/SignalRegistry.php', - 'Symfony\\Component\\Console\\SingleCommandApplication' => $vendorDir . '/symfony/console/SingleCommandApplication.php', - 'Symfony\\Component\\Console\\Style\\OutputStyle' => $vendorDir . '/symfony/console/Style/OutputStyle.php', - 'Symfony\\Component\\Console\\Style\\StyleInterface' => $vendorDir . '/symfony/console/Style/StyleInterface.php', - 'Symfony\\Component\\Console\\Style\\SymfonyStyle' => $vendorDir . '/symfony/console/Style/SymfonyStyle.php', - 'Symfony\\Component\\Console\\Terminal' => $vendorDir . '/symfony/console/Terminal.php', - 'Symfony\\Component\\Console\\Tester\\ApplicationTester' => $vendorDir . '/symfony/console/Tester/ApplicationTester.php', - 'Symfony\\Component\\Console\\Tester\\CommandCompletionTester' => $vendorDir . '/symfony/console/Tester/CommandCompletionTester.php', - 'Symfony\\Component\\Console\\Tester\\CommandTester' => $vendorDir . '/symfony/console/Tester/CommandTester.php', - 'Symfony\\Component\\Console\\Tester\\Constraint\\CommandIsSuccessful' => $vendorDir . '/symfony/console/Tester/Constraint/CommandIsSuccessful.php', - 'Symfony\\Component\\Console\\Tester\\TesterTrait' => $vendorDir . '/symfony/console/Tester/TesterTrait.php', - 'Symfony\\Component\\EventDispatcher\\Attribute\\AsEventListener' => $vendorDir . '/symfony/event-dispatcher/Attribute/AsEventListener.php', - 'Symfony\\Component\\EventDispatcher\\Debug\\TraceableEventDispatcher' => $vendorDir . '/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php', - 'Symfony\\Component\\EventDispatcher\\Debug\\WrappedListener' => $vendorDir . '/symfony/event-dispatcher/Debug/WrappedListener.php', - 'Symfony\\Component\\EventDispatcher\\DependencyInjection\\AddEventAliasesPass' => $vendorDir . '/symfony/event-dispatcher/DependencyInjection/AddEventAliasesPass.php', - 'Symfony\\Component\\EventDispatcher\\DependencyInjection\\RegisterListenersPass' => $vendorDir . '/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php', - 'Symfony\\Component\\EventDispatcher\\EventDispatcher' => $vendorDir . '/symfony/event-dispatcher/EventDispatcher.php', - 'Symfony\\Component\\EventDispatcher\\EventDispatcherInterface' => $vendorDir . '/symfony/event-dispatcher/EventDispatcherInterface.php', - 'Symfony\\Component\\EventDispatcher\\EventSubscriberInterface' => $vendorDir . '/symfony/event-dispatcher/EventSubscriberInterface.php', - 'Symfony\\Component\\EventDispatcher\\GenericEvent' => $vendorDir . '/symfony/event-dispatcher/GenericEvent.php', - 'Symfony\\Component\\EventDispatcher\\ImmutableEventDispatcher' => $vendorDir . '/symfony/event-dispatcher/ImmutableEventDispatcher.php', - 'Symfony\\Component\\Filesystem\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/filesystem/Exception/ExceptionInterface.php', - 'Symfony\\Component\\Filesystem\\Exception\\FileNotFoundException' => $vendorDir . '/symfony/filesystem/Exception/FileNotFoundException.php', - 'Symfony\\Component\\Filesystem\\Exception\\IOException' => $vendorDir . '/symfony/filesystem/Exception/IOException.php', - 'Symfony\\Component\\Filesystem\\Exception\\IOExceptionInterface' => $vendorDir . '/symfony/filesystem/Exception/IOExceptionInterface.php', - 'Symfony\\Component\\Filesystem\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/filesystem/Exception/InvalidArgumentException.php', - 'Symfony\\Component\\Filesystem\\Exception\\RuntimeException' => $vendorDir . '/symfony/filesystem/Exception/RuntimeException.php', - 'Symfony\\Component\\Filesystem\\Filesystem' => $vendorDir . '/symfony/filesystem/Filesystem.php', - 'Symfony\\Component\\Filesystem\\Path' => $vendorDir . '/symfony/filesystem/Path.php', - 'Symfony\\Component\\Finder\\Comparator\\Comparator' => $vendorDir . '/symfony/finder/Comparator/Comparator.php', - 'Symfony\\Component\\Finder\\Comparator\\DateComparator' => $vendorDir . '/symfony/finder/Comparator/DateComparator.php', - 'Symfony\\Component\\Finder\\Comparator\\NumberComparator' => $vendorDir . '/symfony/finder/Comparator/NumberComparator.php', - 'Symfony\\Component\\Finder\\Exception\\AccessDeniedException' => $vendorDir . '/symfony/finder/Exception/AccessDeniedException.php', - 'Symfony\\Component\\Finder\\Exception\\DirectoryNotFoundException' => $vendorDir . '/symfony/finder/Exception/DirectoryNotFoundException.php', - 'Symfony\\Component\\Finder\\Finder' => $vendorDir . '/symfony/finder/Finder.php', - 'Symfony\\Component\\Finder\\Gitignore' => $vendorDir . '/symfony/finder/Gitignore.php', - 'Symfony\\Component\\Finder\\Glob' => $vendorDir . '/symfony/finder/Glob.php', - 'Symfony\\Component\\Finder\\Iterator\\CustomFilterIterator' => $vendorDir . '/symfony/finder/Iterator/CustomFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\DateRangeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/DateRangeFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\DepthRangeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/DepthRangeFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\ExcludeDirectoryFilterIterator' => $vendorDir . '/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\FileTypeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/FileTypeFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\FilecontentFilterIterator' => $vendorDir . '/symfony/finder/Iterator/FilecontentFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\FilenameFilterIterator' => $vendorDir . '/symfony/finder/Iterator/FilenameFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\LazyIterator' => $vendorDir . '/symfony/finder/Iterator/LazyIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\MultiplePcreFilterIterator' => $vendorDir . '/symfony/finder/Iterator/MultiplePcreFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\PathFilterIterator' => $vendorDir . '/symfony/finder/Iterator/PathFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\RecursiveDirectoryIterator' => $vendorDir . '/symfony/finder/Iterator/RecursiveDirectoryIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\SizeRangeFilterIterator' => $vendorDir . '/symfony/finder/Iterator/SizeRangeFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\SortableIterator' => $vendorDir . '/symfony/finder/Iterator/SortableIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\VcsIgnoredFilterIterator' => $vendorDir . '/symfony/finder/Iterator/VcsIgnoredFilterIterator.php', - 'Symfony\\Component\\Finder\\SplFileInfo' => $vendorDir . '/symfony/finder/SplFileInfo.php', - 'Symfony\\Component\\OptionsResolver\\Debug\\OptionsResolverIntrospector' => $vendorDir . '/symfony/options-resolver/Debug/OptionsResolverIntrospector.php', - 'Symfony\\Component\\OptionsResolver\\Exception\\AccessException' => $vendorDir . '/symfony/options-resolver/Exception/AccessException.php', - 'Symfony\\Component\\OptionsResolver\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/options-resolver/Exception/ExceptionInterface.php', - 'Symfony\\Component\\OptionsResolver\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/options-resolver/Exception/InvalidArgumentException.php', - 'Symfony\\Component\\OptionsResolver\\Exception\\InvalidOptionsException' => $vendorDir . '/symfony/options-resolver/Exception/InvalidOptionsException.php', - 'Symfony\\Component\\OptionsResolver\\Exception\\MissingOptionsException' => $vendorDir . '/symfony/options-resolver/Exception/MissingOptionsException.php', - 'Symfony\\Component\\OptionsResolver\\Exception\\NoConfigurationException' => $vendorDir . '/symfony/options-resolver/Exception/NoConfigurationException.php', - 'Symfony\\Component\\OptionsResolver\\Exception\\NoSuchOptionException' => $vendorDir . '/symfony/options-resolver/Exception/NoSuchOptionException.php', - 'Symfony\\Component\\OptionsResolver\\Exception\\OptionDefinitionException' => $vendorDir . '/symfony/options-resolver/Exception/OptionDefinitionException.php', - 'Symfony\\Component\\OptionsResolver\\Exception\\UndefinedOptionsException' => $vendorDir . '/symfony/options-resolver/Exception/UndefinedOptionsException.php', - 'Symfony\\Component\\OptionsResolver\\OptionConfigurator' => $vendorDir . '/symfony/options-resolver/OptionConfigurator.php', - 'Symfony\\Component\\OptionsResolver\\Options' => $vendorDir . '/symfony/options-resolver/Options.php', - 'Symfony\\Component\\OptionsResolver\\OptionsResolver' => $vendorDir . '/symfony/options-resolver/OptionsResolver.php', - 'Symfony\\Component\\Process\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/process/Exception/ExceptionInterface.php', - 'Symfony\\Component\\Process\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/process/Exception/InvalidArgumentException.php', - 'Symfony\\Component\\Process\\Exception\\LogicException' => $vendorDir . '/symfony/process/Exception/LogicException.php', - 'Symfony\\Component\\Process\\Exception\\ProcessFailedException' => $vendorDir . '/symfony/process/Exception/ProcessFailedException.php', - 'Symfony\\Component\\Process\\Exception\\ProcessSignaledException' => $vendorDir . '/symfony/process/Exception/ProcessSignaledException.php', - 'Symfony\\Component\\Process\\Exception\\ProcessTimedOutException' => $vendorDir . '/symfony/process/Exception/ProcessTimedOutException.php', - 'Symfony\\Component\\Process\\Exception\\RunProcessFailedException' => $vendorDir . '/symfony/process/Exception/RunProcessFailedException.php', - 'Symfony\\Component\\Process\\Exception\\RuntimeException' => $vendorDir . '/symfony/process/Exception/RuntimeException.php', - 'Symfony\\Component\\Process\\ExecutableFinder' => $vendorDir . '/symfony/process/ExecutableFinder.php', - 'Symfony\\Component\\Process\\InputStream' => $vendorDir . '/symfony/process/InputStream.php', - 'Symfony\\Component\\Process\\Messenger\\RunProcessContext' => $vendorDir . '/symfony/process/Messenger/RunProcessContext.php', - 'Symfony\\Component\\Process\\Messenger\\RunProcessMessage' => $vendorDir . '/symfony/process/Messenger/RunProcessMessage.php', - 'Symfony\\Component\\Process\\Messenger\\RunProcessMessageHandler' => $vendorDir . '/symfony/process/Messenger/RunProcessMessageHandler.php', - 'Symfony\\Component\\Process\\PhpExecutableFinder' => $vendorDir . '/symfony/process/PhpExecutableFinder.php', - 'Symfony\\Component\\Process\\PhpProcess' => $vendorDir . '/symfony/process/PhpProcess.php', - 'Symfony\\Component\\Process\\PhpSubprocess' => $vendorDir . '/symfony/process/PhpSubprocess.php', - 'Symfony\\Component\\Process\\Pipes\\AbstractPipes' => $vendorDir . '/symfony/process/Pipes/AbstractPipes.php', - 'Symfony\\Component\\Process\\Pipes\\PipesInterface' => $vendorDir . '/symfony/process/Pipes/PipesInterface.php', - 'Symfony\\Component\\Process\\Pipes\\UnixPipes' => $vendorDir . '/symfony/process/Pipes/UnixPipes.php', - 'Symfony\\Component\\Process\\Pipes\\WindowsPipes' => $vendorDir . '/symfony/process/Pipes/WindowsPipes.php', - 'Symfony\\Component\\Process\\Process' => $vendorDir . '/symfony/process/Process.php', - 'Symfony\\Component\\Process\\ProcessUtils' => $vendorDir . '/symfony/process/ProcessUtils.php', - 'Symfony\\Component\\Stopwatch\\Section' => $vendorDir . '/symfony/stopwatch/Section.php', - 'Symfony\\Component\\Stopwatch\\Stopwatch' => $vendorDir . '/symfony/stopwatch/Stopwatch.php', - 'Symfony\\Component\\Stopwatch\\StopwatchEvent' => $vendorDir . '/symfony/stopwatch/StopwatchEvent.php', - 'Symfony\\Component\\Stopwatch\\StopwatchPeriod' => $vendorDir . '/symfony/stopwatch/StopwatchPeriod.php', - 'Symfony\\Component\\String\\AbstractString' => $vendorDir . '/symfony/string/AbstractString.php', - 'Symfony\\Component\\String\\AbstractUnicodeString' => $vendorDir . '/symfony/string/AbstractUnicodeString.php', - 'Symfony\\Component\\String\\ByteString' => $vendorDir . '/symfony/string/ByteString.php', - 'Symfony\\Component\\String\\CodePointString' => $vendorDir . '/symfony/string/CodePointString.php', - 'Symfony\\Component\\String\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/string/Exception/ExceptionInterface.php', - 'Symfony\\Component\\String\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/string/Exception/InvalidArgumentException.php', - 'Symfony\\Component\\String\\Exception\\RuntimeException' => $vendorDir . '/symfony/string/Exception/RuntimeException.php', - 'Symfony\\Component\\String\\Inflector\\EnglishInflector' => $vendorDir . '/symfony/string/Inflector/EnglishInflector.php', - 'Symfony\\Component\\String\\Inflector\\FrenchInflector' => $vendorDir . '/symfony/string/Inflector/FrenchInflector.php', - 'Symfony\\Component\\String\\Inflector\\InflectorInterface' => $vendorDir . '/symfony/string/Inflector/InflectorInterface.php', - 'Symfony\\Component\\String\\LazyString' => $vendorDir . '/symfony/string/LazyString.php', - 'Symfony\\Component\\String\\Slugger\\AsciiSlugger' => $vendorDir . '/symfony/string/Slugger/AsciiSlugger.php', - 'Symfony\\Component\\String\\Slugger\\SluggerInterface' => $vendorDir . '/symfony/string/Slugger/SluggerInterface.php', - 'Symfony\\Component\\String\\UnicodeString' => $vendorDir . '/symfony/string/UnicodeString.php', - 'Symfony\\Contracts\\EventDispatcher\\Event' => $vendorDir . '/symfony/event-dispatcher-contracts/Event.php', - 'Symfony\\Contracts\\EventDispatcher\\EventDispatcherInterface' => $vendorDir . '/symfony/event-dispatcher-contracts/EventDispatcherInterface.php', - 'Symfony\\Contracts\\Service\\Attribute\\Required' => $vendorDir . '/symfony/service-contracts/Attribute/Required.php', - 'Symfony\\Contracts\\Service\\Attribute\\SubscribedService' => $vendorDir . '/symfony/service-contracts/Attribute/SubscribedService.php', - 'Symfony\\Contracts\\Service\\ResetInterface' => $vendorDir . '/symfony/service-contracts/ResetInterface.php', - 'Symfony\\Contracts\\Service\\ServiceLocatorTrait' => $vendorDir . '/symfony/service-contracts/ServiceLocatorTrait.php', - 'Symfony\\Contracts\\Service\\ServiceProviderInterface' => $vendorDir . '/symfony/service-contracts/ServiceProviderInterface.php', - 'Symfony\\Contracts\\Service\\ServiceSubscriberInterface' => $vendorDir . '/symfony/service-contracts/ServiceSubscriberInterface.php', - 'Symfony\\Contracts\\Service\\ServiceSubscriberTrait' => $vendorDir . '/symfony/service-contracts/ServiceSubscriberTrait.php', - 'Symfony\\Polyfill\\Ctype\\Ctype' => $vendorDir . '/symfony/polyfill-ctype/Ctype.php', - 'Symfony\\Polyfill\\Intl\\Grapheme\\Grapheme' => $vendorDir . '/symfony/polyfill-intl-grapheme/Grapheme.php', - 'Symfony\\Polyfill\\Intl\\Normalizer\\Normalizer' => $vendorDir . '/symfony/polyfill-intl-normalizer/Normalizer.php', - 'Symfony\\Polyfill\\Mbstring\\Mbstring' => $vendorDir . '/symfony/polyfill-mbstring/Mbstring.php', - 'Symfony\\Polyfill\\Php80\\Php80' => $vendorDir . '/symfony/polyfill-php80/Php80.php', - 'Symfony\\Polyfill\\Php80\\PhpToken' => $vendorDir . '/symfony/polyfill-php80/PhpToken.php', - 'Symfony\\Polyfill\\Php81\\Php81' => $vendorDir . '/symfony/polyfill-php81/Php81.php', - 'UnhandledMatchError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php', - 'ValueError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/ValueError.php', ); diff --git a/src/vendor/composer/autoload_files.php b/src/vendor/composer/autoload_files.php deleted file mode 100644 index dc8745d..0000000 --- a/src/vendor/composer/autoload_files.php +++ /dev/null @@ -1,17 +0,0 @@ - $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php', - '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php', - '6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php', - '8825ede83f2f289127722d4e842cf7e8' => $vendorDir . '/symfony/polyfill-intl-grapheme/bootstrap.php', - 'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php', - 'b6b991a57620e2fb6b2f66f03fe9ddc2' => $vendorDir . '/symfony/string/Resources/functions.php', - 'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php', - '23c18046f52bef3eea034657bafda50f' => $vendorDir . '/symfony/polyfill-php81/bootstrap.php', -); diff --git a/src/vendor/composer/autoload_namespaces.php b/src/vendor/composer/autoload_namespaces.php index 15a2ff3..b7fc012 100644 --- a/src/vendor/composer/autoload_namespaces.php +++ b/src/vendor/composer/autoload_namespaces.php @@ -2,7 +2,7 @@ // autoload_namespaces.php @generated by Composer -$vendorDir = dirname(__DIR__); +$vendorDir = dirname(dirname(__FILE__)); $baseDir = dirname($vendorDir); return array( diff --git a/src/vendor/composer/autoload_psr4.php b/src/vendor/composer/autoload_psr4.php index 3fd7e20..efecb4f 100644 --- a/src/vendor/composer/autoload_psr4.php +++ b/src/vendor/composer/autoload_psr4.php @@ -2,37 +2,10 @@ // autoload_psr4.php @generated by Composer -$vendorDir = dirname(__DIR__); +$vendorDir = dirname(dirname(__FILE__)); $baseDir = dirname($vendorDir); return array( - 'Symfony\\Polyfill\\Php81\\' => array($vendorDir . '/symfony/polyfill-php81'), - 'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'), - 'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'), - 'Symfony\\Polyfill\\Intl\\Normalizer\\' => array($vendorDir . '/symfony/polyfill-intl-normalizer'), - 'Symfony\\Polyfill\\Intl\\Grapheme\\' => array($vendorDir . '/symfony/polyfill-intl-grapheme'), - 'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'), - 'Symfony\\Contracts\\Service\\' => array($vendorDir . '/symfony/service-contracts'), - 'Symfony\\Contracts\\EventDispatcher\\' => array($vendorDir . '/symfony/event-dispatcher-contracts'), - 'Symfony\\Component\\String\\' => array($vendorDir . '/symfony/string'), - 'Symfony\\Component\\Stopwatch\\' => array($vendorDir . '/symfony/stopwatch'), - 'Symfony\\Component\\Process\\' => array($vendorDir . '/symfony/process'), - 'Symfony\\Component\\OptionsResolver\\' => array($vendorDir . '/symfony/options-resolver'), - 'Symfony\\Component\\Finder\\' => array($vendorDir . '/symfony/finder'), - 'Symfony\\Component\\Filesystem\\' => array($vendorDir . '/symfony/filesystem'), - 'Symfony\\Component\\EventDispatcher\\' => array($vendorDir . '/symfony/event-dispatcher'), - 'Symfony\\Component\\Console\\' => array($vendorDir . '/symfony/console'), - 'Psr\\Log\\' => array($vendorDir . '/psr/log/src'), - 'Psr\\EventDispatcher\\' => array($vendorDir . '/psr/event-dispatcher/src'), - 'Psr\\Container\\' => array($vendorDir . '/psr/container/src'), 'PrestaShop\\Module\\SmailyForPrestaShop\\Lib\\' => array($baseDir . '/lib'), 'PrestaShop\\Module\\SmailyForPrestaShop\\' => array($baseDir . '/src'), - 'PrestaShop\\HeaderStamp\\' => array($vendorDir . '/prestashop/header-stamp/src'), - 'PrestaShop\\CodingStandards\\' => array($vendorDir . '/prestashop/php-dev-tools/src'), - 'PrestaShop\\AutoIndex\\' => array($vendorDir . '/prestashop/autoindex/src'), - 'PhpParser\\' => array($vendorDir . '/nikic/php-parser/lib/PhpParser'), - 'PhpCsFixer\\' => array($vendorDir . '/friendsofphp/php-cs-fixer/src'), - 'Composer\\XdebugHandler\\' => array($vendorDir . '/composer/xdebug-handler/src'), - 'Composer\\Semver\\' => array($vendorDir . '/composer/semver/src'), - 'Composer\\Pcre\\' => array($vendorDir . '/composer/pcre/src'), ); diff --git a/src/vendor/composer/autoload_real.php b/src/vendor/composer/autoload_real.php index 952f8b0..a2447d2 100644 --- a/src/vendor/composer/autoload_real.php +++ b/src/vendor/composer/autoload_real.php @@ -2,7 +2,7 @@ // autoload_real.php @generated by Composer -class ComposerAutoloaderInite1765f078aa62628913827ce651850ac +class ComposerAutoloaderInit0561655749add06403fad08441d54811 { private static $loader; @@ -24,27 +24,34 @@ public static function getLoader() require __DIR__ . '/platform_check.php'; - spl_autoload_register(array('ComposerAutoloaderInite1765f078aa62628913827ce651850ac', 'loadClassLoader'), true, false); - self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); - spl_autoload_unregister(array('ComposerAutoloaderInite1765f078aa62628913827ce651850ac', 'loadClassLoader')); + spl_autoload_register(array('ComposerAutoloaderInit0561655749add06403fad08441d54811', 'loadClassLoader'), true, false); + self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__))); + spl_autoload_unregister(array('ComposerAutoloaderInit0561655749add06403fad08441d54811', 'loadClassLoader')); - require __DIR__ . '/autoload_static.php'; - call_user_func(\Composer\Autoload\ComposerStaticInite1765f078aa62628913827ce651850ac::getInitializer($loader)); + $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'; - $loader->register(false); + call_user_func(\Composer\Autoload\ComposerStaticInit0561655749add06403fad08441d54811::getInitializer($loader)); + } else { + $map = require __DIR__ . '/autoload_namespaces.php'; + foreach ($map as $namespace => $path) { + $loader->set($namespace, $path); + } - $filesToLoad = \Composer\Autoload\ComposerStaticInite1765f078aa62628913827ce651850ac::$files; - $requireFile = \Closure::bind(static function ($fileIdentifier, $file) { - if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { - $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; + $map = require __DIR__ . '/autoload_psr4.php'; + foreach ($map as $namespace => $path) { + $loader->setPsr4($namespace, $path); + } - require $file; + $classMap = require __DIR__ . '/autoload_classmap.php'; + if ($classMap) { + $loader->addClassMap($classMap); } - }, null, null); - foreach ($filesToLoad as $fileIdentifier => $file) { - $requireFile($fileIdentifier, $file); } + $loader->register(false); + return $loader; } } diff --git a/src/vendor/composer/autoload_static.php b/src/vendor/composer/autoload_static.php index 964caa1..fde3bf4 100644 --- a/src/vendor/composer/autoload_static.php +++ b/src/vendor/composer/autoload_static.php @@ -4,137 +4,17 @@ namespace Composer\Autoload; -class ComposerStaticInite1765f078aa62628913827ce651850ac +class ComposerStaticInit0561655749add06403fad08441d54811 { - public static $files = array ( - '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php', - '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php', - '6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php', - '8825ede83f2f289127722d4e842cf7e8' => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme/bootstrap.php', - 'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/bootstrap.php', - 'b6b991a57620e2fb6b2f66f03fe9ddc2' => __DIR__ . '/..' . '/symfony/string/Resources/functions.php', - 'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php', - '23c18046f52bef3eea034657bafda50f' => __DIR__ . '/..' . '/symfony/polyfill-php81/bootstrap.php', - ); - public static $prefixLengthsPsr4 = array ( - 'S' => - array ( - 'Symfony\\Polyfill\\Php81\\' => 23, - 'Symfony\\Polyfill\\Php80\\' => 23, - 'Symfony\\Polyfill\\Mbstring\\' => 26, - 'Symfony\\Polyfill\\Intl\\Normalizer\\' => 33, - 'Symfony\\Polyfill\\Intl\\Grapheme\\' => 31, - 'Symfony\\Polyfill\\Ctype\\' => 23, - 'Symfony\\Contracts\\Service\\' => 26, - 'Symfony\\Contracts\\EventDispatcher\\' => 34, - 'Symfony\\Component\\String\\' => 25, - 'Symfony\\Component\\Stopwatch\\' => 28, - 'Symfony\\Component\\Process\\' => 26, - 'Symfony\\Component\\OptionsResolver\\' => 34, - 'Symfony\\Component\\Finder\\' => 25, - 'Symfony\\Component\\Filesystem\\' => 29, - 'Symfony\\Component\\EventDispatcher\\' => 34, - 'Symfony\\Component\\Console\\' => 26, - ), 'P' => array ( - 'Psr\\Log\\' => 8, - 'Psr\\EventDispatcher\\' => 20, - 'Psr\\Container\\' => 14, 'PrestaShop\\Module\\SmailyForPrestaShop\\Lib\\' => 42, 'PrestaShop\\Module\\SmailyForPrestaShop\\' => 38, - 'PrestaShop\\HeaderStamp\\' => 23, - 'PrestaShop\\CodingStandards\\' => 27, - 'PrestaShop\\AutoIndex\\' => 21, - 'PhpParser\\' => 10, - 'PhpCsFixer\\' => 11, - ), - 'C' => - array ( - 'Composer\\XdebugHandler\\' => 23, - 'Composer\\Semver\\' => 16, - 'Composer\\Pcre\\' => 14, ), ); public static $prefixDirsPsr4 = array ( - 'Symfony\\Polyfill\\Php81\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-php81', - ), - 'Symfony\\Polyfill\\Php80\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-php80', - ), - 'Symfony\\Polyfill\\Mbstring\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring', - ), - 'Symfony\\Polyfill\\Intl\\Normalizer\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer', - ), - 'Symfony\\Polyfill\\Intl\\Grapheme\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme', - ), - 'Symfony\\Polyfill\\Ctype\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-ctype', - ), - 'Symfony\\Contracts\\Service\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/service-contracts', - ), - 'Symfony\\Contracts\\EventDispatcher\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/event-dispatcher-contracts', - ), - 'Symfony\\Component\\String\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/string', - ), - 'Symfony\\Component\\Stopwatch\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/stopwatch', - ), - 'Symfony\\Component\\Process\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/process', - ), - 'Symfony\\Component\\OptionsResolver\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/options-resolver', - ), - 'Symfony\\Component\\Finder\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/finder', - ), - 'Symfony\\Component\\Filesystem\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/filesystem', - ), - 'Symfony\\Component\\EventDispatcher\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/event-dispatcher', - ), - 'Symfony\\Component\\Console\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/console', - ), - 'Psr\\Log\\' => - array ( - 0 => __DIR__ . '/..' . '/psr/log/src', - ), - 'Psr\\EventDispatcher\\' => - array ( - 0 => __DIR__ . '/..' . '/psr/event-dispatcher/src', - ), - 'Psr\\Container\\' => - array ( - 0 => __DIR__ . '/..' . '/psr/container/src', - ), 'PrestaShop\\Module\\SmailyForPrestaShop\\Lib\\' => array ( 0 => __DIR__ . '/../..' . '/lib', @@ -143,1171 +23,18 @@ class ComposerStaticInite1765f078aa62628913827ce651850ac array ( 0 => __DIR__ . '/../..' . '/src', ), - 'PrestaShop\\HeaderStamp\\' => - array ( - 0 => __DIR__ . '/..' . '/prestashop/header-stamp/src', - ), - 'PrestaShop\\CodingStandards\\' => - array ( - 0 => __DIR__ . '/..' . '/prestashop/php-dev-tools/src', - ), - 'PrestaShop\\AutoIndex\\' => - array ( - 0 => __DIR__ . '/..' . '/prestashop/autoindex/src', - ), - 'PhpParser\\' => - array ( - 0 => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser', - ), - 'PhpCsFixer\\' => - array ( - 0 => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src', - ), - 'Composer\\XdebugHandler\\' => - array ( - 0 => __DIR__ . '/..' . '/composer/xdebug-handler/src', - ), - 'Composer\\Semver\\' => - array ( - 0 => __DIR__ . '/..' . '/composer/semver/src', - ), - 'Composer\\Pcre\\' => - array ( - 0 => __DIR__ . '/..' . '/composer/pcre/src', - ), ); public static $classMap = array ( - 'Attribute' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Attribute.php', - 'CURLStringFile' => __DIR__ . '/..' . '/symfony/polyfill-php81/Resources/stubs/CURLStringFile.php', 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', - 'Composer\\Pcre\\MatchAllResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchAllResult.php', - 'Composer\\Pcre\\MatchAllStrictGroupsResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchAllStrictGroupsResult.php', - 'Composer\\Pcre\\MatchAllWithOffsetsResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchAllWithOffsetsResult.php', - 'Composer\\Pcre\\MatchResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchResult.php', - 'Composer\\Pcre\\MatchStrictGroupsResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchStrictGroupsResult.php', - 'Composer\\Pcre\\MatchWithOffsetsResult' => __DIR__ . '/..' . '/composer/pcre/src/MatchWithOffsetsResult.php', - 'Composer\\Pcre\\PcreException' => __DIR__ . '/..' . '/composer/pcre/src/PcreException.php', - 'Composer\\Pcre\\Preg' => __DIR__ . '/..' . '/composer/pcre/src/Preg.php', - 'Composer\\Pcre\\Regex' => __DIR__ . '/..' . '/composer/pcre/src/Regex.php', - 'Composer\\Pcre\\ReplaceResult' => __DIR__ . '/..' . '/composer/pcre/src/ReplaceResult.php', - 'Composer\\Pcre\\UnexpectedNullMatchException' => __DIR__ . '/..' . '/composer/pcre/src/UnexpectedNullMatchException.php', - 'Composer\\Semver\\Comparator' => __DIR__ . '/..' . '/composer/semver/src/Comparator.php', - 'Composer\\Semver\\CompilingMatcher' => __DIR__ . '/..' . '/composer/semver/src/CompilingMatcher.php', - 'Composer\\Semver\\Constraint\\Bound' => __DIR__ . '/..' . '/composer/semver/src/Constraint/Bound.php', - 'Composer\\Semver\\Constraint\\Constraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/Constraint.php', - 'Composer\\Semver\\Constraint\\ConstraintInterface' => __DIR__ . '/..' . '/composer/semver/src/Constraint/ConstraintInterface.php', - 'Composer\\Semver\\Constraint\\MatchAllConstraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/MatchAllConstraint.php', - 'Composer\\Semver\\Constraint\\MatchNoneConstraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/MatchNoneConstraint.php', - 'Composer\\Semver\\Constraint\\MultiConstraint' => __DIR__ . '/..' . '/composer/semver/src/Constraint/MultiConstraint.php', - 'Composer\\Semver\\Interval' => __DIR__ . '/..' . '/composer/semver/src/Interval.php', - 'Composer\\Semver\\Intervals' => __DIR__ . '/..' . '/composer/semver/src/Intervals.php', - 'Composer\\Semver\\Semver' => __DIR__ . '/..' . '/composer/semver/src/Semver.php', - 'Composer\\Semver\\VersionParser' => __DIR__ . '/..' . '/composer/semver/src/VersionParser.php', - 'Composer\\XdebugHandler\\PhpConfig' => __DIR__ . '/..' . '/composer/xdebug-handler/src/PhpConfig.php', - 'Composer\\XdebugHandler\\Process' => __DIR__ . '/..' . '/composer/xdebug-handler/src/Process.php', - 'Composer\\XdebugHandler\\Status' => __DIR__ . '/..' . '/composer/xdebug-handler/src/Status.php', - 'Composer\\XdebugHandler\\XdebugHandler' => __DIR__ . '/..' . '/composer/xdebug-handler/src/XdebugHandler.php', - 'Normalizer' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php', - 'PhpCsFixer\\AbstractDoctrineAnnotationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/AbstractDoctrineAnnotationFixer.php', - 'PhpCsFixer\\AbstractFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/AbstractFixer.php', - 'PhpCsFixer\\AbstractFopenFlagFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/AbstractFopenFlagFixer.php', - 'PhpCsFixer\\AbstractFunctionReferenceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/AbstractFunctionReferenceFixer.php', - 'PhpCsFixer\\AbstractNoUselessElseFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/AbstractNoUselessElseFixer.php', - 'PhpCsFixer\\AbstractPhpdocToTypeDeclarationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/AbstractPhpdocToTypeDeclarationFixer.php', - 'PhpCsFixer\\AbstractPhpdocTypesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/AbstractPhpdocTypesFixer.php', - 'PhpCsFixer\\AbstractProxyFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/AbstractProxyFixer.php', - 'PhpCsFixer\\Cache\\Cache' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/Cache.php', - 'PhpCsFixer\\Cache\\CacheInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/CacheInterface.php', - 'PhpCsFixer\\Cache\\CacheManagerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/CacheManagerInterface.php', - 'PhpCsFixer\\Cache\\Directory' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/Directory.php', - 'PhpCsFixer\\Cache\\DirectoryInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/DirectoryInterface.php', - 'PhpCsFixer\\Cache\\FileCacheManager' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/FileCacheManager.php', - 'PhpCsFixer\\Cache\\FileHandler' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/FileHandler.php', - 'PhpCsFixer\\Cache\\FileHandlerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/FileHandlerInterface.php', - 'PhpCsFixer\\Cache\\NullCacheManager' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/NullCacheManager.php', - 'PhpCsFixer\\Cache\\Signature' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/Signature.php', - 'PhpCsFixer\\Cache\\SignatureInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Cache/SignatureInterface.php', - 'PhpCsFixer\\Config' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Config.php', - 'PhpCsFixer\\ConfigInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/ConfigInterface.php', - 'PhpCsFixer\\ConfigurationException\\InvalidConfigurationException' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/ConfigurationException/InvalidConfigurationException.php', - 'PhpCsFixer\\ConfigurationException\\InvalidFixerConfigurationException' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/ConfigurationException/InvalidFixerConfigurationException.php', - 'PhpCsFixer\\ConfigurationException\\InvalidForEnvFixerConfigurationException' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/ConfigurationException/InvalidForEnvFixerConfigurationException.php', - 'PhpCsFixer\\ConfigurationException\\RequiredFixerConfigurationException' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/ConfigurationException/RequiredFixerConfigurationException.php', - 'PhpCsFixer\\Console\\Application' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Application.php', - 'PhpCsFixer\\Console\\Command\\CheckCommand' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Command/CheckCommand.php', - 'PhpCsFixer\\Console\\Command\\DescribeCommand' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Command/DescribeCommand.php', - 'PhpCsFixer\\Console\\Command\\DescribeNameNotFoundException' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Command/DescribeNameNotFoundException.php', - 'PhpCsFixer\\Console\\Command\\DocumentationCommand' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Command/DocumentationCommand.php', - 'PhpCsFixer\\Console\\Command\\FixCommand' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Command/FixCommand.php', - 'PhpCsFixer\\Console\\Command\\FixCommandExitStatusCalculator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Command/FixCommandExitStatusCalculator.php', - 'PhpCsFixer\\Console\\Command\\HelpCommand' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Command/HelpCommand.php', - 'PhpCsFixer\\Console\\Command\\ListFilesCommand' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Command/ListFilesCommand.php', - 'PhpCsFixer\\Console\\Command\\ListSetsCommand' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Command/ListSetsCommand.php', - 'PhpCsFixer\\Console\\Command\\SelfUpdateCommand' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Command/SelfUpdateCommand.php', - 'PhpCsFixer\\Console\\ConfigurationResolver' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/ConfigurationResolver.php', - 'PhpCsFixer\\Console\\Output\\ErrorOutput' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Output/ErrorOutput.php', - 'PhpCsFixer\\Console\\Output\\OutputContext' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Output/OutputContext.php', - 'PhpCsFixer\\Console\\Output\\Progress\\DotsOutput' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/DotsOutput.php', - 'PhpCsFixer\\Console\\Output\\Progress\\NullOutput' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/NullOutput.php', - 'PhpCsFixer\\Console\\Output\\Progress\\PercentageBarOutput' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/PercentageBarOutput.php', - 'PhpCsFixer\\Console\\Output\\Progress\\ProgressOutputFactory' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputFactory.php', - 'PhpCsFixer\\Console\\Output\\Progress\\ProgressOutputInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputInterface.php', - 'PhpCsFixer\\Console\\Output\\Progress\\ProgressOutputType' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputType.php', - 'PhpCsFixer\\Console\\Report\\FixReport\\CheckstyleReporter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/CheckstyleReporter.php', - 'PhpCsFixer\\Console\\Report\\FixReport\\GitlabReporter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/GitlabReporter.php', - 'PhpCsFixer\\Console\\Report\\FixReport\\JsonReporter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/JsonReporter.php', - 'PhpCsFixer\\Console\\Report\\FixReport\\JunitReporter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/JunitReporter.php', - 'PhpCsFixer\\Console\\Report\\FixReport\\ReportSummary' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/ReportSummary.php', - 'PhpCsFixer\\Console\\Report\\FixReport\\ReporterFactory' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/ReporterFactory.php', - 'PhpCsFixer\\Console\\Report\\FixReport\\ReporterInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/ReporterInterface.php', - 'PhpCsFixer\\Console\\Report\\FixReport\\TextReporter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/TextReporter.php', - 'PhpCsFixer\\Console\\Report\\FixReport\\XmlReporter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/XmlReporter.php', - 'PhpCsFixer\\Console\\Report\\ListSetsReport\\JsonReporter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/JsonReporter.php', - 'PhpCsFixer\\Console\\Report\\ListSetsReport\\ReportSummary' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/ReportSummary.php', - 'PhpCsFixer\\Console\\Report\\ListSetsReport\\ReporterFactory' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/ReporterFactory.php', - 'PhpCsFixer\\Console\\Report\\ListSetsReport\\ReporterInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/ReporterInterface.php', - 'PhpCsFixer\\Console\\Report\\ListSetsReport\\TextReporter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/TextReporter.php', - 'PhpCsFixer\\Console\\SelfUpdate\\GithubClient' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/GithubClient.php', - 'PhpCsFixer\\Console\\SelfUpdate\\GithubClientInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/GithubClientInterface.php', - 'PhpCsFixer\\Console\\SelfUpdate\\NewVersionChecker' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/NewVersionChecker.php', - 'PhpCsFixer\\Console\\SelfUpdate\\NewVersionCheckerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/NewVersionCheckerInterface.php', - 'PhpCsFixer\\Console\\WarningsDetector' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Console/WarningsDetector.php', - 'PhpCsFixer\\Differ\\DiffConsoleFormatter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Differ/DiffConsoleFormatter.php', - 'PhpCsFixer\\Differ\\DifferInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Differ/DifferInterface.php', - 'PhpCsFixer\\Differ\\FullDiffer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Differ/FullDiffer.php', - 'PhpCsFixer\\Differ\\NullDiffer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Differ/NullDiffer.php', - 'PhpCsFixer\\Differ\\UnifiedDiffer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Differ/UnifiedDiffer.php', - 'PhpCsFixer\\DocBlock\\Annotation' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/DocBlock/Annotation.php', - 'PhpCsFixer\\DocBlock\\DocBlock' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/DocBlock/DocBlock.php', - 'PhpCsFixer\\DocBlock\\Line' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/DocBlock/Line.php', - 'PhpCsFixer\\DocBlock\\ShortDescription' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/DocBlock/ShortDescription.php', - 'PhpCsFixer\\DocBlock\\Tag' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/DocBlock/Tag.php', - 'PhpCsFixer\\DocBlock\\TagComparator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/DocBlock/TagComparator.php', - 'PhpCsFixer\\DocBlock\\TypeExpression' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/DocBlock/TypeExpression.php', - 'PhpCsFixer\\Doctrine\\Annotation\\DocLexer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Doctrine/Annotation/DocLexer.php', - 'PhpCsFixer\\Doctrine\\Annotation\\Token' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Doctrine/Annotation/Token.php', - 'PhpCsFixer\\Doctrine\\Annotation\\Tokens' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Doctrine/Annotation/Tokens.php', - 'PhpCsFixer\\Documentation\\DocumentationLocator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Documentation/DocumentationLocator.php', - 'PhpCsFixer\\Documentation\\FixerDocumentGenerator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Documentation/FixerDocumentGenerator.php', - 'PhpCsFixer\\Documentation\\RstUtils' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Documentation/RstUtils.php', - 'PhpCsFixer\\Documentation\\RuleSetDocumentationGenerator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Documentation/RuleSetDocumentationGenerator.php', - 'PhpCsFixer\\Error\\Error' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Error/Error.php', - 'PhpCsFixer\\Error\\ErrorsManager' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Error/ErrorsManager.php', - 'PhpCsFixer\\ExecutorWithoutErrorHandler' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/ExecutorWithoutErrorHandler.php', - 'PhpCsFixer\\ExecutorWithoutErrorHandlerException' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/ExecutorWithoutErrorHandlerException.php', - 'PhpCsFixer\\FileReader' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FileReader.php', - 'PhpCsFixer\\FileRemoval' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FileRemoval.php', - 'PhpCsFixer\\Finder' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Finder.php', - 'PhpCsFixer\\FixerConfiguration\\AliasedFixerOption' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/AliasedFixerOption.php', - 'PhpCsFixer\\FixerConfiguration\\AliasedFixerOptionBuilder' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/AliasedFixerOptionBuilder.php', - 'PhpCsFixer\\FixerConfiguration\\AllowedValueSubset' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/AllowedValueSubset.php', - 'PhpCsFixer\\FixerConfiguration\\DeprecatedFixerOption' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/DeprecatedFixerOption.php', - 'PhpCsFixer\\FixerConfiguration\\DeprecatedFixerOptionInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/DeprecatedFixerOptionInterface.php', - 'PhpCsFixer\\FixerConfiguration\\FixerConfigurationResolver' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerConfigurationResolver.php', - 'PhpCsFixer\\FixerConfiguration\\FixerConfigurationResolverInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerConfigurationResolverInterface.php', - 'PhpCsFixer\\FixerConfiguration\\FixerOption' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerOption.php', - 'PhpCsFixer\\FixerConfiguration\\FixerOptionBuilder' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerOptionBuilder.php', - 'PhpCsFixer\\FixerConfiguration\\FixerOptionInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerOptionInterface.php', - 'PhpCsFixer\\FixerConfiguration\\FixerOptionSorter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/FixerOptionSorter.php', - 'PhpCsFixer\\FixerConfiguration\\InvalidOptionsForEnvException' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerConfiguration/InvalidOptionsForEnvException.php', - 'PhpCsFixer\\FixerDefinition\\CodeSample' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/CodeSample.php', - 'PhpCsFixer\\FixerDefinition\\CodeSampleInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/CodeSampleInterface.php', - 'PhpCsFixer\\FixerDefinition\\FileSpecificCodeSample' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/FileSpecificCodeSample.php', - 'PhpCsFixer\\FixerDefinition\\FileSpecificCodeSampleInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/FileSpecificCodeSampleInterface.php', - 'PhpCsFixer\\FixerDefinition\\FixerDefinition' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/FixerDefinition.php', - 'PhpCsFixer\\FixerDefinition\\FixerDefinitionInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/FixerDefinitionInterface.php', - 'PhpCsFixer\\FixerDefinition\\VersionSpecificCodeSample' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecificCodeSample.php', - 'PhpCsFixer\\FixerDefinition\\VersionSpecificCodeSampleInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecificCodeSampleInterface.php', - 'PhpCsFixer\\FixerDefinition\\VersionSpecification' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecification.php', - 'PhpCsFixer\\FixerDefinition\\VersionSpecificationInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecificationInterface.php', - 'PhpCsFixer\\FixerFactory' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerFactory.php', - 'PhpCsFixer\\FixerFileProcessedEvent' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerFileProcessedEvent.php', - 'PhpCsFixer\\FixerNameValidator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerNameValidator.php', - 'PhpCsFixer\\Fixer\\AbstractIncrementOperatorFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/AbstractIncrementOperatorFixer.php', - 'PhpCsFixer\\Fixer\\AbstractPhpUnitFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/AbstractPhpUnitFixer.php', - 'PhpCsFixer\\Fixer\\AbstractShortOperatorFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/AbstractShortOperatorFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\ArrayPushFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/ArrayPushFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\BacktickToShellExecFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/BacktickToShellExecFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\EregToPregFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/EregToPregFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\MbStrFunctionsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/MbStrFunctionsFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\ModernizeStrposFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/ModernizeStrposFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\NoAliasFunctionsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/NoAliasFunctionsFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\NoAliasLanguageConstructCallFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/NoAliasLanguageConstructCallFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\NoMixedEchoPrintFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/NoMixedEchoPrintFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\PowToExponentiationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/PowToExponentiationFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\RandomApiMigrationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/RandomApiMigrationFixer.php', - 'PhpCsFixer\\Fixer\\Alias\\SetTypeToCastFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Alias/SetTypeToCastFixer.php', - 'PhpCsFixer\\Fixer\\ArrayNotation\\ArraySyntaxFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/ArraySyntaxFixer.php', - 'PhpCsFixer\\Fixer\\ArrayNotation\\NoMultilineWhitespaceAroundDoubleArrowFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoMultilineWhitespaceAroundDoubleArrowFixer.php', - 'PhpCsFixer\\Fixer\\ArrayNotation\\NoTrailingCommaInSinglelineArrayFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoTrailingCommaInSinglelineArrayFixer.php', - 'PhpCsFixer\\Fixer\\ArrayNotation\\NoWhitespaceBeforeCommaInArrayFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoWhitespaceBeforeCommaInArrayFixer.php', - 'PhpCsFixer\\Fixer\\ArrayNotation\\NormalizeIndexBraceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NormalizeIndexBraceFixer.php', - 'PhpCsFixer\\Fixer\\ArrayNotation\\ReturnToYieldFromFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/ReturnToYieldFromFixer.php', - 'PhpCsFixer\\Fixer\\ArrayNotation\\TrimArraySpacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/TrimArraySpacesFixer.php', - 'PhpCsFixer\\Fixer\\ArrayNotation\\WhitespaceAfterCommaInArrayFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/WhitespaceAfterCommaInArrayFixer.php', - 'PhpCsFixer\\Fixer\\ArrayNotation\\YieldFromArrayToYieldsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/YieldFromArrayToYieldsFixer.php', - 'PhpCsFixer\\Fixer\\AttributeNotation\\AttributeEmptyParenthesesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/AttributeNotation/AttributeEmptyParenthesesFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\BracesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/BracesFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\BracesPositionFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/BracesPositionFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\CurlyBracesPositionFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/CurlyBracesPositionFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\EncodingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/EncodingFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\NoMultipleStatementsPerLineFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/NoMultipleStatementsPerLineFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\NoTrailingCommaInSinglelineFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/NoTrailingCommaInSinglelineFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\NonPrintableCharacterFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/NonPrintableCharacterFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\NumericLiteralSeparatorFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/NumericLiteralSeparatorFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\OctalNotationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/OctalNotationFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\PsrAutoloadingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/PsrAutoloadingFixer.php', - 'PhpCsFixer\\Fixer\\Basic\\SingleLineEmptyBodyFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/SingleLineEmptyBodyFixer.php', - 'PhpCsFixer\\Fixer\\Casing\\ClassReferenceNameCasingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/ClassReferenceNameCasingFixer.php', - 'PhpCsFixer\\Fixer\\Casing\\ConstantCaseFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/ConstantCaseFixer.php', - 'PhpCsFixer\\Fixer\\Casing\\IntegerLiteralCaseFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/IntegerLiteralCaseFixer.php', - 'PhpCsFixer\\Fixer\\Casing\\LowercaseKeywordsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/LowercaseKeywordsFixer.php', - 'PhpCsFixer\\Fixer\\Casing\\LowercaseStaticReferenceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/LowercaseStaticReferenceFixer.php', - 'PhpCsFixer\\Fixer\\Casing\\MagicConstantCasingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/MagicConstantCasingFixer.php', - 'PhpCsFixer\\Fixer\\Casing\\MagicMethodCasingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/MagicMethodCasingFixer.php', - 'PhpCsFixer\\Fixer\\Casing\\NativeFunctionCasingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/NativeFunctionCasingFixer.php', - 'PhpCsFixer\\Fixer\\Casing\\NativeFunctionTypeDeclarationCasingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/NativeFunctionTypeDeclarationCasingFixer.php', - 'PhpCsFixer\\Fixer\\Casing\\NativeTypeDeclarationCasingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Casing/NativeTypeDeclarationCasingFixer.php', - 'PhpCsFixer\\Fixer\\CastNotation\\CastSpacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/CastSpacesFixer.php', - 'PhpCsFixer\\Fixer\\CastNotation\\LowercaseCastFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/LowercaseCastFixer.php', - 'PhpCsFixer\\Fixer\\CastNotation\\ModernizeTypesCastingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/ModernizeTypesCastingFixer.php', - 'PhpCsFixer\\Fixer\\CastNotation\\NoShortBoolCastFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/NoShortBoolCastFixer.php', - 'PhpCsFixer\\Fixer\\CastNotation\\NoUnsetCastFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/NoUnsetCastFixer.php', - 'PhpCsFixer\\Fixer\\CastNotation\\ShortScalarCastFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/CastNotation/ShortScalarCastFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\ClassAttributesSeparationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ClassAttributesSeparationFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\ClassDefinitionFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ClassDefinitionFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\FinalClassFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/FinalClassFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\FinalInternalClassFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/FinalInternalClassFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\FinalPublicMethodForAbstractClassFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/FinalPublicMethodForAbstractClassFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\NoBlankLinesAfterClassOpeningFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoBlankLinesAfterClassOpeningFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\NoNullPropertyInitializationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoNullPropertyInitializationFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\NoPhp4ConstructorFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoPhp4ConstructorFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\NoUnneededFinalMethodFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/NoUnneededFinalMethodFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\OrderedClassElementsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedClassElementsFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\OrderedInterfacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedInterfacesFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\OrderedTraitsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedTraitsFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\OrderedTypesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/OrderedTypesFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\PhpdocReadonlyClassCommentToKeywordFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/PhpdocReadonlyClassCommentToKeywordFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\ProtectedToPrivateFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/ProtectedToPrivateFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\SelfAccessorFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SelfAccessorFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\SelfStaticAccessorFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SelfStaticAccessorFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\SingleClassElementPerStatementFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SingleClassElementPerStatementFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\SingleTraitInsertPerStatementFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/SingleTraitInsertPerStatementFixer.php', - 'PhpCsFixer\\Fixer\\ClassNotation\\VisibilityRequiredFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassNotation/VisibilityRequiredFixer.php', - 'PhpCsFixer\\Fixer\\ClassUsage\\DateTimeImmutableFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ClassUsage/DateTimeImmutableFixer.php', - 'PhpCsFixer\\Fixer\\Comment\\CommentToPhpdocFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/CommentToPhpdocFixer.php', - 'PhpCsFixer\\Fixer\\Comment\\HeaderCommentFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/HeaderCommentFixer.php', - 'PhpCsFixer\\Fixer\\Comment\\MultilineCommentOpeningClosingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/MultilineCommentOpeningClosingFixer.php', - 'PhpCsFixer\\Fixer\\Comment\\NoEmptyCommentFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/NoEmptyCommentFixer.php', - 'PhpCsFixer\\Fixer\\Comment\\NoTrailingWhitespaceInCommentFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/NoTrailingWhitespaceInCommentFixer.php', - 'PhpCsFixer\\Fixer\\Comment\\SingleLineCommentSpacingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/SingleLineCommentSpacingFixer.php', - 'PhpCsFixer\\Fixer\\Comment\\SingleLineCommentStyleFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Comment/SingleLineCommentStyleFixer.php', - 'PhpCsFixer\\Fixer\\ConfigurableFixerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ConfigurableFixerInterface.php', - 'PhpCsFixer\\Fixer\\ConstantNotation\\NativeConstantInvocationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ConstantNotation/NativeConstantInvocationFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\ControlStructureBracesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/ControlStructureBracesFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\ControlStructureContinuationPositionFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/ControlStructureContinuationPositionFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\ElseifFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/ElseifFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\EmptyLoopBodyFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/EmptyLoopBodyFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\EmptyLoopConditionFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/EmptyLoopConditionFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\IncludeFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/IncludeFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\NoAlternativeSyntaxFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoAlternativeSyntaxFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\NoBreakCommentFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoBreakCommentFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\NoSuperfluousElseifFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoSuperfluousElseifFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\NoTrailingCommaInListCallFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoTrailingCommaInListCallFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\NoUnneededBracesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoUnneededBracesFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\NoUnneededControlParenthesesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoUnneededControlParenthesesFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\NoUnneededCurlyBracesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoUnneededCurlyBracesFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\NoUselessElseFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/NoUselessElseFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\SimplifiedIfReturnFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/SimplifiedIfReturnFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\SwitchCaseSemicolonToColonFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/SwitchCaseSemicolonToColonFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\SwitchCaseSpaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/SwitchCaseSpaceFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\SwitchContinueToBreakFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/SwitchContinueToBreakFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\TrailingCommaInMultilineFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/TrailingCommaInMultilineFixer.php', - 'PhpCsFixer\\Fixer\\ControlStructure\\YodaStyleFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ControlStructure/YodaStyleFixer.php', - 'PhpCsFixer\\Fixer\\DeprecatedFixerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/DeprecatedFixerInterface.php', - 'PhpCsFixer\\Fixer\\DoctrineAnnotation\\DoctrineAnnotationArrayAssignmentFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationArrayAssignmentFixer.php', - 'PhpCsFixer\\Fixer\\DoctrineAnnotation\\DoctrineAnnotationBracesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationBracesFixer.php', - 'PhpCsFixer\\Fixer\\DoctrineAnnotation\\DoctrineAnnotationIndentationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationIndentationFixer.php', - 'PhpCsFixer\\Fixer\\DoctrineAnnotation\\DoctrineAnnotationSpacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/DoctrineAnnotation/DoctrineAnnotationSpacesFixer.php', - 'PhpCsFixer\\Fixer\\ExperimentalFixerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ExperimentalFixerInterface.php', - 'PhpCsFixer\\Fixer\\FixerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FixerInterface.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\CombineNestedDirnameFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/CombineNestedDirnameFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\DateTimeCreateFromFormatCallFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/DateTimeCreateFromFormatCallFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\FopenFlagOrderFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FopenFlagOrderFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\FopenFlagsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FopenFlagsFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\FunctionDeclarationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FunctionDeclarationFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\FunctionTypehintSpaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/FunctionTypehintSpaceFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\ImplodeCallFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/ImplodeCallFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\LambdaNotUsedImportFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/LambdaNotUsedImportFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\MethodArgumentSpaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/MethodArgumentSpaceFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\NativeFunctionInvocationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NativeFunctionInvocationFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\NoSpacesAfterFunctionNameFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoSpacesAfterFunctionNameFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\NoTrailingCommaInSinglelineFunctionCallFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoTrailingCommaInSinglelineFunctionCallFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\NoUnreachableDefaultArgumentValueFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoUnreachableDefaultArgumentValueFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\NoUselessSprintfFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NoUselessSprintfFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\NullableTypeDeclarationForDefaultNullValueFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/NullableTypeDeclarationForDefaultNullValueFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\PhpdocToParamTypeFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/PhpdocToParamTypeFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\PhpdocToPropertyTypeFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/PhpdocToPropertyTypeFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\PhpdocToReturnTypeFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/PhpdocToReturnTypeFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\RegularCallableCallFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/RegularCallableCallFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\ReturnTypeDeclarationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/ReturnTypeDeclarationFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\SingleLineThrowFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/SingleLineThrowFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\StaticLambdaFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/StaticLambdaFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\UseArrowFunctionsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/UseArrowFunctionsFixer.php', - 'PhpCsFixer\\Fixer\\FunctionNotation\\VoidReturnFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/FunctionNotation/VoidReturnFixer.php', - 'PhpCsFixer\\Fixer\\Import\\FullyQualifiedStrictTypesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Import/FullyQualifiedStrictTypesFixer.php', - 'PhpCsFixer\\Fixer\\Import\\GlobalNamespaceImportFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Import/GlobalNamespaceImportFixer.php', - 'PhpCsFixer\\Fixer\\Import\\GroupImportFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Import/GroupImportFixer.php', - 'PhpCsFixer\\Fixer\\Import\\NoLeadingImportSlashFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Import/NoLeadingImportSlashFixer.php', - 'PhpCsFixer\\Fixer\\Import\\NoUnneededImportAliasFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Import/NoUnneededImportAliasFixer.php', - 'PhpCsFixer\\Fixer\\Import\\NoUnusedImportsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Import/NoUnusedImportsFixer.php', - 'PhpCsFixer\\Fixer\\Import\\OrderedImportsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Import/OrderedImportsFixer.php', - 'PhpCsFixer\\Fixer\\Import\\SingleImportPerStatementFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Import/SingleImportPerStatementFixer.php', - 'PhpCsFixer\\Fixer\\Import\\SingleLineAfterImportsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Import/SingleLineAfterImportsFixer.php', - 'PhpCsFixer\\Fixer\\Indentation' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Indentation.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\ClassKeywordFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/ClassKeywordFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\ClassKeywordRemoveFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/ClassKeywordRemoveFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\CombineConsecutiveIssetsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/CombineConsecutiveIssetsFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\CombineConsecutiveUnsetsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/CombineConsecutiveUnsetsFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\DeclareEqualNormalizeFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/DeclareEqualNormalizeFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\DeclareParenthesesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/DeclareParenthesesFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\DirConstantFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/DirConstantFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\ErrorSuppressionFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/ErrorSuppressionFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\ExplicitIndirectVariableFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/ExplicitIndirectVariableFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\FunctionToConstantFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/FunctionToConstantFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\GetClassToClassKeywordFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/GetClassToClassKeywordFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\IsNullFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/IsNullFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\NoUnsetOnPropertyFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/NoUnsetOnPropertyFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\NullableTypeDeclarationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/NullableTypeDeclarationFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\SingleSpaceAfterConstructFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/SingleSpaceAfterConstructFixer.php', - 'PhpCsFixer\\Fixer\\LanguageConstruct\\SingleSpaceAroundConstructFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/LanguageConstruct/SingleSpaceAroundConstructFixer.php', - 'PhpCsFixer\\Fixer\\ListNotation\\ListSyntaxFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ListNotation/ListSyntaxFixer.php', - 'PhpCsFixer\\Fixer\\NamespaceNotation\\BlankLineAfterNamespaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/BlankLineAfterNamespaceFixer.php', - 'PhpCsFixer\\Fixer\\NamespaceNotation\\BlankLinesBeforeNamespaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/BlankLinesBeforeNamespaceFixer.php', - 'PhpCsFixer\\Fixer\\NamespaceNotation\\CleanNamespaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/CleanNamespaceFixer.php', - 'PhpCsFixer\\Fixer\\NamespaceNotation\\NoBlankLinesBeforeNamespaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/NoBlankLinesBeforeNamespaceFixer.php', - 'PhpCsFixer\\Fixer\\NamespaceNotation\\NoLeadingNamespaceWhitespaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/NoLeadingNamespaceWhitespaceFixer.php', - 'PhpCsFixer\\Fixer\\NamespaceNotation\\SingleBlankLineBeforeNamespaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/NamespaceNotation/SingleBlankLineBeforeNamespaceFixer.php', - 'PhpCsFixer\\Fixer\\Naming\\NoHomoglyphNamesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Naming/NoHomoglyphNamesFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\AssignNullCoalescingToCoalesceEqualFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/AssignNullCoalescingToCoalesceEqualFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\BinaryOperatorSpacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/BinaryOperatorSpacesFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\ConcatSpaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/ConcatSpaceFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\IncrementStyleFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/IncrementStyleFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\LogicalOperatorsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/LogicalOperatorsFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\LongToShorthandOperatorFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/LongToShorthandOperatorFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\NewWithBracesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NewWithBracesFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\NewWithParenthesesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NewWithParenthesesFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\NoSpaceAroundDoubleColonFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NoSpaceAroundDoubleColonFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\NoUselessConcatOperatorFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NoUselessConcatOperatorFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\NoUselessNullsafeOperatorFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NoUselessNullsafeOperatorFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\NotOperatorWithSpaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NotOperatorWithSpaceFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\NotOperatorWithSuccessorSpaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/NotOperatorWithSuccessorSpaceFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\ObjectOperatorWithoutWhitespaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/ObjectOperatorWithoutWhitespaceFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\OperatorLinebreakFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/OperatorLinebreakFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\StandardizeIncrementFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/StandardizeIncrementFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\StandardizeNotEqualsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/StandardizeNotEqualsFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\TernaryOperatorSpacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/TernaryOperatorSpacesFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\TernaryToElvisOperatorFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/TernaryToElvisOperatorFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\TernaryToNullCoalescingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/TernaryToNullCoalescingFixer.php', - 'PhpCsFixer\\Fixer\\Operator\\UnaryOperatorSpacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Operator/UnaryOperatorSpacesFixer.php', - 'PhpCsFixer\\Fixer\\PhpTag\\BlankLineAfterOpeningTagFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/BlankLineAfterOpeningTagFixer.php', - 'PhpCsFixer\\Fixer\\PhpTag\\EchoTagSyntaxFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/EchoTagSyntaxFixer.php', - 'PhpCsFixer\\Fixer\\PhpTag\\FullOpeningTagFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/FullOpeningTagFixer.php', - 'PhpCsFixer\\Fixer\\PhpTag\\LinebreakAfterOpeningTagFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/LinebreakAfterOpeningTagFixer.php', - 'PhpCsFixer\\Fixer\\PhpTag\\NoClosingTagFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpTag/NoClosingTagFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitConstructFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitConstructFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDataProviderNameFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderNameFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDataProviderReturnTypeFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderReturnTypeFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDataProviderStaticFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderStaticFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDedicateAssertFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDedicateAssertFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDedicateAssertInternalTypeFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDedicateAssertInternalTypeFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitExpectationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitExpectationFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitFqcnAnnotationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitFqcnAnnotationFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitInternalClassFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitInternalClassFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitMethodCasingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitMethodCasingFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitMockFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitMockFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitMockShortWillReturnFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitMockShortWillReturnFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitNamespacedFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitNamespacedFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitNoExpectationAnnotationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitNoExpectationAnnotationFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitSetUpTearDownVisibilityFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitSetUpTearDownVisibilityFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitSizeClassFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitSizeClassFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitStrictFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitStrictFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitTargetVersion' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTargetVersion.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitTestAnnotationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTestAnnotationFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitTestCaseStaticMethodCallsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTestCaseStaticMethodCallsFixer.php', - 'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitTestClassRequiresCoversFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitTestClassRequiresCoversFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\AlignMultilineCommentFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/AlignMultilineCommentFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\GeneralPhpdocAnnotationRemoveFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/GeneralPhpdocAnnotationRemoveFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\GeneralPhpdocTagRenameFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/GeneralPhpdocTagRenameFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\NoBlankLinesAfterPhpdocFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/NoBlankLinesAfterPhpdocFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\NoEmptyPhpdocFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/NoEmptyPhpdocFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\NoSuperfluousPhpdocTagsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/NoSuperfluousPhpdocTagsFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocAddMissingParamAnnotationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocAddMissingParamAnnotationFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocAlignFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocAlignFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocAnnotationWithoutDotFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocAnnotationWithoutDotFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocArrayTypeFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocArrayTypeFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocIndentFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocIndentFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocInlineTagNormalizerFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocInlineTagNormalizerFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocLineSpanFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocLineSpanFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocListTypeFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocListTypeFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoAccessFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoAccessFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoAliasTagFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoAliasTagFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoEmptyReturnFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoEmptyReturnFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoPackageFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoPackageFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocNoUselessInheritdocFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocNoUselessInheritdocFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocOrderByValueFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocOrderByValueFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocOrderFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocOrderFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocParamOrderFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocParamOrderFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocReturnSelfReferenceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocReturnSelfReferenceFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocScalarFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocScalarFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocSeparationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocSeparationFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocSingleLineVarSpacingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocSingleLineVarSpacingFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocSummaryFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocSummaryFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTagCasingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTagCasingFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTagTypeFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTagTypeFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocToCommentFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocToCommentFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTrimConsecutiveBlankLineSeparationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTrimConsecutiveBlankLineSeparationFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTrimFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTrimFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTypesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTypesFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocTypesOrderFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocTypesOrderFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocVarAnnotationCorrectOrderFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocVarAnnotationCorrectOrderFixer.php', - 'PhpCsFixer\\Fixer\\Phpdoc\\PhpdocVarWithoutNameFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Phpdoc/PhpdocVarWithoutNameFixer.php', - 'PhpCsFixer\\Fixer\\ReturnNotation\\NoUselessReturnFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ReturnNotation/NoUselessReturnFixer.php', - 'PhpCsFixer\\Fixer\\ReturnNotation\\ReturnAssignmentFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ReturnNotation/ReturnAssignmentFixer.php', - 'PhpCsFixer\\Fixer\\ReturnNotation\\SimplifiedNullReturnFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ReturnNotation/SimplifiedNullReturnFixer.php', - 'PhpCsFixer\\Fixer\\Semicolon\\MultilineWhitespaceBeforeSemicolonsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/MultilineWhitespaceBeforeSemicolonsFixer.php', - 'PhpCsFixer\\Fixer\\Semicolon\\NoEmptyStatementFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/NoEmptyStatementFixer.php', - 'PhpCsFixer\\Fixer\\Semicolon\\NoSinglelineWhitespaceBeforeSemicolonsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/NoSinglelineWhitespaceBeforeSemicolonsFixer.php', - 'PhpCsFixer\\Fixer\\Semicolon\\SemicolonAfterInstructionFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/SemicolonAfterInstructionFixer.php', - 'PhpCsFixer\\Fixer\\Semicolon\\SpaceAfterSemicolonFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Semicolon/SpaceAfterSemicolonFixer.php', - 'PhpCsFixer\\Fixer\\Strict\\DeclareStrictTypesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Strict/DeclareStrictTypesFixer.php', - 'PhpCsFixer\\Fixer\\Strict\\StrictComparisonFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Strict/StrictComparisonFixer.php', - 'PhpCsFixer\\Fixer\\Strict\\StrictParamFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Strict/StrictParamFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\EscapeImplicitBackslashesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/EscapeImplicitBackslashesFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\ExplicitStringVariableFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/ExplicitStringVariableFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\HeredocClosingMarkerFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/HeredocClosingMarkerFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\HeredocToNowdocFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/HeredocToNowdocFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\MultilineStringToHeredocFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/MultilineStringToHeredocFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\NoBinaryStringFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/NoBinaryStringFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\NoTrailingWhitespaceInStringFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/NoTrailingWhitespaceInStringFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\SimpleToComplexStringVariableFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/SimpleToComplexStringVariableFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\SingleQuoteFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/SingleQuoteFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\StringImplicitBackslashesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/StringImplicitBackslashesFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\StringLengthToEmptyFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/StringLengthToEmptyFixer.php', - 'PhpCsFixer\\Fixer\\StringNotation\\StringLineEndingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/StringNotation/StringLineEndingFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\ArrayIndentationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/ArrayIndentationFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\BlankLineBeforeStatementFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/BlankLineBeforeStatementFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\BlankLineBetweenImportGroupsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/BlankLineBetweenImportGroupsFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\CompactNullableTypeDeclarationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/CompactNullableTypeDeclarationFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\CompactNullableTypehintFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/CompactNullableTypehintFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\HeredocIndentationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/HeredocIndentationFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\IndentationTypeFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/IndentationTypeFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\LineEndingFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/LineEndingFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\MethodChainingIndentationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/MethodChainingIndentationFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\NoExtraBlankLinesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoExtraBlankLinesFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\NoSpacesAroundOffsetFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoSpacesAroundOffsetFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\NoSpacesInsideParenthesisFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoSpacesInsideParenthesisFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\NoTrailingWhitespaceFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoTrailingWhitespaceFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\NoWhitespaceInBlankLineFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/NoWhitespaceInBlankLineFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\SingleBlankLineAtEofFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/SingleBlankLineAtEofFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\SpacesInsideParenthesesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/SpacesInsideParenthesesFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\StatementIndentationFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/StatementIndentationFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\TypeDeclarationSpacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/TypeDeclarationSpacesFixer.php', - 'PhpCsFixer\\Fixer\\Whitespace\\TypesSpacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/TypesSpacesFixer.php', - 'PhpCsFixer\\Fixer\\WhitespacesAwareFixerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/WhitespacesAwareFixerInterface.php', - 'PhpCsFixer\\Indicator\\PhpUnitTestCaseIndicator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Indicator/PhpUnitTestCaseIndicator.php', - 'PhpCsFixer\\Linter\\CachingLinter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/CachingLinter.php', - 'PhpCsFixer\\Linter\\Linter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/Linter.php', - 'PhpCsFixer\\Linter\\LinterInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/LinterInterface.php', - 'PhpCsFixer\\Linter\\LintingException' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/LintingException.php', - 'PhpCsFixer\\Linter\\LintingResultInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/LintingResultInterface.php', - 'PhpCsFixer\\Linter\\ProcessLinter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/ProcessLinter.php', - 'PhpCsFixer\\Linter\\ProcessLinterProcessBuilder' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/ProcessLinterProcessBuilder.php', - 'PhpCsFixer\\Linter\\ProcessLintingResult' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/ProcessLintingResult.php', - 'PhpCsFixer\\Linter\\TokenizerLinter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/TokenizerLinter.php', - 'PhpCsFixer\\Linter\\TokenizerLintingResult' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/TokenizerLintingResult.php', - 'PhpCsFixer\\Linter\\UnavailableLinterException' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/UnavailableLinterException.php', - 'PhpCsFixer\\PharChecker' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/PharChecker.php', - 'PhpCsFixer\\PharCheckerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/PharCheckerInterface.php', - 'PhpCsFixer\\Preg' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Preg.php', - 'PhpCsFixer\\PregException' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/PregException.php', - 'PhpCsFixer\\RuleSet\\AbstractMigrationSetDescription' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/AbstractMigrationSetDescription.php', - 'PhpCsFixer\\RuleSet\\AbstractRuleSetDescription' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/AbstractRuleSetDescription.php', - 'PhpCsFixer\\RuleSet\\DeprecatedRuleSetDescriptionInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/DeprecatedRuleSetDescriptionInterface.php', - 'PhpCsFixer\\RuleSet\\RuleSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/RuleSet.php', - 'PhpCsFixer\\RuleSet\\RuleSetDescriptionInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/RuleSetDescriptionInterface.php', - 'PhpCsFixer\\RuleSet\\RuleSetInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/RuleSetInterface.php', - 'PhpCsFixer\\RuleSet\\RuleSets' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/RuleSets.php', - 'PhpCsFixer\\RuleSet\\Sets\\DoctrineAnnotationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/DoctrineAnnotationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERCS1x0RiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS1x0RiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERCS1x0Set' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS1x0Set.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERCS2x0RiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS2x0RiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERCS2x0Set' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCS2x0Set.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERCSRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCSRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERCSSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERCSSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PERSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PERSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP54MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP54MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP56MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP56MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP70MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP70MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP70MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP70MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP71MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP71MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP71MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP71MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP73MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP73MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP74MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP74MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP74MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP74MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP80MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP80MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP80MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP80MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP81MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP81MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP82MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP82MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHP83MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP83MigrationSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit100MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit100MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit30MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit30MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit32MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit32MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit35MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit35MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit43MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit43MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit48MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit48MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit50MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit50MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit52MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit52MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit54MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit54MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit55MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit55MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit56MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit56MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit57MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit57MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit60MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit60MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit75MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit75MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PHPUnit84MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHPUnit84MigrationRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PSR12RiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PSR12RiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PSR12Set' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PSR12Set.php', - 'PhpCsFixer\\RuleSet\\Sets\\PSR1Set' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PSR1Set.php', - 'PhpCsFixer\\RuleSet\\Sets\\PSR2Set' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PSR2Set.php', - 'PhpCsFixer\\RuleSet\\Sets\\PhpCsFixerRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PhpCsFixerRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\PhpCsFixerSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PhpCsFixerSet.php', - 'PhpCsFixer\\RuleSet\\Sets\\SymfonyRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/SymfonyRiskySet.php', - 'PhpCsFixer\\RuleSet\\Sets\\SymfonySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/SymfonySet.php', - 'PhpCsFixer\\Runner\\FileCachingLintingIterator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Runner/FileCachingLintingIterator.php', - 'PhpCsFixer\\Runner\\FileFilterIterator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Runner/FileFilterIterator.php', - 'PhpCsFixer\\Runner\\FileLintingIterator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Runner/FileLintingIterator.php', - 'PhpCsFixer\\Runner\\Runner' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Runner/Runner.php', - 'PhpCsFixer\\StdinFileInfo' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/StdinFileInfo.php', - 'PhpCsFixer\\Tokenizer\\AbstractTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/AbstractTransformer.php', - 'PhpCsFixer\\Tokenizer\\AbstractTypeTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/AbstractTypeTransformer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\AlternativeSyntaxAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/AlternativeSyntaxAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\AbstractControlCaseStructuresAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/AbstractControlCaseStructuresAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\ArgumentAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/ArgumentAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\CaseAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/CaseAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\DataProviderAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/DataProviderAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\DefaultAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/DefaultAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\EnumAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/EnumAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\MatchAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/MatchAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\NamespaceAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/NamespaceAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\NamespaceUseAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/NamespaceUseAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\StartEndTokenAwareAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/StartEndTokenAwareAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\SwitchAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/SwitchAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\Analysis\\TypeAnalysis' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/Analysis/TypeAnalysis.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\ArgumentsAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ArgumentsAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\AttributeAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/AttributeAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\BlocksAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/BlocksAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\ClassyAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ClassyAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\CommentsAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/CommentsAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\ControlCaseStructuresAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ControlCaseStructuresAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\DataProviderAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/DataProviderAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\FunctionsAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/FunctionsAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\GotoLabelAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/GotoLabelAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\NamespaceUsesAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/NamespaceUsesAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\NamespacesAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/NamespacesAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\RangeAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/RangeAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\ReferenceAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ReferenceAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\SwitchAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/SwitchAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\Analyzer\\WhitespacesAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/WhitespacesAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\CT' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/CT.php', - 'PhpCsFixer\\Tokenizer\\CodeHasher' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/CodeHasher.php', - 'PhpCsFixer\\Tokenizer\\Processor\\ImportProcessor' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Processor/ImportProcessor.php', - 'PhpCsFixer\\Tokenizer\\Token' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Token.php', - 'PhpCsFixer\\Tokenizer\\Tokens' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Tokens.php', - 'PhpCsFixer\\Tokenizer\\TokensAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/TokensAnalyzer.php', - 'PhpCsFixer\\Tokenizer\\TransformerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/TransformerInterface.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\ArrayTypehintTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ArrayTypehintTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\AttributeTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/AttributeTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\BraceClassInstantiationTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/BraceClassInstantiationTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\BraceTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/BraceTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\ClassConstantTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ClassConstantTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\ConstructorPromotionTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ConstructorPromotionTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\DisjunctiveNormalFormTypeParenthesisTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/DisjunctiveNormalFormTypeParenthesisTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\FirstClassCallableTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/FirstClassCallableTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\ImportTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ImportTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\NameQualifiedTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/NameQualifiedTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\NamedArgumentTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/NamedArgumentTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\NamespaceOperatorTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/NamespaceOperatorTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\NullableTypeTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/NullableTypeTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\ReturnRefTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/ReturnRefTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\SquareBraceTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/SquareBraceTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\TypeAlternationTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/TypeAlternationTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\TypeColonTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/TypeColonTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\TypeIntersectionTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/TypeIntersectionTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\UseTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/UseTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformer\\WhitespacyCommentTransformer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformer/WhitespacyCommentTransformer.php', - 'PhpCsFixer\\Tokenizer\\Transformers' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Transformers.php', - 'PhpCsFixer\\ToolInfo' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/ToolInfo.php', - 'PhpCsFixer\\ToolInfoInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/ToolInfoInterface.php', - 'PhpCsFixer\\Utils' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Utils.php', - 'PhpCsFixer\\WhitespacesFixerConfig' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/WhitespacesFixerConfig.php', - 'PhpCsFixer\\WordMatcher' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/WordMatcher.php', - 'PhpParser\\Builder' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder.php', - 'PhpParser\\BuilderFactory' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/BuilderFactory.php', - 'PhpParser\\BuilderHelpers' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/BuilderHelpers.php', - 'PhpParser\\Builder\\ClassConst' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php', - 'PhpParser\\Builder\\Class_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Class_.php', - 'PhpParser\\Builder\\Declaration' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Declaration.php', - 'PhpParser\\Builder\\EnumCase' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php', - 'PhpParser\\Builder\\Enum_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Enum_.php', - 'PhpParser\\Builder\\FunctionLike' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php', - 'PhpParser\\Builder\\Function_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Function_.php', - 'PhpParser\\Builder\\Interface_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Interface_.php', - 'PhpParser\\Builder\\Method' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Method.php', - 'PhpParser\\Builder\\Namespace_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php', - 'PhpParser\\Builder\\Param' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Param.php', - 'PhpParser\\Builder\\Property' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Property.php', - 'PhpParser\\Builder\\TraitUse' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php', - 'PhpParser\\Builder\\TraitUseAdaptation' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php', - 'PhpParser\\Builder\\Trait_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Trait_.php', - 'PhpParser\\Builder\\Use_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Builder/Use_.php', - 'PhpParser\\Comment' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Comment.php', - 'PhpParser\\Comment\\Doc' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Comment/Doc.php', - 'PhpParser\\ConstExprEvaluationException' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ConstExprEvaluationException.php', - 'PhpParser\\ConstExprEvaluator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.php', - 'PhpParser\\Error' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Error.php', - 'PhpParser\\ErrorHandler' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ErrorHandler.php', - 'PhpParser\\ErrorHandler\\Collecting' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ErrorHandler/Collecting.php', - 'PhpParser\\ErrorHandler\\Throwing' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.php', - 'PhpParser\\Internal\\DiffElem' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Internal/DiffElem.php', - 'PhpParser\\Internal\\Differ' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Internal/Differ.php', - 'PhpParser\\Internal\\PrintableNewAnonClassNode' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php', - 'PhpParser\\Internal\\TokenStream' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php', - 'PhpParser\\JsonDecoder' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/JsonDecoder.php', - 'PhpParser\\Lexer' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer.php', - 'PhpParser\\Lexer\\Emulative' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php', - 'PhpParser\\Lexer\\TokenEmulator\\AttributeEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\CoaleseEqualTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/CoaleseEqualTokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\EnumTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/EnumTokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\ExplicitOctalEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ExplicitOctalEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\FlexibleDocStringEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FlexibleDocStringEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\FnTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FnTokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\KeywordEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\MatchTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\NullsafeTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\NumericLiteralSeparatorEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NumericLiteralSeparatorEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\ReadonlyFunctionTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyFunctionTokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\ReadonlyTokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\ReverseEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php', - 'PhpParser\\Lexer\\TokenEmulator\\TokenEmulator' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php', - 'PhpParser\\NameContext' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NameContext.php', - 'PhpParser\\Node' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node.php', - 'PhpParser\\NodeAbstract' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeAbstract.php', - 'PhpParser\\NodeDumper' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeDumper.php', - 'PhpParser\\NodeFinder' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeFinder.php', - 'PhpParser\\NodeTraverser' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeTraverser.php', - 'PhpParser\\NodeTraverserInterface' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.php', - 'PhpParser\\NodeVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor.php', - 'PhpParser\\NodeVisitorAbstract' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.php', - 'PhpParser\\NodeVisitor\\CloningVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.php', - 'PhpParser\\NodeVisitor\\FindingVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php', - 'PhpParser\\NodeVisitor\\FirstFindingVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php', - 'PhpParser\\NodeVisitor\\NameResolver' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php', - 'PhpParser\\NodeVisitor\\NodeConnectingVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php', - 'PhpParser\\NodeVisitor\\ParentConnectingVisitor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php', - 'PhpParser\\Node\\Arg' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Arg.php', - 'PhpParser\\Node\\Attribute' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Attribute.php', - 'PhpParser\\Node\\AttributeGroup' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php', - 'PhpParser\\Node\\ComplexType' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/ComplexType.php', - 'PhpParser\\Node\\Const_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Const_.php', - 'PhpParser\\Node\\Expr' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr.php', - 'PhpParser\\Node\\Expr\\ArrayDimFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php', - 'PhpParser\\Node\\Expr\\ArrayItem' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php', - 'PhpParser\\Node\\Expr\\Array_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php', - 'PhpParser\\Node\\Expr\\ArrowFunction' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php', - 'PhpParser\\Node\\Expr\\Assign' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php', - 'PhpParser\\Node\\Expr\\AssignOp' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php', - 'PhpParser\\Node\\Expr\\AssignOp\\BitwiseAnd' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php', - 'PhpParser\\Node\\Expr\\AssignOp\\BitwiseOr' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php', - 'PhpParser\\Node\\Expr\\AssignOp\\BitwiseXor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Coalesce' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Concat' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Div' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Minus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Mod' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Mul' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Plus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php', - 'PhpParser\\Node\\Expr\\AssignOp\\Pow' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php', - 'PhpParser\\Node\\Expr\\AssignOp\\ShiftLeft' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php', - 'PhpParser\\Node\\Expr\\AssignOp\\ShiftRight' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php', - 'PhpParser\\Node\\Expr\\AssignRef' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php', - 'PhpParser\\Node\\Expr\\BinaryOp' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseAnd' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseOr' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\BitwiseXor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\BooleanAnd' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\BooleanOr' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Coalesce' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Concat' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Div' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Equal' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Greater' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\GreaterOrEqual' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Identical' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\LogicalAnd' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\LogicalOr' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\LogicalXor' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Minus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Mod' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Mul' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\NotEqual' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\NotIdentical' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Plus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Pow' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\ShiftLeft' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\ShiftRight' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Smaller' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\SmallerOrEqual' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php', - 'PhpParser\\Node\\Expr\\BinaryOp\\Spaceship' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php', - 'PhpParser\\Node\\Expr\\BitwiseNot' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php', - 'PhpParser\\Node\\Expr\\BooleanNot' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php', - 'PhpParser\\Node\\Expr\\CallLike' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php', - 'PhpParser\\Node\\Expr\\Cast' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php', - 'PhpParser\\Node\\Expr\\Cast\\Array_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php', - 'PhpParser\\Node\\Expr\\Cast\\Bool_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php', - 'PhpParser\\Node\\Expr\\Cast\\Double' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php', - 'PhpParser\\Node\\Expr\\Cast\\Int_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php', - 'PhpParser\\Node\\Expr\\Cast\\Object_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php', - 'PhpParser\\Node\\Expr\\Cast\\String_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php', - 'PhpParser\\Node\\Expr\\Cast\\Unset_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php', - 'PhpParser\\Node\\Expr\\ClassConstFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php', - 'PhpParser\\Node\\Expr\\Clone_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php', - 'PhpParser\\Node\\Expr\\Closure' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php', - 'PhpParser\\Node\\Expr\\ClosureUse' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php', - 'PhpParser\\Node\\Expr\\ConstFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php', - 'PhpParser\\Node\\Expr\\Empty_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php', - 'PhpParser\\Node\\Expr\\Error' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php', - 'PhpParser\\Node\\Expr\\ErrorSuppress' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php', - 'PhpParser\\Node\\Expr\\Eval_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php', - 'PhpParser\\Node\\Expr\\Exit_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php', - 'PhpParser\\Node\\Expr\\FuncCall' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php', - 'PhpParser\\Node\\Expr\\Include_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php', - 'PhpParser\\Node\\Expr\\Instanceof_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php', - 'PhpParser\\Node\\Expr\\Isset_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php', - 'PhpParser\\Node\\Expr\\List_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php', - 'PhpParser\\Node\\Expr\\Match_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php', - 'PhpParser\\Node\\Expr\\MethodCall' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php', - 'PhpParser\\Node\\Expr\\New_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php', - 'PhpParser\\Node\\Expr\\NullsafeMethodCall' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php', - 'PhpParser\\Node\\Expr\\NullsafePropertyFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php', - 'PhpParser\\Node\\Expr\\PostDec' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php', - 'PhpParser\\Node\\Expr\\PostInc' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php', - 'PhpParser\\Node\\Expr\\PreDec' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php', - 'PhpParser\\Node\\Expr\\PreInc' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php', - 'PhpParser\\Node\\Expr\\Print_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php', - 'PhpParser\\Node\\Expr\\PropertyFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php', - 'PhpParser\\Node\\Expr\\ShellExec' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php', - 'PhpParser\\Node\\Expr\\StaticCall' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php', - 'PhpParser\\Node\\Expr\\StaticPropertyFetch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php', - 'PhpParser\\Node\\Expr\\Ternary' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php', - 'PhpParser\\Node\\Expr\\Throw_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php', - 'PhpParser\\Node\\Expr\\UnaryMinus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php', - 'PhpParser\\Node\\Expr\\UnaryPlus' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php', - 'PhpParser\\Node\\Expr\\Variable' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php', - 'PhpParser\\Node\\Expr\\YieldFrom' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php', - 'PhpParser\\Node\\Expr\\Yield_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php', - 'PhpParser\\Node\\FunctionLike' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php', - 'PhpParser\\Node\\Identifier' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Identifier.php', - 'PhpParser\\Node\\IntersectionType' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/IntersectionType.php', - 'PhpParser\\Node\\MatchArm' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/MatchArm.php', - 'PhpParser\\Node\\Name' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Name.php', - 'PhpParser\\Node\\Name\\FullyQualified' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php', - 'PhpParser\\Node\\Name\\Relative' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php', - 'PhpParser\\Node\\NullableType' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/NullableType.php', - 'PhpParser\\Node\\Param' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Param.php', - 'PhpParser\\Node\\Scalar' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar.php', - 'PhpParser\\Node\\Scalar\\DNumber' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php', - 'PhpParser\\Node\\Scalar\\Encapsed' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php', - 'PhpParser\\Node\\Scalar\\EncapsedStringPart' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php', - 'PhpParser\\Node\\Scalar\\LNumber' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php', - 'PhpParser\\Node\\Scalar\\MagicConst' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Class_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Dir' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\File' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Function_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Line' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Method' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Namespace_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php', - 'PhpParser\\Node\\Scalar\\MagicConst\\Trait_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php', - 'PhpParser\\Node\\Scalar\\String_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php', - 'PhpParser\\Node\\Stmt' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt.php', - 'PhpParser\\Node\\Stmt\\Break_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php', - 'PhpParser\\Node\\Stmt\\Case_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php', - 'PhpParser\\Node\\Stmt\\Catch_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php', - 'PhpParser\\Node\\Stmt\\ClassConst' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php', - 'PhpParser\\Node\\Stmt\\ClassLike' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php', - 'PhpParser\\Node\\Stmt\\ClassMethod' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php', - 'PhpParser\\Node\\Stmt\\Class_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php', - 'PhpParser\\Node\\Stmt\\Const_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php', - 'PhpParser\\Node\\Stmt\\Continue_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php', - 'PhpParser\\Node\\Stmt\\DeclareDeclare' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php', - 'PhpParser\\Node\\Stmt\\Declare_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php', - 'PhpParser\\Node\\Stmt\\Do_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php', - 'PhpParser\\Node\\Stmt\\Echo_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php', - 'PhpParser\\Node\\Stmt\\ElseIf_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php', - 'PhpParser\\Node\\Stmt\\Else_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php', - 'PhpParser\\Node\\Stmt\\EnumCase' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php', - 'PhpParser\\Node\\Stmt\\Enum_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php', - 'PhpParser\\Node\\Stmt\\Expression' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php', - 'PhpParser\\Node\\Stmt\\Finally_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php', - 'PhpParser\\Node\\Stmt\\For_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php', - 'PhpParser\\Node\\Stmt\\Foreach_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php', - 'PhpParser\\Node\\Stmt\\Function_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php', - 'PhpParser\\Node\\Stmt\\Global_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php', - 'PhpParser\\Node\\Stmt\\Goto_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php', - 'PhpParser\\Node\\Stmt\\GroupUse' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php', - 'PhpParser\\Node\\Stmt\\HaltCompiler' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php', - 'PhpParser\\Node\\Stmt\\If_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php', - 'PhpParser\\Node\\Stmt\\InlineHTML' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php', - 'PhpParser\\Node\\Stmt\\Interface_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php', - 'PhpParser\\Node\\Stmt\\Label' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php', - 'PhpParser\\Node\\Stmt\\Namespace_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php', - 'PhpParser\\Node\\Stmt\\Nop' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php', - 'PhpParser\\Node\\Stmt\\Property' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php', - 'PhpParser\\Node\\Stmt\\PropertyProperty' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php', - 'PhpParser\\Node\\Stmt\\Return_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php', - 'PhpParser\\Node\\Stmt\\StaticVar' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php', - 'PhpParser\\Node\\Stmt\\Static_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php', - 'PhpParser\\Node\\Stmt\\Switch_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php', - 'PhpParser\\Node\\Stmt\\Throw_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Throw_.php', - 'PhpParser\\Node\\Stmt\\TraitUse' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php', - 'PhpParser\\Node\\Stmt\\TraitUseAdaptation' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php', - 'PhpParser\\Node\\Stmt\\TraitUseAdaptation\\Alias' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php', - 'PhpParser\\Node\\Stmt\\TraitUseAdaptation\\Precedence' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php', - 'PhpParser\\Node\\Stmt\\Trait_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php', - 'PhpParser\\Node\\Stmt\\TryCatch' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php', - 'PhpParser\\Node\\Stmt\\Unset_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php', - 'PhpParser\\Node\\Stmt\\UseUse' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php', - 'PhpParser\\Node\\Stmt\\Use_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php', - 'PhpParser\\Node\\Stmt\\While_' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php', - 'PhpParser\\Node\\UnionType' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/UnionType.php', - 'PhpParser\\Node\\VarLikeIdentifier' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php', - 'PhpParser\\Node\\VariadicPlaceholder' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Node/VariadicPlaceholder.php', - 'PhpParser\\Parser' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Parser.php', - 'PhpParser\\ParserAbstract' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ParserAbstract.php', - 'PhpParser\\ParserFactory' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/ParserFactory.php', - 'PhpParser\\Parser\\Multiple' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Parser/Multiple.php', - 'PhpParser\\Parser\\Php5' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Parser/Php5.php', - 'PhpParser\\Parser\\Php7' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Parser/Php7.php', - 'PhpParser\\Parser\\Tokens' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/Parser/Tokens.php', - 'PhpParser\\PrettyPrinterAbstract' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php', - 'PhpParser\\PrettyPrinter\\Standard' => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php', - 'PhpToken' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php', - 'PrestaShop\\AutoIndex\\Command\\AddAutoIndexCommand' => __DIR__ . '/..' . '/prestashop/autoindex/src/Command/AddAutoIndexCommand.php', - 'PrestaShop\\CodingStandards\\Command\\AbstractCommand' => __DIR__ . '/..' . '/prestashop/php-dev-tools/src/Command/AbstractCommand.php', - 'PrestaShop\\CodingStandards\\Command\\CsFixerInitCommand' => __DIR__ . '/..' . '/prestashop/php-dev-tools/src/Command/CsFixerInitCommand.php', - 'PrestaShop\\CodingStandards\\Command\\PhpStanInitCommand' => __DIR__ . '/..' . '/prestashop/php-dev-tools/src/Command/PhpStanInitCommand.php', - 'PrestaShop\\CodingStandards\\CsFixer\\Config' => __DIR__ . '/..' . '/prestashop/php-dev-tools/src/CsFixer/Config.php', - 'PrestaShop\\HeaderStamp\\Command\\UpdateLicensesCommand' => __DIR__ . '/..' . '/prestashop/header-stamp/src/Command/UpdateLicensesCommand.php', - 'PrestaShop\\HeaderStamp\\LicenseHeader' => __DIR__ . '/..' . '/prestashop/header-stamp/src/LicenseHeader.php', - 'PrestaShop\\HeaderStamp\\Reporter' => __DIR__ . '/..' . '/prestashop/header-stamp/src/Reporter.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Controller\\AbandonedCartController' => __DIR__ . '/../..' . '/src/Controller/AbandonedCartController.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Controller\\CustomerSyncController' => __DIR__ . '/../..' . '/src/Controller/CustomerSyncController.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Controller\\ModuleConfigurationController' => __DIR__ . '/../..' . '/src/Controller/ModuleConfigurationController.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Controller\\OptInController' => __DIR__ . '/../..' . '/src/Controller/OptInController.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Controller\\RssFeedController' => __DIR__ . '/../..' . '/src/Controller/RssFeedController.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\AbandonedCartFormDataConfiguration' => __DIR__ . '/../..' . '/src/Form/AbandonedCartFormDataConfiguration.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\AbandonedCartFormType' => __DIR__ . '/../..' . '/src/Form/AbandonedCartFormType.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\AccountConfigurationFormType' => __DIR__ . '/../..' . '/src/Form/AccountConfigurationFormType.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\AccountFormDataConfiguration' => __DIR__ . '/../..' . '/src/Form/AccountFormDataConfiguration.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\ChoiceProvider\\Autoresponder' => __DIR__ . '/../..' . '/src/Form/ChoiceProvider/Autoresponder.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\ChoiceProvider\\ProductCategory' => __DIR__ . '/../..' . '/src/Form/ChoiceProvider/ProductCategory.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\CustomerSyncFormDataConfiguration' => __DIR__ . '/../..' . '/src/Form/CustomerSyncFormDataConfiguration.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\CustomerSyncFormType' => __DIR__ . '/../..' . '/src/Form/CustomerSyncFormType.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\FormDataProvider' => __DIR__ . '/../..' . '/src/Form/FormDataProvider.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\RssFeedFormDataConfiguration' => __DIR__ . '/../..' . '/src/Form/RssFeedFormDataConfiguration.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Form\\RssFeedFormType' => __DIR__ . '/../..' . '/src/Form/RssFeedFormType.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Install\\Installer' => __DIR__ . '/../..' . '/src/Install/Installer.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Lib\\Api' => __DIR__ . '/../..' . '/lib/Api.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Lib\\Logger' => __DIR__ . '/../..' . '/lib/Logger.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Model\\AbandonedCart' => __DIR__ . '/../..' . '/src/Model/AbandonedCart.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Model\\AbandonedCartCollection' => __DIR__ . '/../..' . '/src/Model/AbandonedCartCollection.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Model\\AbandonedCartProduct' => __DIR__ . '/../..' . '/src/Model/AbandonedCartProduct.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Model\\RssFeedProductsCollection' => __DIR__ . '/../..' . '/src/Model/RssFeedProductsCollection.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Model\\SentCart' => __DIR__ . '/../..' . '/src/Model/SentCart.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Model\\Subscriber' => __DIR__ . '/../..' . '/src/Model/Subscriber.php', - 'PrestaShop\\Module\\SmailyForPrestaShop\\Model\\SubscriberCollection' => __DIR__ . '/../..' . '/src/Model/SubscriberCollection.php', - 'Psr\\Container\\ContainerExceptionInterface' => __DIR__ . '/..' . '/psr/container/src/ContainerExceptionInterface.php', - 'Psr\\Container\\ContainerInterface' => __DIR__ . '/..' . '/psr/container/src/ContainerInterface.php', - 'Psr\\Container\\NotFoundExceptionInterface' => __DIR__ . '/..' . '/psr/container/src/NotFoundExceptionInterface.php', - 'Psr\\EventDispatcher\\EventDispatcherInterface' => __DIR__ . '/..' . '/psr/event-dispatcher/src/EventDispatcherInterface.php', - 'Psr\\EventDispatcher\\ListenerProviderInterface' => __DIR__ . '/..' . '/psr/event-dispatcher/src/ListenerProviderInterface.php', - 'Psr\\EventDispatcher\\StoppableEventInterface' => __DIR__ . '/..' . '/psr/event-dispatcher/src/StoppableEventInterface.php', - 'Psr\\Log\\AbstractLogger' => __DIR__ . '/..' . '/psr/log/src/AbstractLogger.php', - 'Psr\\Log\\InvalidArgumentException' => __DIR__ . '/..' . '/psr/log/src/InvalidArgumentException.php', - 'Psr\\Log\\LogLevel' => __DIR__ . '/..' . '/psr/log/src/LogLevel.php', - 'Psr\\Log\\LoggerAwareInterface' => __DIR__ . '/..' . '/psr/log/src/LoggerAwareInterface.php', - 'Psr\\Log\\LoggerAwareTrait' => __DIR__ . '/..' . '/psr/log/src/LoggerAwareTrait.php', - 'Psr\\Log\\LoggerInterface' => __DIR__ . '/..' . '/psr/log/src/LoggerInterface.php', - 'Psr\\Log\\LoggerTrait' => __DIR__ . '/..' . '/psr/log/src/LoggerTrait.php', - 'Psr\\Log\\NullLogger' => __DIR__ . '/..' . '/psr/log/src/NullLogger.php', - 'ReturnTypeWillChange' => __DIR__ . '/..' . '/symfony/polyfill-php81/Resources/stubs/ReturnTypeWillChange.php', - 'SebastianBergmann\\Diff\\Chunk' => __DIR__ . '/..' . '/sebastian/diff/src/Chunk.php', - 'SebastianBergmann\\Diff\\ConfigurationException' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/ConfigurationException.php', - 'SebastianBergmann\\Diff\\Diff' => __DIR__ . '/..' . '/sebastian/diff/src/Diff.php', - 'SebastianBergmann\\Diff\\Differ' => __DIR__ . '/..' . '/sebastian/diff/src/Differ.php', - 'SebastianBergmann\\Diff\\Exception' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/Exception.php', - 'SebastianBergmann\\Diff\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/InvalidArgumentException.php', - 'SebastianBergmann\\Diff\\Line' => __DIR__ . '/..' . '/sebastian/diff/src/Line.php', - 'SebastianBergmann\\Diff\\LongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/LongestCommonSubsequenceCalculator.php', - 'SebastianBergmann\\Diff\\MemoryEfficientLongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php', - 'SebastianBergmann\\Diff\\Output\\AbstractChunkOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php', - 'SebastianBergmann\\Diff\\Output\\DiffOnlyOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php', - 'SebastianBergmann\\Diff\\Output\\DiffOutputBuilderInterface' => __DIR__ . '/..' . '/sebastian/diff/src/Output/DiffOutputBuilderInterface.php', - 'SebastianBergmann\\Diff\\Output\\StrictUnifiedDiffOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/StrictUnifiedDiffOutputBuilder.php', - 'SebastianBergmann\\Diff\\Output\\UnifiedDiffOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php', - 'SebastianBergmann\\Diff\\Parser' => __DIR__ . '/..' . '/sebastian/diff/src/Parser.php', - 'SebastianBergmann\\Diff\\TimeEfficientLongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php', - 'Stringable' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Stringable.php', - 'Symfony\\Component\\Console\\Application' => __DIR__ . '/..' . '/symfony/console/Application.php', - 'Symfony\\Component\\Console\\Attribute\\AsCommand' => __DIR__ . '/..' . '/symfony/console/Attribute/AsCommand.php', - 'Symfony\\Component\\Console\\CI\\GithubActionReporter' => __DIR__ . '/..' . '/symfony/console/CI/GithubActionReporter.php', - 'Symfony\\Component\\Console\\Color' => __DIR__ . '/..' . '/symfony/console/Color.php', - 'Symfony\\Component\\Console\\CommandLoader\\CommandLoaderInterface' => __DIR__ . '/..' . '/symfony/console/CommandLoader/CommandLoaderInterface.php', - 'Symfony\\Component\\Console\\CommandLoader\\ContainerCommandLoader' => __DIR__ . '/..' . '/symfony/console/CommandLoader/ContainerCommandLoader.php', - 'Symfony\\Component\\Console\\CommandLoader\\FactoryCommandLoader' => __DIR__ . '/..' . '/symfony/console/CommandLoader/FactoryCommandLoader.php', - 'Symfony\\Component\\Console\\Command\\Command' => __DIR__ . '/..' . '/symfony/console/Command/Command.php', - 'Symfony\\Component\\Console\\Command\\CompleteCommand' => __DIR__ . '/..' . '/symfony/console/Command/CompleteCommand.php', - 'Symfony\\Component\\Console\\Command\\DumpCompletionCommand' => __DIR__ . '/..' . '/symfony/console/Command/DumpCompletionCommand.php', - 'Symfony\\Component\\Console\\Command\\HelpCommand' => __DIR__ . '/..' . '/symfony/console/Command/HelpCommand.php', - 'Symfony\\Component\\Console\\Command\\LazyCommand' => __DIR__ . '/..' . '/symfony/console/Command/LazyCommand.php', - 'Symfony\\Component\\Console\\Command\\ListCommand' => __DIR__ . '/..' . '/symfony/console/Command/ListCommand.php', - 'Symfony\\Component\\Console\\Command\\LockableTrait' => __DIR__ . '/..' . '/symfony/console/Command/LockableTrait.php', - 'Symfony\\Component\\Console\\Command\\SignalableCommandInterface' => __DIR__ . '/..' . '/symfony/console/Command/SignalableCommandInterface.php', - 'Symfony\\Component\\Console\\Command\\TraceableCommand' => __DIR__ . '/..' . '/symfony/console/Command/TraceableCommand.php', - 'Symfony\\Component\\Console\\Completion\\CompletionInput' => __DIR__ . '/..' . '/symfony/console/Completion/CompletionInput.php', - 'Symfony\\Component\\Console\\Completion\\CompletionSuggestions' => __DIR__ . '/..' . '/symfony/console/Completion/CompletionSuggestions.php', - 'Symfony\\Component\\Console\\Completion\\Output\\BashCompletionOutput' => __DIR__ . '/..' . '/symfony/console/Completion/Output/BashCompletionOutput.php', - 'Symfony\\Component\\Console\\Completion\\Output\\CompletionOutputInterface' => __DIR__ . '/..' . '/symfony/console/Completion/Output/CompletionOutputInterface.php', - 'Symfony\\Component\\Console\\Completion\\Output\\FishCompletionOutput' => __DIR__ . '/..' . '/symfony/console/Completion/Output/FishCompletionOutput.php', - 'Symfony\\Component\\Console\\Completion\\Output\\ZshCompletionOutput' => __DIR__ . '/..' . '/symfony/console/Completion/Output/ZshCompletionOutput.php', - 'Symfony\\Component\\Console\\Completion\\Suggestion' => __DIR__ . '/..' . '/symfony/console/Completion/Suggestion.php', - 'Symfony\\Component\\Console\\ConsoleEvents' => __DIR__ . '/..' . '/symfony/console/ConsoleEvents.php', - 'Symfony\\Component\\Console\\Cursor' => __DIR__ . '/..' . '/symfony/console/Cursor.php', - 'Symfony\\Component\\Console\\DataCollector\\CommandDataCollector' => __DIR__ . '/..' . '/symfony/console/DataCollector/CommandDataCollector.php', - 'Symfony\\Component\\Console\\Debug\\CliRequest' => __DIR__ . '/..' . '/symfony/console/Debug/CliRequest.php', - 'Symfony\\Component\\Console\\DependencyInjection\\AddConsoleCommandPass' => __DIR__ . '/..' . '/symfony/console/DependencyInjection/AddConsoleCommandPass.php', - 'Symfony\\Component\\Console\\Descriptor\\ApplicationDescription' => __DIR__ . '/..' . '/symfony/console/Descriptor/ApplicationDescription.php', - 'Symfony\\Component\\Console\\Descriptor\\Descriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/Descriptor.php', - 'Symfony\\Component\\Console\\Descriptor\\DescriptorInterface' => __DIR__ . '/..' . '/symfony/console/Descriptor/DescriptorInterface.php', - 'Symfony\\Component\\Console\\Descriptor\\JsonDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/JsonDescriptor.php', - 'Symfony\\Component\\Console\\Descriptor\\MarkdownDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/MarkdownDescriptor.php', - 'Symfony\\Component\\Console\\Descriptor\\ReStructuredTextDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/ReStructuredTextDescriptor.php', - 'Symfony\\Component\\Console\\Descriptor\\TextDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/TextDescriptor.php', - 'Symfony\\Component\\Console\\Descriptor\\XmlDescriptor' => __DIR__ . '/..' . '/symfony/console/Descriptor/XmlDescriptor.php', - 'Symfony\\Component\\Console\\EventListener\\ErrorListener' => __DIR__ . '/..' . '/symfony/console/EventListener/ErrorListener.php', - 'Symfony\\Component\\Console\\Event\\ConsoleCommandEvent' => __DIR__ . '/..' . '/symfony/console/Event/ConsoleCommandEvent.php', - 'Symfony\\Component\\Console\\Event\\ConsoleErrorEvent' => __DIR__ . '/..' . '/symfony/console/Event/ConsoleErrorEvent.php', - 'Symfony\\Component\\Console\\Event\\ConsoleEvent' => __DIR__ . '/..' . '/symfony/console/Event/ConsoleEvent.php', - 'Symfony\\Component\\Console\\Event\\ConsoleSignalEvent' => __DIR__ . '/..' . '/symfony/console/Event/ConsoleSignalEvent.php', - 'Symfony\\Component\\Console\\Event\\ConsoleTerminateEvent' => __DIR__ . '/..' . '/symfony/console/Event/ConsoleTerminateEvent.php', - 'Symfony\\Component\\Console\\Exception\\CommandNotFoundException' => __DIR__ . '/..' . '/symfony/console/Exception/CommandNotFoundException.php', - 'Symfony\\Component\\Console\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/console/Exception/ExceptionInterface.php', - 'Symfony\\Component\\Console\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/console/Exception/InvalidArgumentException.php', - 'Symfony\\Component\\Console\\Exception\\InvalidOptionException' => __DIR__ . '/..' . '/symfony/console/Exception/InvalidOptionException.php', - 'Symfony\\Component\\Console\\Exception\\LogicException' => __DIR__ . '/..' . '/symfony/console/Exception/LogicException.php', - 'Symfony\\Component\\Console\\Exception\\MissingInputException' => __DIR__ . '/..' . '/symfony/console/Exception/MissingInputException.php', - 'Symfony\\Component\\Console\\Exception\\NamespaceNotFoundException' => __DIR__ . '/..' . '/symfony/console/Exception/NamespaceNotFoundException.php', - 'Symfony\\Component\\Console\\Exception\\RunCommandFailedException' => __DIR__ . '/..' . '/symfony/console/Exception/RunCommandFailedException.php', - 'Symfony\\Component\\Console\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/console/Exception/RuntimeException.php', - 'Symfony\\Component\\Console\\Formatter\\NullOutputFormatter' => __DIR__ . '/..' . '/symfony/console/Formatter/NullOutputFormatter.php', - 'Symfony\\Component\\Console\\Formatter\\NullOutputFormatterStyle' => __DIR__ . '/..' . '/symfony/console/Formatter/NullOutputFormatterStyle.php', - 'Symfony\\Component\\Console\\Formatter\\OutputFormatter' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatter.php', - 'Symfony\\Component\\Console\\Formatter\\OutputFormatterInterface' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatterInterface.php', - 'Symfony\\Component\\Console\\Formatter\\OutputFormatterStyle' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatterStyle.php', - 'Symfony\\Component\\Console\\Formatter\\OutputFormatterStyleInterface' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatterStyleInterface.php', - 'Symfony\\Component\\Console\\Formatter\\OutputFormatterStyleStack' => __DIR__ . '/..' . '/symfony/console/Formatter/OutputFormatterStyleStack.php', - 'Symfony\\Component\\Console\\Formatter\\WrappableOutputFormatterInterface' => __DIR__ . '/..' . '/symfony/console/Formatter/WrappableOutputFormatterInterface.php', - 'Symfony\\Component\\Console\\Helper\\DebugFormatterHelper' => __DIR__ . '/..' . '/symfony/console/Helper/DebugFormatterHelper.php', - 'Symfony\\Component\\Console\\Helper\\DescriptorHelper' => __DIR__ . '/..' . '/symfony/console/Helper/DescriptorHelper.php', - 'Symfony\\Component\\Console\\Helper\\Dumper' => __DIR__ . '/..' . '/symfony/console/Helper/Dumper.php', - 'Symfony\\Component\\Console\\Helper\\FormatterHelper' => __DIR__ . '/..' . '/symfony/console/Helper/FormatterHelper.php', - 'Symfony\\Component\\Console\\Helper\\Helper' => __DIR__ . '/..' . '/symfony/console/Helper/Helper.php', - 'Symfony\\Component\\Console\\Helper\\HelperInterface' => __DIR__ . '/..' . '/symfony/console/Helper/HelperInterface.php', - 'Symfony\\Component\\Console\\Helper\\HelperSet' => __DIR__ . '/..' . '/symfony/console/Helper/HelperSet.php', - 'Symfony\\Component\\Console\\Helper\\InputAwareHelper' => __DIR__ . '/..' . '/symfony/console/Helper/InputAwareHelper.php', - 'Symfony\\Component\\Console\\Helper\\OutputWrapper' => __DIR__ . '/..' . '/symfony/console/Helper/OutputWrapper.php', - 'Symfony\\Component\\Console\\Helper\\ProcessHelper' => __DIR__ . '/..' . '/symfony/console/Helper/ProcessHelper.php', - 'Symfony\\Component\\Console\\Helper\\ProgressBar' => __DIR__ . '/..' . '/symfony/console/Helper/ProgressBar.php', - 'Symfony\\Component\\Console\\Helper\\ProgressIndicator' => __DIR__ . '/..' . '/symfony/console/Helper/ProgressIndicator.php', - 'Symfony\\Component\\Console\\Helper\\QuestionHelper' => __DIR__ . '/..' . '/symfony/console/Helper/QuestionHelper.php', - 'Symfony\\Component\\Console\\Helper\\SymfonyQuestionHelper' => __DIR__ . '/..' . '/symfony/console/Helper/SymfonyQuestionHelper.php', - 'Symfony\\Component\\Console\\Helper\\Table' => __DIR__ . '/..' . '/symfony/console/Helper/Table.php', - 'Symfony\\Component\\Console\\Helper\\TableCell' => __DIR__ . '/..' . '/symfony/console/Helper/TableCell.php', - 'Symfony\\Component\\Console\\Helper\\TableCellStyle' => __DIR__ . '/..' . '/symfony/console/Helper/TableCellStyle.php', - 'Symfony\\Component\\Console\\Helper\\TableRows' => __DIR__ . '/..' . '/symfony/console/Helper/TableRows.php', - 'Symfony\\Component\\Console\\Helper\\TableSeparator' => __DIR__ . '/..' . '/symfony/console/Helper/TableSeparator.php', - 'Symfony\\Component\\Console\\Helper\\TableStyle' => __DIR__ . '/..' . '/symfony/console/Helper/TableStyle.php', - 'Symfony\\Component\\Console\\Input\\ArgvInput' => __DIR__ . '/..' . '/symfony/console/Input/ArgvInput.php', - 'Symfony\\Component\\Console\\Input\\ArrayInput' => __DIR__ . '/..' . '/symfony/console/Input/ArrayInput.php', - 'Symfony\\Component\\Console\\Input\\Input' => __DIR__ . '/..' . '/symfony/console/Input/Input.php', - 'Symfony\\Component\\Console\\Input\\InputArgument' => __DIR__ . '/..' . '/symfony/console/Input/InputArgument.php', - 'Symfony\\Component\\Console\\Input\\InputAwareInterface' => __DIR__ . '/..' . '/symfony/console/Input/InputAwareInterface.php', - 'Symfony\\Component\\Console\\Input\\InputDefinition' => __DIR__ . '/..' . '/symfony/console/Input/InputDefinition.php', - 'Symfony\\Component\\Console\\Input\\InputInterface' => __DIR__ . '/..' . '/symfony/console/Input/InputInterface.php', - 'Symfony\\Component\\Console\\Input\\InputOption' => __DIR__ . '/..' . '/symfony/console/Input/InputOption.php', - 'Symfony\\Component\\Console\\Input\\StreamableInputInterface' => __DIR__ . '/..' . '/symfony/console/Input/StreamableInputInterface.php', - 'Symfony\\Component\\Console\\Input\\StringInput' => __DIR__ . '/..' . '/symfony/console/Input/StringInput.php', - 'Symfony\\Component\\Console\\Logger\\ConsoleLogger' => __DIR__ . '/..' . '/symfony/console/Logger/ConsoleLogger.php', - 'Symfony\\Component\\Console\\Messenger\\RunCommandContext' => __DIR__ . '/..' . '/symfony/console/Messenger/RunCommandContext.php', - 'Symfony\\Component\\Console\\Messenger\\RunCommandMessage' => __DIR__ . '/..' . '/symfony/console/Messenger/RunCommandMessage.php', - 'Symfony\\Component\\Console\\Messenger\\RunCommandMessageHandler' => __DIR__ . '/..' . '/symfony/console/Messenger/RunCommandMessageHandler.php', - 'Symfony\\Component\\Console\\Output\\AnsiColorMode' => __DIR__ . '/..' . '/symfony/console/Output/AnsiColorMode.php', - 'Symfony\\Component\\Console\\Output\\BufferedOutput' => __DIR__ . '/..' . '/symfony/console/Output/BufferedOutput.php', - 'Symfony\\Component\\Console\\Output\\ConsoleOutput' => __DIR__ . '/..' . '/symfony/console/Output/ConsoleOutput.php', - 'Symfony\\Component\\Console\\Output\\ConsoleOutputInterface' => __DIR__ . '/..' . '/symfony/console/Output/ConsoleOutputInterface.php', - 'Symfony\\Component\\Console\\Output\\ConsoleSectionOutput' => __DIR__ . '/..' . '/symfony/console/Output/ConsoleSectionOutput.php', - 'Symfony\\Component\\Console\\Output\\NullOutput' => __DIR__ . '/..' . '/symfony/console/Output/NullOutput.php', - 'Symfony\\Component\\Console\\Output\\Output' => __DIR__ . '/..' . '/symfony/console/Output/Output.php', - 'Symfony\\Component\\Console\\Output\\OutputInterface' => __DIR__ . '/..' . '/symfony/console/Output/OutputInterface.php', - 'Symfony\\Component\\Console\\Output\\StreamOutput' => __DIR__ . '/..' . '/symfony/console/Output/StreamOutput.php', - 'Symfony\\Component\\Console\\Output\\TrimmedBufferOutput' => __DIR__ . '/..' . '/symfony/console/Output/TrimmedBufferOutput.php', - 'Symfony\\Component\\Console\\Question\\ChoiceQuestion' => __DIR__ . '/..' . '/symfony/console/Question/ChoiceQuestion.php', - 'Symfony\\Component\\Console\\Question\\ConfirmationQuestion' => __DIR__ . '/..' . '/symfony/console/Question/ConfirmationQuestion.php', - 'Symfony\\Component\\Console\\Question\\Question' => __DIR__ . '/..' . '/symfony/console/Question/Question.php', - 'Symfony\\Component\\Console\\SignalRegistry\\SignalMap' => __DIR__ . '/..' . '/symfony/console/SignalRegistry/SignalMap.php', - 'Symfony\\Component\\Console\\SignalRegistry\\SignalRegistry' => __DIR__ . '/..' . '/symfony/console/SignalRegistry/SignalRegistry.php', - 'Symfony\\Component\\Console\\SingleCommandApplication' => __DIR__ . '/..' . '/symfony/console/SingleCommandApplication.php', - 'Symfony\\Component\\Console\\Style\\OutputStyle' => __DIR__ . '/..' . '/symfony/console/Style/OutputStyle.php', - 'Symfony\\Component\\Console\\Style\\StyleInterface' => __DIR__ . '/..' . '/symfony/console/Style/StyleInterface.php', - 'Symfony\\Component\\Console\\Style\\SymfonyStyle' => __DIR__ . '/..' . '/symfony/console/Style/SymfonyStyle.php', - 'Symfony\\Component\\Console\\Terminal' => __DIR__ . '/..' . '/symfony/console/Terminal.php', - 'Symfony\\Component\\Console\\Tester\\ApplicationTester' => __DIR__ . '/..' . '/symfony/console/Tester/ApplicationTester.php', - 'Symfony\\Component\\Console\\Tester\\CommandCompletionTester' => __DIR__ . '/..' . '/symfony/console/Tester/CommandCompletionTester.php', - 'Symfony\\Component\\Console\\Tester\\CommandTester' => __DIR__ . '/..' . '/symfony/console/Tester/CommandTester.php', - 'Symfony\\Component\\Console\\Tester\\Constraint\\CommandIsSuccessful' => __DIR__ . '/..' . '/symfony/console/Tester/Constraint/CommandIsSuccessful.php', - 'Symfony\\Component\\Console\\Tester\\TesterTrait' => __DIR__ . '/..' . '/symfony/console/Tester/TesterTrait.php', - 'Symfony\\Component\\EventDispatcher\\Attribute\\AsEventListener' => __DIR__ . '/..' . '/symfony/event-dispatcher/Attribute/AsEventListener.php', - 'Symfony\\Component\\EventDispatcher\\Debug\\TraceableEventDispatcher' => __DIR__ . '/..' . '/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php', - 'Symfony\\Component\\EventDispatcher\\Debug\\WrappedListener' => __DIR__ . '/..' . '/symfony/event-dispatcher/Debug/WrappedListener.php', - 'Symfony\\Component\\EventDispatcher\\DependencyInjection\\AddEventAliasesPass' => __DIR__ . '/..' . '/symfony/event-dispatcher/DependencyInjection/AddEventAliasesPass.php', - 'Symfony\\Component\\EventDispatcher\\DependencyInjection\\RegisterListenersPass' => __DIR__ . '/..' . '/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php', - 'Symfony\\Component\\EventDispatcher\\EventDispatcher' => __DIR__ . '/..' . '/symfony/event-dispatcher/EventDispatcher.php', - 'Symfony\\Component\\EventDispatcher\\EventDispatcherInterface' => __DIR__ . '/..' . '/symfony/event-dispatcher/EventDispatcherInterface.php', - 'Symfony\\Component\\EventDispatcher\\EventSubscriberInterface' => __DIR__ . '/..' . '/symfony/event-dispatcher/EventSubscriberInterface.php', - 'Symfony\\Component\\EventDispatcher\\GenericEvent' => __DIR__ . '/..' . '/symfony/event-dispatcher/GenericEvent.php', - 'Symfony\\Component\\EventDispatcher\\ImmutableEventDispatcher' => __DIR__ . '/..' . '/symfony/event-dispatcher/ImmutableEventDispatcher.php', - 'Symfony\\Component\\Filesystem\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/filesystem/Exception/ExceptionInterface.php', - 'Symfony\\Component\\Filesystem\\Exception\\FileNotFoundException' => __DIR__ . '/..' . '/symfony/filesystem/Exception/FileNotFoundException.php', - 'Symfony\\Component\\Filesystem\\Exception\\IOException' => __DIR__ . '/..' . '/symfony/filesystem/Exception/IOException.php', - 'Symfony\\Component\\Filesystem\\Exception\\IOExceptionInterface' => __DIR__ . '/..' . '/symfony/filesystem/Exception/IOExceptionInterface.php', - 'Symfony\\Component\\Filesystem\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/filesystem/Exception/InvalidArgumentException.php', - 'Symfony\\Component\\Filesystem\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/filesystem/Exception/RuntimeException.php', - 'Symfony\\Component\\Filesystem\\Filesystem' => __DIR__ . '/..' . '/symfony/filesystem/Filesystem.php', - 'Symfony\\Component\\Filesystem\\Path' => __DIR__ . '/..' . '/symfony/filesystem/Path.php', - 'Symfony\\Component\\Finder\\Comparator\\Comparator' => __DIR__ . '/..' . '/symfony/finder/Comparator/Comparator.php', - 'Symfony\\Component\\Finder\\Comparator\\DateComparator' => __DIR__ . '/..' . '/symfony/finder/Comparator/DateComparator.php', - 'Symfony\\Component\\Finder\\Comparator\\NumberComparator' => __DIR__ . '/..' . '/symfony/finder/Comparator/NumberComparator.php', - 'Symfony\\Component\\Finder\\Exception\\AccessDeniedException' => __DIR__ . '/..' . '/symfony/finder/Exception/AccessDeniedException.php', - 'Symfony\\Component\\Finder\\Exception\\DirectoryNotFoundException' => __DIR__ . '/..' . '/symfony/finder/Exception/DirectoryNotFoundException.php', - 'Symfony\\Component\\Finder\\Finder' => __DIR__ . '/..' . '/symfony/finder/Finder.php', - 'Symfony\\Component\\Finder\\Gitignore' => __DIR__ . '/..' . '/symfony/finder/Gitignore.php', - 'Symfony\\Component\\Finder\\Glob' => __DIR__ . '/..' . '/symfony/finder/Glob.php', - 'Symfony\\Component\\Finder\\Iterator\\CustomFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/CustomFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\DateRangeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/DateRangeFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\DepthRangeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/DepthRangeFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\ExcludeDirectoryFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\FileTypeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/FileTypeFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\FilecontentFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/FilecontentFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\FilenameFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/FilenameFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\LazyIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/LazyIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\MultiplePcreFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/MultiplePcreFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\PathFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/PathFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\RecursiveDirectoryIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/RecursiveDirectoryIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\SizeRangeFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/SizeRangeFilterIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\SortableIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/SortableIterator.php', - 'Symfony\\Component\\Finder\\Iterator\\VcsIgnoredFilterIterator' => __DIR__ . '/..' . '/symfony/finder/Iterator/VcsIgnoredFilterIterator.php', - 'Symfony\\Component\\Finder\\SplFileInfo' => __DIR__ . '/..' . '/symfony/finder/SplFileInfo.php', - 'Symfony\\Component\\OptionsResolver\\Debug\\OptionsResolverIntrospector' => __DIR__ . '/..' . '/symfony/options-resolver/Debug/OptionsResolverIntrospector.php', - 'Symfony\\Component\\OptionsResolver\\Exception\\AccessException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/AccessException.php', - 'Symfony\\Component\\OptionsResolver\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/ExceptionInterface.php', - 'Symfony\\Component\\OptionsResolver\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/InvalidArgumentException.php', - 'Symfony\\Component\\OptionsResolver\\Exception\\InvalidOptionsException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/InvalidOptionsException.php', - 'Symfony\\Component\\OptionsResolver\\Exception\\MissingOptionsException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/MissingOptionsException.php', - 'Symfony\\Component\\OptionsResolver\\Exception\\NoConfigurationException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/NoConfigurationException.php', - 'Symfony\\Component\\OptionsResolver\\Exception\\NoSuchOptionException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/NoSuchOptionException.php', - 'Symfony\\Component\\OptionsResolver\\Exception\\OptionDefinitionException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/OptionDefinitionException.php', - 'Symfony\\Component\\OptionsResolver\\Exception\\UndefinedOptionsException' => __DIR__ . '/..' . '/symfony/options-resolver/Exception/UndefinedOptionsException.php', - 'Symfony\\Component\\OptionsResolver\\OptionConfigurator' => __DIR__ . '/..' . '/symfony/options-resolver/OptionConfigurator.php', - 'Symfony\\Component\\OptionsResolver\\Options' => __DIR__ . '/..' . '/symfony/options-resolver/Options.php', - 'Symfony\\Component\\OptionsResolver\\OptionsResolver' => __DIR__ . '/..' . '/symfony/options-resolver/OptionsResolver.php', - 'Symfony\\Component\\Process\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/process/Exception/ExceptionInterface.php', - 'Symfony\\Component\\Process\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/process/Exception/InvalidArgumentException.php', - 'Symfony\\Component\\Process\\Exception\\LogicException' => __DIR__ . '/..' . '/symfony/process/Exception/LogicException.php', - 'Symfony\\Component\\Process\\Exception\\ProcessFailedException' => __DIR__ . '/..' . '/symfony/process/Exception/ProcessFailedException.php', - 'Symfony\\Component\\Process\\Exception\\ProcessSignaledException' => __DIR__ . '/..' . '/symfony/process/Exception/ProcessSignaledException.php', - 'Symfony\\Component\\Process\\Exception\\ProcessTimedOutException' => __DIR__ . '/..' . '/symfony/process/Exception/ProcessTimedOutException.php', - 'Symfony\\Component\\Process\\Exception\\RunProcessFailedException' => __DIR__ . '/..' . '/symfony/process/Exception/RunProcessFailedException.php', - 'Symfony\\Component\\Process\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/process/Exception/RuntimeException.php', - 'Symfony\\Component\\Process\\ExecutableFinder' => __DIR__ . '/..' . '/symfony/process/ExecutableFinder.php', - 'Symfony\\Component\\Process\\InputStream' => __DIR__ . '/..' . '/symfony/process/InputStream.php', - 'Symfony\\Component\\Process\\Messenger\\RunProcessContext' => __DIR__ . '/..' . '/symfony/process/Messenger/RunProcessContext.php', - 'Symfony\\Component\\Process\\Messenger\\RunProcessMessage' => __DIR__ . '/..' . '/symfony/process/Messenger/RunProcessMessage.php', - 'Symfony\\Component\\Process\\Messenger\\RunProcessMessageHandler' => __DIR__ . '/..' . '/symfony/process/Messenger/RunProcessMessageHandler.php', - 'Symfony\\Component\\Process\\PhpExecutableFinder' => __DIR__ . '/..' . '/symfony/process/PhpExecutableFinder.php', - 'Symfony\\Component\\Process\\PhpProcess' => __DIR__ . '/..' . '/symfony/process/PhpProcess.php', - 'Symfony\\Component\\Process\\PhpSubprocess' => __DIR__ . '/..' . '/symfony/process/PhpSubprocess.php', - 'Symfony\\Component\\Process\\Pipes\\AbstractPipes' => __DIR__ . '/..' . '/symfony/process/Pipes/AbstractPipes.php', - 'Symfony\\Component\\Process\\Pipes\\PipesInterface' => __DIR__ . '/..' . '/symfony/process/Pipes/PipesInterface.php', - 'Symfony\\Component\\Process\\Pipes\\UnixPipes' => __DIR__ . '/..' . '/symfony/process/Pipes/UnixPipes.php', - 'Symfony\\Component\\Process\\Pipes\\WindowsPipes' => __DIR__ . '/..' . '/symfony/process/Pipes/WindowsPipes.php', - 'Symfony\\Component\\Process\\Process' => __DIR__ . '/..' . '/symfony/process/Process.php', - 'Symfony\\Component\\Process\\ProcessUtils' => __DIR__ . '/..' . '/symfony/process/ProcessUtils.php', - 'Symfony\\Component\\Stopwatch\\Section' => __DIR__ . '/..' . '/symfony/stopwatch/Section.php', - 'Symfony\\Component\\Stopwatch\\Stopwatch' => __DIR__ . '/..' . '/symfony/stopwatch/Stopwatch.php', - 'Symfony\\Component\\Stopwatch\\StopwatchEvent' => __DIR__ . '/..' . '/symfony/stopwatch/StopwatchEvent.php', - 'Symfony\\Component\\Stopwatch\\StopwatchPeriod' => __DIR__ . '/..' . '/symfony/stopwatch/StopwatchPeriod.php', - 'Symfony\\Component\\String\\AbstractString' => __DIR__ . '/..' . '/symfony/string/AbstractString.php', - 'Symfony\\Component\\String\\AbstractUnicodeString' => __DIR__ . '/..' . '/symfony/string/AbstractUnicodeString.php', - 'Symfony\\Component\\String\\ByteString' => __DIR__ . '/..' . '/symfony/string/ByteString.php', - 'Symfony\\Component\\String\\CodePointString' => __DIR__ . '/..' . '/symfony/string/CodePointString.php', - 'Symfony\\Component\\String\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/string/Exception/ExceptionInterface.php', - 'Symfony\\Component\\String\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/string/Exception/InvalidArgumentException.php', - 'Symfony\\Component\\String\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/string/Exception/RuntimeException.php', - 'Symfony\\Component\\String\\Inflector\\EnglishInflector' => __DIR__ . '/..' . '/symfony/string/Inflector/EnglishInflector.php', - 'Symfony\\Component\\String\\Inflector\\FrenchInflector' => __DIR__ . '/..' . '/symfony/string/Inflector/FrenchInflector.php', - 'Symfony\\Component\\String\\Inflector\\InflectorInterface' => __DIR__ . '/..' . '/symfony/string/Inflector/InflectorInterface.php', - 'Symfony\\Component\\String\\LazyString' => __DIR__ . '/..' . '/symfony/string/LazyString.php', - 'Symfony\\Component\\String\\Slugger\\AsciiSlugger' => __DIR__ . '/..' . '/symfony/string/Slugger/AsciiSlugger.php', - 'Symfony\\Component\\String\\Slugger\\SluggerInterface' => __DIR__ . '/..' . '/symfony/string/Slugger/SluggerInterface.php', - 'Symfony\\Component\\String\\UnicodeString' => __DIR__ . '/..' . '/symfony/string/UnicodeString.php', - 'Symfony\\Contracts\\EventDispatcher\\Event' => __DIR__ . '/..' . '/symfony/event-dispatcher-contracts/Event.php', - 'Symfony\\Contracts\\EventDispatcher\\EventDispatcherInterface' => __DIR__ . '/..' . '/symfony/event-dispatcher-contracts/EventDispatcherInterface.php', - 'Symfony\\Contracts\\Service\\Attribute\\Required' => __DIR__ . '/..' . '/symfony/service-contracts/Attribute/Required.php', - 'Symfony\\Contracts\\Service\\Attribute\\SubscribedService' => __DIR__ . '/..' . '/symfony/service-contracts/Attribute/SubscribedService.php', - 'Symfony\\Contracts\\Service\\ResetInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ResetInterface.php', - 'Symfony\\Contracts\\Service\\ServiceLocatorTrait' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceLocatorTrait.php', - 'Symfony\\Contracts\\Service\\ServiceProviderInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceProviderInterface.php', - 'Symfony\\Contracts\\Service\\ServiceSubscriberInterface' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceSubscriberInterface.php', - 'Symfony\\Contracts\\Service\\ServiceSubscriberTrait' => __DIR__ . '/..' . '/symfony/service-contracts/ServiceSubscriberTrait.php', - 'Symfony\\Polyfill\\Ctype\\Ctype' => __DIR__ . '/..' . '/symfony/polyfill-ctype/Ctype.php', - 'Symfony\\Polyfill\\Intl\\Grapheme\\Grapheme' => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme/Grapheme.php', - 'Symfony\\Polyfill\\Intl\\Normalizer\\Normalizer' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/Normalizer.php', - 'Symfony\\Polyfill\\Mbstring\\Mbstring' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/Mbstring.php', - 'Symfony\\Polyfill\\Php80\\Php80' => __DIR__ . '/..' . '/symfony/polyfill-php80/Php80.php', - 'Symfony\\Polyfill\\Php80\\PhpToken' => __DIR__ . '/..' . '/symfony/polyfill-php80/PhpToken.php', - 'Symfony\\Polyfill\\Php81\\Php81' => __DIR__ . '/..' . '/symfony/polyfill-php81/Php81.php', - 'UnhandledMatchError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php', - 'ValueError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/ValueError.php', ); public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInite1765f078aa62628913827ce651850ac::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInite1765f078aa62628913827ce651850ac::$prefixDirsPsr4; - $loader->classMap = ComposerStaticInite1765f078aa62628913827ce651850ac::$classMap; + $loader->prefixLengthsPsr4 = ComposerStaticInit0561655749add06403fad08441d54811::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInit0561655749add06403fad08441d54811::$prefixDirsPsr4; + $loader->classMap = ComposerStaticInit0561655749add06403fad08441d54811::$classMap; }, null, ClassLoader::class); } diff --git a/src/vendor/composer/installed.json b/src/vendor/composer/installed.json new file mode 100644 index 0000000..f20a6c4 --- /dev/null +++ b/src/vendor/composer/installed.json @@ -0,0 +1,5 @@ +{ + "packages": [], + "dev": false, + "dev-package-names": [] +} diff --git a/src/vendor/composer/installed.php b/src/vendor/composer/installed.php new file mode 100644 index 0000000..ab3a1ae --- /dev/null +++ b/src/vendor/composer/installed.php @@ -0,0 +1,23 @@ + array( + 'pretty_version' => '2.0.0', + 'version' => '2.0.0.0', + 'type' => 'prestashop-module', + 'install_path' => __DIR__ . '/../../', + 'aliases' => array(), + 'reference' => NULL, + 'name' => 'smaily/smailyforprestashop', + 'dev' => false, + ), + 'versions' => array( + 'smaily/smailyforprestashop' => array( + 'pretty_version' => '2.0.0', + 'version' => '2.0.0.0', + 'type' => 'prestashop-module', + 'install_path' => __DIR__ . '/../../', + 'aliases' => array(), + 'reference' => NULL, + 'dev_requirement' => false, + ), + ), +); From 9aee7f4d59065a7aa8abe447ed3ff493d745ed4a Mon Sep 17 00:00:00 2001 From: Kaarel Date: Tue, 14 May 2024 13:19:04 +0300 Subject: [PATCH 101/114] Install composer deps during release build --- .github/workflows/release.yaml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index e2e5a83..884e053 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -16,11 +16,22 @@ jobs: - name: Rename src directory run: mv ./src ./smailyforprestashop + - name: Install dependencies + uses: php-actions/composer@v6 + with: + dev: no + progress: yes + working_dir: smailyforprestashop + - name: Compress ZIP uses: TheDoctor0/zip-release@v0.3.0 with: filename: release.zip path: smailyforprestashop + exclusions: > + /.git* + /.php-cs-fixer.dist.php + /.phpstan.neon - name: Get release id: get_release_url From 22ec55e14696e993d20012e448fafad99a587c97 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Tue, 14 May 2024 13:19:20 +0300 Subject: [PATCH 102/114] Ignore vendor deps --- src/.gitignore | 2 + src/vendor/autoload.php | 7 - src/vendor/composer/ClassLoader.php | 572 -------------------- src/vendor/composer/InstalledVersions.php | 350 ------------ src/vendor/composer/LICENSE | 19 - src/vendor/composer/autoload_classmap.php | 10 - src/vendor/composer/autoload_namespaces.php | 9 - src/vendor/composer/autoload_psr4.php | 11 - src/vendor/composer/autoload_real.php | 57 -- src/vendor/composer/autoload_static.php | 41 -- src/vendor/composer/installed.json | 5 - src/vendor/composer/installed.php | 23 - src/vendor/composer/platform_check.php | 26 - 13 files changed, 2 insertions(+), 1130 deletions(-) delete mode 100644 src/vendor/autoload.php delete mode 100644 src/vendor/composer/ClassLoader.php delete mode 100644 src/vendor/composer/InstalledVersions.php delete mode 100644 src/vendor/composer/LICENSE delete mode 100644 src/vendor/composer/autoload_classmap.php delete mode 100644 src/vendor/composer/autoload_namespaces.php delete mode 100644 src/vendor/composer/autoload_psr4.php delete mode 100644 src/vendor/composer/autoload_real.php delete mode 100644 src/vendor/composer/autoload_static.php delete mode 100644 src/vendor/composer/installed.json delete mode 100644 src/vendor/composer/installed.php delete mode 100644 src/vendor/composer/platform_check.php diff --git a/src/.gitignore b/src/.gitignore index c3ed10e..7a8924e 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -1 +1,3 @@ *.cache + +vendor/* diff --git a/src/vendor/autoload.php b/src/vendor/autoload.php deleted file mode 100644 index a73001a..0000000 --- a/src/vendor/autoload.php +++ /dev/null @@ -1,7 +0,0 @@ - - * Jordi Boggiano - * - * 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 - * @author Jordi Boggiano - * @see https://www.php-fig.org/psr/psr-0/ - * @see https://www.php-fig.org/psr/psr-4/ - */ -class ClassLoader -{ - /** @var ?string */ - private $vendorDir; - - // PSR-4 - /** - * @var array[] - * @psalm-var array> - */ - private $prefixLengthsPsr4 = array(); - /** - * @var array[] - * @psalm-var array> - */ - private $prefixDirsPsr4 = array(); - /** - * @var array[] - * @psalm-var array - */ - private $fallbackDirsPsr4 = array(); - - // PSR-0 - /** - * @var array[] - * @psalm-var array> - */ - private $prefixesPsr0 = array(); - /** - * @var array[] - * @psalm-var array - */ - private $fallbackDirsPsr0 = array(); - - /** @var bool */ - private $useIncludePath = false; - - /** - * @var string[] - * @psalm-var array - */ - private $classMap = array(); - - /** @var bool */ - private $classMapAuthoritative = false; - - /** - * @var bool[] - * @psalm-var array - */ - private $missingClasses = array(); - - /** @var ?string */ - private $apcuPrefix; - - /** - * @var self[] - */ - private static $registeredLoaders = array(); - - /** - * @param ?string $vendorDir - */ - public function __construct($vendorDir = null) - { - $this->vendorDir = $vendorDir; - } - - /** - * @return string[] - */ - public function getPrefixes() - { - if (!empty($this->prefixesPsr0)) { - return call_user_func_array('array_merge', array_values($this->prefixesPsr0)); - } - - return array(); - } - - /** - * @return array[] - * @psalm-return array> - */ - public function getPrefixesPsr4() - { - return $this->prefixDirsPsr4; - } - - /** - * @return array[] - * @psalm-return array - */ - public function getFallbackDirs() - { - return $this->fallbackDirsPsr0; - } - - /** - * @return array[] - * @psalm-return array - */ - public function getFallbackDirsPsr4() - { - return $this->fallbackDirsPsr4; - } - - /** - * @return string[] Array of classname => path - * @psalm-return array - */ - public function getClassMap() - { - return $this->classMap; - } - - /** - * @param string[] $classMap Class to filename map - * @psalm-param array $classMap - * - * @return void - */ - 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 string[]|string $paths The PSR-0 root directories - * @param bool $prepend Whether to prepend the directories - * - * @return void - */ - 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 string[]|string $paths The PSR-4 base directories - * @param bool $prepend Whether to prepend the directories - * - * @throws \InvalidArgumentException - * - * @return void - */ - 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 string[]|string $paths The PSR-0 base directories - * - * @return void - */ - 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 string[]|string $paths The PSR-4 base directories - * - * @throws \InvalidArgumentException - * - * @return void - */ - 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 - * - * @return void - */ - 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 - * - * @return void - */ - 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 - * - * @return void - */ - 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 - * - * @return void - */ - 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. - * - * @return void - */ - 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 true|null True if loaded, null otherwise - */ - public function loadClass($class) - { - if ($file = $this->findFile($class)) { - includeFile($file); - - return true; - } - - return null; - } - - /** - * 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; - } - - /** - * @param string $class - * @param string $ext - * @return string|false - */ - 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. - * - * @param string $file - * @return void - * @private - */ -function includeFile($file) -{ - include $file; -} diff --git a/src/vendor/composer/InstalledVersions.php b/src/vendor/composer/InstalledVersions.php deleted file mode 100644 index d50e0c9..0000000 --- a/src/vendor/composer/InstalledVersions.php +++ /dev/null @@ -1,350 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer; - -use Composer\Autoload\ClassLoader; -use Composer\Semver\VersionParser; - -/** - * This class is copied in every Composer installed project and available to all - * - * See also https://getcomposer.org/doc/07-runtime.md#installed-versions - * - * To require its presence, you can require `composer-runtime-api ^2.0` - */ -class InstalledVersions -{ - /** - * @var mixed[]|null - * @psalm-var array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array}|array{}|null - */ - private static $installed; - - /** - * @var bool|null - */ - private static $canGetVendors; - - /** - * @var array[] - * @psalm-var array}> - */ - private static $installedByVendor = array(); - - /** - * Returns a list of all package names which are present, either by being installed, replaced or provided - * - * @return string[] - * @psalm-return list - */ - 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))); - } - - /** - * Returns a list of all package names with a specific type e.g. 'library' - * - * @param string $type - * @return string[] - * @psalm-return list - */ - public static function getInstalledPackagesByType($type) - { - $packagesByType = array(); - - foreach (self::getInstalled() as $installed) { - foreach ($installed['versions'] as $name => $package) { - if (isset($package['type']) && $package['type'] === $type) { - $packagesByType[] = $name; - } - } - } - - return $packagesByType; - } - - /** - * Checks whether the given package is installed - * - * This also returns true if the package name is provided or replaced by another package - * - * @param string $packageName - * @param bool $includeDevRequirements - * @return bool - */ - public static function isInstalled($packageName, $includeDevRequirements = true) - { - foreach (self::getInstalled() as $installed) { - if (isset($installed['versions'][$packageName])) { - return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']); - } - } - - return false; - } - - /** - * Checks whether the given package satisfies a version constraint - * - * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call: - * - * Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3') - * - * @param VersionParser $parser Install composer/semver to have access to this class and functionality - * @param string $packageName - * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package - * @return bool - */ - public static function satisfies(VersionParser $parser, $packageName, $constraint) - { - $constraint = $parser->parseConstraints($constraint); - $provided = $parser->parseConstraints(self::getVersionRanges($packageName)); - - return $provided->matches($constraint); - } - - /** - * Returns a version constraint representing all the range(s) which are installed for a given package - * - * It is easier to use this via isInstalled() with the $constraint argument if you need to check - * whether a given version of a package is installed, and not just whether it exists - * - * @param string $packageName - * @return string Version constraint usable with composer/semver - */ - 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'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present - */ - 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'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present - */ - 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'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference - */ - 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'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path. - */ - public static function getInstallPath($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null; - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @return array - * @psalm-return array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string} - */ - public static function getRootPackage() - { - $installed = self::getInstalled(); - - return $installed[0]['root']; - } - - /** - * Returns the raw installed.php data for custom implementations - * - * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect. - * @return array[] - * @psalm-return array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array} - */ - public static function getRawData() - { - @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED); - - if (null === self::$installed) { - // only require the installed.php file if this file is loaded from its dumped location, - // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 - if (substr(__DIR__, -8, 1) !== 'C') { - self::$installed = include __DIR__ . '/installed.php'; - } else { - self::$installed = array(); - } - } - - return self::$installed; - } - - /** - * Returns the raw data of all installed.php which are currently loaded for custom implementations - * - * @return array[] - * @psalm-return list}> - */ - public static function getAllRawData() - { - return self::getInstalled(); - } - - /** - * Lets you reload the static array from another file - * - * This is only useful for complex integrations in which a project needs to use - * this class but then also needs to execute another project's autoloader in process, - * and wants to ensure both projects have access to their version of installed.php. - * - * A typical case would be PHPUnit, where it would need to make sure it reads all - * the data it needs from this class, then call reload() with - * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure - * the project in which it runs can then also use this class safely, without - * interference between PHPUnit's dependencies and the project's dependencies. - * - * @param array[] $data A vendor/composer/installed.php data set - * @return void - * - * @psalm-param array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array} $data - */ - public static function reload($data) - { - self::$installed = $data; - self::$installedByVendor = array(); - } - - /** - * @return array[] - * @psalm-return list}> - */ - 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'; - if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) { - self::$installed = $installed[count($installed) - 1]; - } - } - } - } - - if (null === self::$installed) { - // only require the installed.php file if this file is loaded from its dumped location, - // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 - if (substr(__DIR__, -8, 1) !== 'C') { - self::$installed = require __DIR__ . '/installed.php'; - } else { - self::$installed = array(); - } - } - $installed[] = self::$installed; - - return $installed; - } -} diff --git a/src/vendor/composer/LICENSE b/src/vendor/composer/LICENSE deleted file mode 100644 index 62ecfd8..0000000 --- a/src/vendor/composer/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -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. diff --git a/src/vendor/composer/autoload_classmap.php b/src/vendor/composer/autoload_classmap.php deleted file mode 100644 index b26f1b1..0000000 --- a/src/vendor/composer/autoload_classmap.php +++ /dev/null @@ -1,10 +0,0 @@ - $vendorDir . '/composer/InstalledVersions.php', -); diff --git a/src/vendor/composer/autoload_namespaces.php b/src/vendor/composer/autoload_namespaces.php deleted file mode 100644 index b7fc012..0000000 --- a/src/vendor/composer/autoload_namespaces.php +++ /dev/null @@ -1,9 +0,0 @@ - array($baseDir . '/lib'), - 'PrestaShop\\Module\\SmailyForPrestaShop\\' => array($baseDir . '/src'), -); diff --git a/src/vendor/composer/autoload_real.php b/src/vendor/composer/autoload_real.php deleted file mode 100644 index a2447d2..0000000 --- a/src/vendor/composer/autoload_real.php +++ /dev/null @@ -1,57 +0,0 @@ -= 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\ComposerStaticInit0561655749add06403fad08441d54811::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(false); - - return $loader; - } -} diff --git a/src/vendor/composer/autoload_static.php b/src/vendor/composer/autoload_static.php deleted file mode 100644 index fde3bf4..0000000 --- a/src/vendor/composer/autoload_static.php +++ /dev/null @@ -1,41 +0,0 @@ - - array ( - 'PrestaShop\\Module\\SmailyForPrestaShop\\Lib\\' => 42, - 'PrestaShop\\Module\\SmailyForPrestaShop\\' => 38, - ), - ); - - public static $prefixDirsPsr4 = array ( - 'PrestaShop\\Module\\SmailyForPrestaShop\\Lib\\' => - array ( - 0 => __DIR__ . '/../..' . '/lib', - ), - 'PrestaShop\\Module\\SmailyForPrestaShop\\' => - array ( - 0 => __DIR__ . '/../..' . '/src', - ), - ); - - public static $classMap = array ( - 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', - ); - - public static function getInitializer(ClassLoader $loader) - { - return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInit0561655749add06403fad08441d54811::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInit0561655749add06403fad08441d54811::$prefixDirsPsr4; - $loader->classMap = ComposerStaticInit0561655749add06403fad08441d54811::$classMap; - - }, null, ClassLoader::class); - } -} diff --git a/src/vendor/composer/installed.json b/src/vendor/composer/installed.json deleted file mode 100644 index f20a6c4..0000000 --- a/src/vendor/composer/installed.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "packages": [], - "dev": false, - "dev-package-names": [] -} diff --git a/src/vendor/composer/installed.php b/src/vendor/composer/installed.php deleted file mode 100644 index ab3a1ae..0000000 --- a/src/vendor/composer/installed.php +++ /dev/null @@ -1,23 +0,0 @@ - array( - 'pretty_version' => '2.0.0', - 'version' => '2.0.0.0', - 'type' => 'prestashop-module', - 'install_path' => __DIR__ . '/../../', - 'aliases' => array(), - 'reference' => NULL, - 'name' => 'smaily/smailyforprestashop', - 'dev' => false, - ), - 'versions' => array( - 'smaily/smailyforprestashop' => array( - 'pretty_version' => '2.0.0', - 'version' => '2.0.0.0', - 'type' => 'prestashop-module', - 'install_path' => __DIR__ . '/../../', - 'aliases' => array(), - 'reference' => NULL, - 'dev_requirement' => false, - ), - ), -); diff --git a/src/vendor/composer/platform_check.php b/src/vendor/composer/platform_check.php deleted file mode 100644 index 589e9e7..0000000 --- a/src/vendor/composer/platform_check.php +++ /dev/null @@ -1,26 +0,0 @@ -= 70200)) { - $issues[] = 'Your Composer dependencies require a PHP version ">= 7.2.0". You are running ' . PHP_VERSION . '.'; -} - -if ($issues) { - if (!headers_sent()) { - header('HTTP/1.1 500 Internal Server Error'); - } - if (!ini_get('display_errors')) { - if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') { - fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL); - } elseif (!headers_sent()) { - echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL; - } - } - trigger_error( - 'Composer detected issues in your platform: ' . implode(' ', $issues), - E_USER_ERROR - ); -} From c24c21c719a72c774f9025199622d9d952fcc191 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Tue, 14 May 2024 13:23:05 +0300 Subject: [PATCH 103/114] Update contributing.md --- CONTRIBUTING.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d431cc8..4a34c76 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -22,6 +22,10 @@ Next, change your working directory to the local repository: $ cd smaily-prestashop-module +Install composer dependencies: + + $ composer install --working-dir src/ + And run the environment: $ docker compose up -d From 0591c87f6410da595b87871ef513805640075179 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Wed, 15 May 2024 12:48:03 +0300 Subject: [PATCH 104/114] Build RSS using DOMDocument --- src/controllers/front/SmailyRssFeed.php | 2 +- src/lib/Rss.php | 57 +++++++ src/src/Controller/RssFeedController.php | 148 ++++++++++++------ src/src/Form/RssFeedFormDataConfiguration.php | 27 +--- 4 files changed, 158 insertions(+), 76 deletions(-) create mode 100644 src/lib/Rss.php diff --git a/src/controllers/front/SmailyRssFeed.php b/src/controllers/front/SmailyRssFeed.php index 1ca4a8b..d39fa4f 100644 --- a/src/controllers/front/SmailyRssFeed.php +++ b/src/controllers/front/SmailyRssFeed.php @@ -36,7 +36,7 @@ class SmailyForPrestaShopSmailyRssFeedModuleFrontController extends ModuleFrontC public function initContent() { parent::initContent(); - header('Content-Type: application/xml'); + header('Content-Type: application/xml; charset=UTF-8'); $baseUrl = Tools::getHttpHost(true) . __PS_BASE_URI__; diff --git a/src/lib/Rss.php b/src/lib/Rss.php new file mode 100644 index 0000000..ccbaf7e --- /dev/null +++ b/src/lib/Rss.php @@ -0,0 +1,57 @@ +. + * + * @author Smaily + * @copyright 2024 Smaily + * @license GPL3 + */ +declare(strict_types=1); + +namespace PrestaShop\Module\SmailyForPrestaShop\Lib; + +if (!defined('_PS_VERSION_')) { + exit; +} + +class Rss +{ + /** + * Make RSS URL with query parameters. + * + * @return string + */ + public static function buildRssUrl(string $categoryId, string $limit, string $sortBy, string $sortOrder): string + { + $query_arguments = [ + 'limit' => $limit, + 'sort_by' => $sortBy, + 'sort_order' => $sortOrder, + ]; + + if (!empty($categoryId)) { + $query_arguments['category_id'] = $categoryId; + } + + return \Context::getContext()->link->getModuleLink( + 'smailyforprestashop', + 'SmailyRssFeed', + $query_arguments + ); + } +} diff --git a/src/src/Controller/RssFeedController.php b/src/src/Controller/RssFeedController.php index 0866138..ee7cbfb 100644 --- a/src/src/Controller/RssFeedController.php +++ b/src/src/Controller/RssFeedController.php @@ -29,6 +29,7 @@ exit; } +use PrestaShop\Module\SmailyForPrestaShop\Lib\Rss; use PrestaShop\Module\SmailyForPrestaShop\Model\RssFeedProductsCollection; class RssFeedController @@ -45,60 +46,107 @@ public function __construct() public function generateFeed(string $baseUrl, mixed $categoryId, int $limit, string $sortBy, string $sortOrder): string { - $rss = '' . - '' . - 'Store' . - htmlspecialchars($baseUrl) . 'Product Feed' . - date('D, d M Y H:i:s') . ''; + $xml = new \DOMDocument('1.0', 'UTF-8'); + $xml->formatOutput = true; + + $rss = $xml->createElement('rss'); + $rss->setAttribute('version', '2.0'); + $rss->setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:smly', 'https://sendsmaily.net/schema/editor/rss.xsd'); + $rss->setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:atom', 'http://www.w3.org/2005/Atom'); + $xml->appendChild($rss); + + $channel = $xml->createElement('channel'); + + $atomLink = $xml->createElement('atom:link'); + $atomLink->setAttribute('href', Rss::buildRssUrl($categoryId ? $categoryId : '', strval($limit), $sortBy, $sortOrder)); + $atomLink->setAttribute('rel', 'self'); + $atomLink->setAttribute('type', 'application/rss+xml'); + $channel->appendChild($atomLink); + + $title = $xml->createElement('title'); + $title->appendChild($xml->createCDATASection('Store')); + $channel->appendChild($title); + + $link = $xml->createElement('link'); + $link->appendChild($xml->createCDATASection(htmlspecialchars($baseUrl))); + $channel->appendChild($link); + + $description = $xml->createElement('description'); + $description->appendChild($xml->createCDATASection('Product Feed')); + $channel->appendChild($description); + + $lastBuildDate = $xml->createElement('lastBuildDate'); + $lastBuildDate->appendChild($xml->createCDATASection(gmdate(DATE_RFC2822, strtotime(date('D, d M Y H:i:s'))))); + $channel->appendChild($lastBuildDate); + + $rss->appendChild($channel); $products = $this->collection->getProducts($categoryId, $limit, $sortBy, $sortOrder); foreach ($products as $product) { - // Product data by id. - $prod = new \Product($product['id_product']); - // Product name. - $name = $product['name']; - // Product url. - $product_url = $prod->getLink(); - // Date added. - $date_add = $prod->date_add; - // Description (short). - $description_short = $product['description_short']; - // Product image. - $image = $prod->getCover($product['id_product']); - $image = new \Image($image['id_image']); - $product_photo = _PS_BASE_URL_ . _THEME_PROD_DIR_ . $image->getExistingImgPath() . '.' . - $image->image_format; - // Product price with tax. - $price = $prod->getPrice(); - // Get product price without discount. - $full_price = $prod->getPriceWithoutReduct(); - // Determine if there is discount. - $discount = 0; - if ($full_price > $price && $price > 0) { - $discount = ceil(($full_price - $price) / $full_price * 100); - } - // Add currency symbol. - $currencySymbol = \Currency::getDefaultCurrency()->sign; - $price = number_format($price, 2, '.', ',') . $currencySymbol; - $full_price = number_format($full_price, 2, '.', ',') . $currencySymbol; - $price_fields = ''; - if ($discount > 0) { - $price_fields = '' . $full_price . '-' . - $discount . '%'; - } - $rss .= ' - <![CDATA[' . $name . ']]> - - - ' . $baseUrl . ' - ' . date('D, d M Y H:i:s', strtotime($date_add)) . ' - - - ' . $price . '' . $price_fields . ' - '; + $channel->appendChild($this->generateItemNode($xml, $baseUrl, $product)); + } + + return $xml->saveXML(); + } + + private function generateItemNode(\DOMDocument $xml, string $baseUrl, array $product): \DOMNode + { + $prod = new \Product($product['id_product']); + + $item = $xml->createElement('item'); + + $title = $xml->createElement('title'); + $title->appendChild($xml->createCDATASection($product['name'])); + $item->appendChild($title); + + $link = $xml->createElement('link'); + $link->appendChild($xml->createCDATASection($prod->getLink())); + $item->appendChild($link); + + $gUID = $xml->createElement('guid'); + $gUID->setAttribute('isPermaLink', 'true'); + $gUID->appendChild($xml->createCDATASection($baseUrl)); + $item->appendChild($gUID); + + $pubDate = $xml->createElement('pubDate'); + $pubDate->appendChild($xml->createCDATASection(gmdate(DATE_RFC2822, strtotime(date('D, d M Y H:i:s', strtotime($prod->date_add)))))); + $item->appendChild($pubDate); + + $description = $xml->createElement('description'); + $description->appendChild($xml->createCDATASection($product['description_short'])); + $item->appendChild($description); + + $image = $prod->getCover($product['id_product']); + $image = new \Image($image['id_image']); + $product_photo = _PS_BASE_URL_ . _THEME_PROD_DIR_ . $image->getExistingImgPath() . '.' . $image->image_format; + + $enclosure = $xml->createElement('enclosure'); + $enclosure->setAttribute('url', $product_photo); + $enclosure->setAttribute('length', strval(filesize(sprintf('%s.%s', $image->getPathForCreation(), $image->image_format)))); + $enclosure->setAttribute('type', 'image/' . $image->image_format); + $item->appendChild($enclosure); + + $price = $prod->getPrice(); + $full_price = $prod->getPriceWithoutReduct(); + $discountPercentage = 0; + if ($full_price > $price && $price > 0) { + $discountPercentage = ceil(($full_price - $price) / $full_price * 100); + } + + $smlyPrice = $xml->createElement('smly:price'); + $smlyPrice->appendChild($xml->createCDATASection(number_format($price, 2, '.', ',') . \Currency::getDefaultCurrency()->sign)); + $item->appendChild($smlyPrice); + + if ($discountPercentage > 0) { + $oldPrice = $xml->createElement('smly:old_price'); + $oldPrice->appendChild($xml->createCDATASection(strval($full_price))); + $item->appendChild($oldPrice); + + $discount = $xml->createElement('smly:discount'); + $discount->appendChild($xml->createCDATASection($discountPercentage . '%')); + $item->appendChild($discount); } - $rss .= ''; - return $rss; + return $item; } } diff --git a/src/src/Form/RssFeedFormDataConfiguration.php b/src/src/Form/RssFeedFormDataConfiguration.php index c505bd3..081a749 100644 --- a/src/src/Form/RssFeedFormDataConfiguration.php +++ b/src/src/Form/RssFeedFormDataConfiguration.php @@ -29,6 +29,7 @@ exit; } +use PrestaShop\Module\SmailyForPrestaShop\Lib\Rss; use PrestaShop\PrestaShop\Core\Configuration\DataConfigurationInterface; use PrestaShop\PrestaShop\Core\ConfigurationInterface; @@ -54,7 +55,7 @@ public function getConfiguration(): array $return['product_limit'] = $this->configuration->get('SMAILY_RSS_LIMIT'); $return['sort_by'] = $this->configuration->get('SMAILY_RSS_SORT_BY'); $return['sort_order'] = $this->configuration->get('SMAILY_RSS_SORT_ORDER'); - $return['rss_url'] = $this->buildRssUrl( + $return['rss_url'] = Rss::buildRssUrl( $return['product_category_id'], $return['product_limit'], $return['sort_by'], @@ -96,28 +97,4 @@ public function validateConfiguration(array $formData): bool $formData['sort_order'] ); } - - /** - * Make RSS URL with query parameters. - * - * @return string - */ - public function buildRssUrl(string $categoryId, string $limit, string $sortBy, string $sortOrder): string - { - $query_arguments = [ - 'limit' => $limit, - 'sort_by' => $sortBy, - 'sort_order' => $sortOrder, - ]; - - if (!empty($categoryId)) { - $query_arguments['category_id'] = $categoryId; - } - - return \Context::getContext()->link->getModuleLink( - 'smailyforprestashop', - 'SmailyRssFeed', - $query_arguments - ); - } } From ea46e653d3c1a59a0d7696de761721d6938ab87f Mon Sep 17 00:00:00 2001 From: Kaarel Date: Wed, 15 May 2024 16:26:38 +0300 Subject: [PATCH 105/114] Redirect after successful form update --- src/src/Controller/ModuleConfigurationController.php | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/src/Controller/ModuleConfigurationController.php b/src/src/Controller/ModuleConfigurationController.php index af411f8..be8ff69 100644 --- a/src/src/Controller/ModuleConfigurationController.php +++ b/src/src/Controller/ModuleConfigurationController.php @@ -118,7 +118,6 @@ private function handleAccountFormSubmit(FormHandlerInterface $formHandler): Res if (empty($errors)) { $this->addFlash('success', $this->trans('Connected with Smaily account.', 'Modules.Smailyforprestashop.Admin')); - // Need redirect to query fresh automation flows. return $this->redirectToRoute('smailyforprestashop_module_configuration'); } @@ -148,7 +147,7 @@ private function handleCustomerSyncFormSubmit(FormHandlerInterface $formHandler) ); } - return $this->renderForms(); + return $this->redirectToRoute('smailyforprestashop_module_configuration'); } $this->flashErrors($errors); @@ -166,7 +165,7 @@ private function handleAbandonedCartFormSubmit(FormHandlerInterface $formHandler if (empty($errors)) { $this->addFlash('success', $this->trans('Configuration saved.', 'Modules.Smailyforprestashop.Admin')); - return $this->renderForms(); + return $this->redirectToRoute('smailyforprestashop_module_configuration'); } $this->flashErrors($errors); @@ -184,7 +183,7 @@ private function handleRssFeedFormSubmit(FormHandlerInterface $formHandler): Res if (empty($errors)) { $this->addFlash('success', $this->trans('RSS-feed URL updated.', 'Modules.Smailyforprestashop.Admin')); - return $this->renderForms(); + return $this->redirectToRoute('smailyforprestashop_module_configuration'); } $this->flashErrors($errors); From 090b5afc1be6f6c1ed6d410319df65fde9e74436 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Thu, 16 May 2024 11:35:59 +0300 Subject: [PATCH 106/114] Add latest translations --- CONTRIBUTING.md | 10 +++++++++ src/smailyforprestashop.php | 8 +++++++ .../ModulesSmailyforprestashopAdmin.et-EE.xlf | 22 ++++++++++++++----- 3 files changed, 34 insertions(+), 6 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4a34c76..230f756 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -83,3 +83,13 @@ You may notice that `php-cs-fixer` might not work for some PrestaShop image vers ## Invalidating cache There seems to be lot of issues related to cache being invalid. Sometimes the module routes are not found or services configuration is missing etc. Most of them can be fixed by pruning cache folder located in `/var/www/html/var/cache/dev`. Some versions use `admin-dev` folder. + +## Translating the module and Extracting translations + +PrestaShop allows to extract and translate the module in the admin panel. + +First you need to import the localization pack for the translatable language. Navigate to `International` > `Localization` and import the localization pack you want the module to be translated to. + +To translate the module navigate to `International` > `Translations`. Under `Modify translations` section select `Installed modules translations` as the type, `Smaily for PrestaShop`. + +Export the module translations and add them to `translations` directory. diff --git a/src/smailyforprestashop.php b/src/smailyforprestashop.php index 1f3abd2..18bb40b 100644 --- a/src/smailyforprestashop.php +++ b/src/smailyforprestashop.php @@ -113,4 +113,12 @@ public function hookActionCustomerAccountAdd($params): bool return $controller->optInCustomer($customer); } + + /** + * Enable using new translation system for translating module. + */ + public function isUsingNewTranslationSystem() + { + return true; + } } diff --git a/src/translations/et-EE/ModulesSmailyforprestashopAdmin.et-EE.xlf b/src/translations/et-EE/ModulesSmailyforprestashopAdmin.et-EE.xlf index 6dbcdaf..71312dd 100644 --- a/src/translations/et-EE/ModulesSmailyforprestashopAdmin.et-EE.xlf +++ b/src/translations/et-EE/ModulesSmailyforprestashopAdmin.et-EE.xlf @@ -22,9 +22,9 @@ Smaily PrestaShop-i mooduli uudiskirjaga liitumise automaatika on aktiivne. Seadistage kinnituskirjade ning voucherite saatmise loogika Smaily automaatika töövoos, et vältida topelt kirjade saatmist. Line: - - How to set up automation flow? - Kuidas luua automaatika töövooge? + + How to set up an automation flow? + Kuidas seadistada automaatika töövoogu? Line: @@ -217,6 +217,11 @@ Näiteks demo - https://demo.sendsmaily.net/ Line: + + Invalid subdomain value + Vigane alamdomeeni väärtus + Line: + Username Kasutajatunnus @@ -262,9 +267,9 @@ Ilmnes tõrge Smaily teenusega ühildumisel, proovige uuesti. Line: - - Enable Abandoed Cart - Aktiveeri Unustatud Ostukorvi Meeldetuletus + + Enable Abandoned Cart + Luba Unustatud Ostukorv Line: @@ -332,6 +337,11 @@ Palun sisesta cron identifikaator unustatud ostukorvide sünkroniseerimiseks Line: + + Please select an automation workflow for Abandoned Cart trigger. + Palun vali Unustatud Ostukorvile automaatika töövoog. + Line: + Abandoned Cart Unustatud Ostukorv From 234cf03ab95cef03b109ca14f66876c277449f8d Mon Sep 17 00:00:00 2001 From: Kaarel Date: Fri, 17 May 2024 11:12:47 +0300 Subject: [PATCH 107/114] Improve shopRestriction trim function --- src/src/Model/AbandonedCartCollection.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/src/Model/AbandonedCartCollection.php b/src/src/Model/AbandonedCartCollection.php index 3b35ed2..f0b3b08 100644 --- a/src/src/Model/AbandonedCartCollection.php +++ b/src/src/Model/AbandonedCartCollection.php @@ -55,7 +55,7 @@ public function __construct() private function getCarts() { // Legacy method that requires trimming as query strings were previously concatenated. - $shopRestriction = ltrim(\Shop::addSqlRestriction(\Shop::SHARE_CUSTOMER, 'c'), ' AND '); + $shopRestriction = trim(str_replace('AND', '', \Shop::addSqlRestriction(\Shop::SHARE_CUSTOMER, 'c'))); $sql = new \DbQuery(); $sql->select('c.`id_cart`, c.`id_customer`, c.`date_upd`, cu.`firstname`, cu.`lastname`, cu.`email`'); From bbde0cd85aedb234f7e75c7c388e0be3df7509ec Mon Sep 17 00:00:00 2001 From: Kaarel Date: Mon, 20 May 2024 08:47:32 +0300 Subject: [PATCH 108/114] Allow triggering opt-in flow without automation trigger. --- src/lib/Api.php | 55 +++++++++++++++ src/src/Controller/OptInController.php | 67 ++++++++++++------- .../CustomerSyncFormDataConfiguration.php | 8 --- 3 files changed, 98 insertions(+), 32 deletions(-) diff --git a/src/lib/Api.php b/src/lib/Api.php index 39bea82..aa8cddc 100644 --- a/src/lib/Api.php +++ b/src/lib/Api.php @@ -36,10 +36,19 @@ class Api { /** + * Smaily API client. + * * @var Client */ private $client; + /** + * Create an API client. + * + * @param string $subdomain + * @param string $username + * @param string $password + */ public function __construct(string $subdomain, string $username, string $password) { $this->client = new Client([ @@ -49,6 +58,13 @@ public function __construct(string $subdomain, string $username, string $passwor ]); } + /** + * Returns a list of automation workflows of an organization. + * + * @param int $limit + * + * @return ResponseInterface + */ public function listAutoresponders(int $limit = 100): ResponseInterface { return $this->client->get('api/autoresponder.php', [ @@ -58,6 +74,14 @@ public function listAutoresponders(int $limit = 100): ResponseInterface ]); } + /** + * Returns a list of contacts with unsubscribed status for an organization. + * + * @param int $limit + * @param int $offset + * + * @return ResponseInterface + */ public function listUnsubscribers(int $limit = 100, $offset = 0): ResponseInterface { return $this->client->get('api/contact.php', [ @@ -69,6 +93,13 @@ public function listUnsubscribers(int $limit = 100, $offset = 0): ResponseInterf ]); } + /** + * Creates subscribers with requested fields. This API endpoint does not trigger automation workflows. + * + * @param array $data + * + * @return ResponseInterface + */ public function createSubscribers(array $data): ResponseInterface { return $this->client->post('api/contact.php', [ @@ -76,6 +107,30 @@ public function createSubscribers(array $data): ResponseInterface ]); } + /** + * Opt-in subscribers. This endpoint triggers “subscriber opted-in” workflow. + * + * @param array $addresses + * + * @return ResponseInterface + */ + public function optInSubscribers(array $addresses): ResponseInterface + { + return $this->client->post('/api/autoresponder.php', [ + RequestOptions::JSON => [ + 'addresses' => $addresses, + ], + ]); + } + + /** + * Endpoint can be used to opt-in subscribers and target specific automation workflows with “form submitted” trigger. + * + * @param string $autoresponder + * @param array $addresses + * + * @return ResponseInterface + */ public function triggerAutomation(string $autoresponder, array $addresses): ResponseInterface { return $this->client->post('/api/autoresponder.php', [ diff --git a/src/src/Controller/OptInController.php b/src/src/Controller/OptInController.php index 154710e..b5889d8 100644 --- a/src/src/Controller/OptInController.php +++ b/src/src/Controller/OptInController.php @@ -68,34 +68,43 @@ public function optInCustomer(\Customer $customer): bool return false; } - $autoresponder = $this->configuration->get('SMAILY_OPTIN_AUTORESPONDER'); - if (empty($this->api) || empty($autoresponder)) { + if (empty($this->api)) { return false; } - $response = $this->api->triggerAutomation($autoresponder, [ - ['email' => $customer->email], - ]); + $autoresponder = $this->configuration->get('SMAILY_OPTIN_AUTORESPONDER'); + if (empty($autoresponder)) { + $response = $this->api->optInSubscribers([['email' => $customer->email]]); + } else { + $response = $this->api->triggerAutomation($autoresponder, [ + ['email' => $customer->email], + ]); + } if ($response->getStatusCode() !== 200) { + Logger::logErrorWithFormatting( + 'Failed to opt-in customer with email: %s, ' . + 'Smaily response HTTP response code: %s.', + $customer->email, + $response->getStatusCode() + ); + return false; } $body = json_decode($response->getBody()->getContents(), true); - - if (isset($body['code']) && $body['code'] === 101) { - return true; - } else { - Logger::logErrorWithFormatting('Failed to opt-in new customer with email: %s using autoresponder ID: %s. ' . + if (!isset($body['code']) || $body['code'] !== 101) { + Logger::logErrorWithFormatting('Failed to opt-in new customer with email: %s . ' . 'Smaily response code: %s, message: %s.', $customer->email, - $autoresponder, - $body['code'], - $body['message'] + isset($body['code']) ? $body['code'] : '', + isset($body['message']) ? $body['message'] : '' ); return false; } + + return true; } public function optInSubscriber(string $email): bool @@ -105,32 +114,42 @@ public function optInSubscriber(string $email): bool } $autoresponder = $this->configuration->get('SMAILY_OPTIN_AUTORESPONDER'); - if (empty($this->api) || empty($autoresponder)) { + if (empty($this->api)) { return false; } - $response = $this->api->triggerAutomation($autoresponder, [ - ['email' => $email], - ]); + if (empty($autoresponder)) { + $response = $this->api->optInSubscribers([['email' => $email]]); + } else { + $response = $this->api->triggerAutomation($autoresponder, [ + ['email' => $email], + ]); + } if ($response->getStatusCode() !== 200) { + Logger::logErrorWithFormatting( + 'Failed to opt-in customer with email: %s, ' . + 'Smaily response HTTP response code: %s.', + $email, + $response->getStatusCode() + ); + return false; } $body = json_decode($response->getBody()->getContents(), true); - if (isset($body['code']) && $body['code'] === 101) { - return true; - } else { - Logger::logErrorWithFormatting('Failed to opt-in new customer with email: %s using autoresponder ID: %s. ' . + if (!isset($body['code']) || $body['code'] !== 101) { + Logger::logErrorWithFormatting('Failed to opt-in new customer with email: %s . ' . 'Smaily response code: %s, message: %s.', $email, - $autoresponder, - $body['code'], - $body['message'] + isset($body['code']) ? $body['code'] : '', + isset($body['message']) ? $body['message'] : '' ); return false; } + + return true; } } diff --git a/src/src/Form/CustomerSyncFormDataConfiguration.php b/src/src/Form/CustomerSyncFormDataConfiguration.php index 40f9086..a973f30 100644 --- a/src/src/Form/CustomerSyncFormDataConfiguration.php +++ b/src/src/Form/CustomerSyncFormDataConfiguration.php @@ -76,14 +76,6 @@ public function updateConfiguration(array $formData): array ]; } - if ($optInEnabled && empty($autoresponder)) { - $errors[] = [ - 'key' => 'Please select an automation workflow for customer Opt-In trigger.', - 'domain' => 'Modules.Smailyforprestashop.Admin', - 'parameters' => [], - ]; - } - // Clear autoresponder when disabling customer sign-up; if (!$optInEnabled) { $autoresponder = null; From c68b77a1f9851d79e0c59a0cd28397aa00376904 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Mon, 20 May 2024 09:03:57 +0300 Subject: [PATCH 109/114] Add prod link as guild --- src/src/Controller/RssFeedController.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/src/Controller/RssFeedController.php b/src/src/Controller/RssFeedController.php index ee7cbfb..75e95dc 100644 --- a/src/src/Controller/RssFeedController.php +++ b/src/src/Controller/RssFeedController.php @@ -83,13 +83,13 @@ public function generateFeed(string $baseUrl, mixed $categoryId, int $limit, str $products = $this->collection->getProducts($categoryId, $limit, $sortBy, $sortOrder); foreach ($products as $product) { - $channel->appendChild($this->generateItemNode($xml, $baseUrl, $product)); + $channel->appendChild($this->generateItemNode($xml, $product)); } return $xml->saveXML(); } - private function generateItemNode(\DOMDocument $xml, string $baseUrl, array $product): \DOMNode + private function generateItemNode(\DOMDocument $xml, array $product): \DOMNode { $prod = new \Product($product['id_product']); @@ -105,7 +105,7 @@ private function generateItemNode(\DOMDocument $xml, string $baseUrl, array $pro $gUID = $xml->createElement('guid'); $gUID->setAttribute('isPermaLink', 'true'); - $gUID->appendChild($xml->createCDATASection($baseUrl)); + $gUID->appendChild($xml->createCDATASection($prod->getLink())); $item->appendChild($gUID); $pubDate = $xml->createElement('pubDate'); From 818b2033b591912609b55a85ae5dd2cc978dd198 Mon Sep 17 00:00:00 2001 From: Kaarel Date: Mon, 20 May 2024 11:09:19 +0300 Subject: [PATCH 110/114] Add warning when enabling customer opt in, improve form help --- .../Controller/ModuleConfigurationController.php | 14 ++++++++------ .../admin/customerSyncConfiguration.html.twig | 13 ++++++++++++- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/src/Controller/ModuleConfigurationController.php b/src/src/Controller/ModuleConfigurationController.php index be8ff69..0ed712e 100644 --- a/src/src/Controller/ModuleConfigurationController.php +++ b/src/src/Controller/ModuleConfigurationController.php @@ -138,13 +138,14 @@ private function handleCustomerSyncFormSubmit(FormHandlerInterface $formHandler) if (empty($errors)) { $this->addFlash('success', $this->trans('Configuration saved.', 'Modules.Smailyforprestashop.Admin')); if ($formData['optin_enabled']) { - $this->addFlash( - 'success', - $this->trans( - 'You have selected an automation to trigger opt-in email sending. We have disabled Newsletter Subscription plugins verification, confirmation and voucher email sending in order to avoid duplicate emails!', - 'Modules.Smailyforprestashop.Admin', - ) + $message = $this->trans('You have selected an automation to trigger opt-in email sending. We have disabled ', 'Modules.Smailyforprestashop.Admin'); + $message .= sprintf('%s', + \Context::getContext()->link->getAdminLink('AdminModules', true, [], ['configure' => 'ps_emailsubscription']), + $this->trans('PS Newsletter Subscription', 'Modules.Smailyforprestashop.Admin'), ); + $message .= $this->trans(' plugins verification, confirmation and voucher email sending in order to avoid duplicate emails!', 'Modules.Smailyforprestashop.Admin'); + + $this->addFlash('warning', $message); } return $this->redirectToRoute('smailyforprestashop_module_configuration'); @@ -213,6 +214,7 @@ private function renderForms(): Response 'rssFeedForm' => $this->rssFeedForm->createView(), 'accountConnected' => true, 'tab' => $this->tab, + 'emailSubscriptionModuleUrl' => \Context::getContext()->link->getAdminLink('AdminModules', true, [], ['configure' => 'ps_emailsubscription']), 'jsVariables' => [ 'rssBaseURL' => \Context::getContext()->link->getModuleLink('smailyforprestashop', 'SmailyRssFeed'), ], diff --git a/src/views/templates/admin/customerSyncConfiguration.html.twig b/src/views/templates/admin/customerSyncConfiguration.html.twig index 63360f5..867b796 100644 --- a/src/views/templates/admin/customerSyncConfiguration.html.twig +++ b/src/views/templates/admin/customerSyncConfiguration.html.twig @@ -28,7 +28,18 @@ - {{ form_row(customerSyncForm.optin_enabled) }} +