diff --git a/COPYRIGHT b/COPYRIGHT index d980219c420..d04c007ff65 100644 --- a/COPYRIGHT +++ b/COPYRIGHT @@ -31,7 +31,7 @@ NuSoap 0.9.5 LGPL 2.1+ Yes PEAR Mail_MIME 1.8.9 BSD Yes NuSoap dependency ParseDown 1.6 MIT License Yes Markdown parser PCLZip 2.8.4 LGPL-3+ Yes Library to zip/unzip files -PHPDebugBar 1.15.1 MIT License Yes Used only by the module "debugbar" for developers +PHPDebugBar 1.18.2 MIT License Yes Used only by the module "debugbar" for developers PHP-Imap 2.7.2 MIT License Yes Library to use IMAP with OAuth PHPSpreadSheet 1.8.2 LGPL-2.1+ Yes Read/Write XLS files, read ODS files php-iban 4.1.1 LGPL-3+ Yes Parse and validate IBAN (and IIBAN) bank account information in PHP diff --git a/htdocs/includes/maximebf/debugbar/composer.json b/htdocs/includes/maximebf/debugbar/composer.json index e68fc461f1c..50793eb6f6c 100644 --- a/htdocs/includes/maximebf/debugbar/composer.json +++ b/htdocs/includes/maximebf/debugbar/composer.json @@ -17,12 +17,13 @@ } ], "require": { - "php": ">=5.6", - "psr/log": "^1.0", - "symfony/var-dumper": "^2.6|^3|^4" + "php": "^7.1|^8", + "psr/log": "^1|^2|^3", + "symfony/var-dumper": "^4|^5|^6" }, "require-dev": { - "phpunit/phpunit": "^5" + "phpunit/phpunit": ">=7.5.20 <10.0", + "twig/twig": "^1.38|^2.7|^3.0" }, "autoload": { "psr-4": { @@ -36,7 +37,7 @@ }, "extra": { "branch-alias": { - "dev-master": "1.15-dev" + "dev-master": "1.18-dev" } } } diff --git a/htdocs/includes/maximebf/debugbar/src/DebugBar/Bridge/MonologCollector.php b/htdocs/includes/maximebf/debugbar/src/DebugBar/Bridge/MonologCollector.php index f24b296d574..49eb37c27f5 100644 --- a/htdocs/includes/maximebf/debugbar/src/DebugBar/Bridge/MonologCollector.php +++ b/htdocs/includes/maximebf/debugbar/src/DebugBar/Bridge/MonologCollector.php @@ -57,9 +57,9 @@ class MonologCollector extends AbstractProcessingHandler implements DataCollecto } /** - * @param array $record + * @param array|\Monolog\LogRecord $record */ - protected function write(array $record) + protected function write($record): void { $this->records[] = array( 'message' => $record['formatted'], diff --git a/htdocs/includes/maximebf/debugbar/src/DebugBar/Bridge/NamespacedTwigProfileCollector.php b/htdocs/includes/maximebf/debugbar/src/DebugBar/Bridge/NamespacedTwigProfileCollector.php new file mode 100644 index 00000000000..02e7306e232 --- /dev/null +++ b/htdocs/includes/maximebf/debugbar/src/DebugBar/Bridge/NamespacedTwigProfileCollector.php @@ -0,0 +1,204 @@ + + * $env = new \Twig\Environment($loader); // Or from a PSR11-container + * $profile = new \Twig\Profiler\Profile(); + * $env->addExtension(new \Twig\Extension\ProfilerExtension($profile)); + * $debugbar->addCollector(new ModernTwigProfileCollector($profile, $env)); + * // or: $debugbar->addCollector(new ModernTwigProfileCollector($profile, $loader)); + * + */ +class NamespacedTwigProfileCollector extends DataCollector implements Renderable, AssetProvider +{ + /** + * @var Profile + */ + private $profile; + + /** + * @var LoaderInterface|Environment|null + */ + private $loader; + + /** + * @var int + */ + private $templateCount; + + /** + * @var int + */ + private $blockCount; + + /** + * @var int + */ + private $macroCount; + /** + * @var array[] { + * @var string $name + * @var int $render_time + * @var string $render_time_str + * @var string $memory_str + * @var string $xdebug_link + * } + */ + private $templates; + + /** + * TwigProfileCollector constructor. + * + * @param Profile $profile + * @param LoaderInterface|Environment $loaderOrEnv + */ + public function __construct(Profile $profile, $loaderOrEnv = null) + { + $this->profile = $profile; + if ($loaderOrEnv instanceof Environment) { + $loaderOrEnv = $loaderOrEnv->getLoader(); + } + $this->loader = $loaderOrEnv; + } + + /** + * Returns a hash where keys are control names and their values + * an array of options as defined in {@see \DebugBar\JavascriptRenderer::addControl()} + * + * @return array + */ + public function getWidgets() + { + return [ + 'twig' => [ + 'icon' => 'leaf', + 'widget' => 'PhpDebugBar.Widgets.TemplatesWidget', + 'map' => 'twig', + 'default' => json_encode(['templates' => []]), + ], + 'twig:badge' => [ + 'map' => 'twig.badge', + 'default' => 0, + ], + ]; + } + + /** + * @return array + */ + public function getAssets() + { + return [ + 'css' => 'widgets/templates/widget.css', + 'js' => 'widgets/templates/widget.js', + ]; + } + + /** + * Called by the DebugBar when data needs to be collected + * + * @return array Collected data + */ + public function collect() + { + $this->templateCount = $this->blockCount = $this->macroCount = 0; + $this->templates = []; + $this->computeData($this->profile); + + return [ + 'nb_templates' => $this->templateCount, + 'nb_blocks' => $this->blockCount, + 'nb_macros' => $this->macroCount, + 'templates' => $this->templates, + 'accumulated_render_time' => $this->profile->getDuration(), + 'accumulated_render_time_str' => $this->getDataFormatter()->formatDuration($this->profile->getDuration()), + 'memory_usage_str' => $this->getDataFormatter()->formatBytes($this->profile->getMemoryUsage()), + 'callgraph' => $this->getHtmlCallGraph(), + 'badge' => implode( + '/', + [ + $this->templateCount, + $this->blockCount, + $this->macroCount, + ] + ), + ]; + } + + /** + * Returns the unique name of the collector + * + * @return string + */ + public function getName() + { + return 'twig'; + } + + public function getHtmlCallGraph() + { + $dumper = new HtmlDumper(); + return $dumper->dump($this->profile); + } + + /** + * Get an Xdebug Link to a file + * + * @return array { + * @var string url + * @var bool ajax + * } + */ + public function getXdebugLink($template, $line = 1) + { + if (is_null($this->loader)) { + return null; + } + $file = $this->loader->getSourceContext($template)->getPath(); + + return parent::getXdebugLink($file, $line); + } + + private function computeData(Profile $profile) + { + $this->templateCount += ($profile->isTemplate() ? 1 : 0); + $this->blockCount += ($profile->isBlock() ? 1 : 0); + $this->macroCount += ($profile->isMacro() ? 1 : 0); + if ($profile->isTemplate()) { + $this->templates[] = [ + 'name' => $profile->getName(), + 'render_time' => $profile->getDuration(), + 'render_time_str' => $this->getDataFormatter()->formatDuration($profile->getDuration()), + 'memory_str' => $this->getDataFormatter()->formatBytes($profile->getMemoryUsage()), + 'xdebug_link' => $this->getXdebugLink($profile->getTemplate()), + ]; + } + foreach ($profile as $p) { + $this->computeData($p); + } + } +} diff --git a/htdocs/includes/maximebf/debugbar/src/DebugBar/Bridge/SwiftMailer/SwiftLogCollector.php b/htdocs/includes/maximebf/debugbar/src/DebugBar/Bridge/SwiftMailer/SwiftLogCollector.php index fdef79a0bdc..e8c2fcd92f0 100644 --- a/htdocs/includes/maximebf/debugbar/src/DebugBar/Bridge/SwiftMailer/SwiftLogCollector.php +++ b/htdocs/includes/maximebf/debugbar/src/DebugBar/Bridge/SwiftMailer/SwiftLogCollector.php @@ -34,7 +34,16 @@ class SwiftLogCollector extends MessagesCollector implements Swift_Plugins_Logge public function dump() { - return implode(PHP_EOL, $this->_log); + $dump = ''; + foreach ($this->messages as $message) { + if (!$message['is_string']) { + continue; + } + + $dump .= $message['message'] . PHP_EOL; + } + + return $dump; } public function getName() diff --git a/htdocs/includes/maximebf/debugbar/src/DebugBar/Bridge/Twig/TimeableTwigExtensionProfiler.php b/htdocs/includes/maximebf/debugbar/src/DebugBar/Bridge/Twig/TimeableTwigExtensionProfiler.php index 3611d2d8efa..30238cc20a4 100644 --- a/htdocs/includes/maximebf/debugbar/src/DebugBar/Bridge/Twig/TimeableTwigExtensionProfiler.php +++ b/htdocs/includes/maximebf/debugbar/src/DebugBar/Bridge/Twig/TimeableTwigExtensionProfiler.php @@ -57,4 +57,4 @@ class TimeableTwigExtensionProfiler extends \Twig_Extension_Profiler $this->timeDataCollector->stopMeasure($profile->getName()); } } -} \ No newline at end of file +} diff --git a/htdocs/includes/maximebf/debugbar/src/DebugBar/Bridge/Twig/TraceableTwigEnvironment.php b/htdocs/includes/maximebf/debugbar/src/DebugBar/Bridge/Twig/TraceableTwigEnvironment.php index cdaae7a4525..9e98c191115 100644 --- a/htdocs/includes/maximebf/debugbar/src/DebugBar/Bridge/Twig/TraceableTwigEnvironment.php +++ b/htdocs/includes/maximebf/debugbar/src/DebugBar/Bridge/Twig/TraceableTwigEnvironment.php @@ -24,6 +24,8 @@ use Twig_TokenStream; /** * Wrapped a Twig Environment to provide profiling features + * + * @deprecated */ class TraceableTwigEnvironment extends Twig_Environment { diff --git a/htdocs/includes/maximebf/debugbar/src/DebugBar/Bridge/Twig/TraceableTwigTemplate.php b/htdocs/includes/maximebf/debugbar/src/DebugBar/Bridge/Twig/TraceableTwigTemplate.php index 648f7baf4da..1d57d2a518a 100644 --- a/htdocs/includes/maximebf/debugbar/src/DebugBar/Bridge/Twig/TraceableTwigTemplate.php +++ b/htdocs/includes/maximebf/debugbar/src/DebugBar/Bridge/Twig/TraceableTwigTemplate.php @@ -15,6 +15,8 @@ use Twig_TemplateInterface; /** * Wraps a Twig_Template to add profiling features + * + * @deprecated */ class TraceableTwigTemplate extends Twig_Template implements Twig_TemplateInterface { diff --git a/htdocs/includes/maximebf/debugbar/src/DebugBar/Bridge/Twig/TwigCollector.php b/htdocs/includes/maximebf/debugbar/src/DebugBar/Bridge/Twig/TwigCollector.php index c571d835bcc..bb48ab79a36 100644 --- a/htdocs/includes/maximebf/debugbar/src/DebugBar/Bridge/Twig/TwigCollector.php +++ b/htdocs/includes/maximebf/debugbar/src/DebugBar/Bridge/Twig/TwigCollector.php @@ -26,6 +26,8 @@ use DebugBar\DataCollector\Renderable; * $env = new TraceableTwigEnvironment(new Twig_Environment($loader)); * $debugbar->addCollector(new TwigCollector($env)); * + * + * @deprecated use DebugBar\Bridge\TwigProfileCollector instead */ class TwigCollector extends DataCollector implements Renderable, AssetProvider { diff --git a/htdocs/includes/maximebf/debugbar/src/DebugBar/Bridge/TwigProfileCollector.php b/htdocs/includes/maximebf/debugbar/src/DebugBar/Bridge/TwigProfileCollector.php index efd3a7d523e..ce68fcbb403 100644 --- a/htdocs/includes/maximebf/debugbar/src/DebugBar/Bridge/TwigProfileCollector.php +++ b/htdocs/includes/maximebf/debugbar/src/DebugBar/Bridge/TwigProfileCollector.php @@ -34,6 +34,8 @@ use DebugBar\DataCollector\Renderable; * $debugbar->addCollector(new TwigProfileCollector($profile, $env)); * // or: $debugbar->addCollector(new TwigProfileCollector($profile, $loader)); * + * + * @deprecated Use `\Debugbar\Bridge\NamespacedTwigProfileCollector` instead for Twig 2.x and 3.x */ class TwigProfileCollector extends DataCollector implements Renderable, AssetProvider { diff --git a/htdocs/includes/maximebf/debugbar/src/DebugBar/DataCollector/AggregatedCollector.php b/htdocs/includes/maximebf/debugbar/src/DebugBar/DataCollector/AggregatedCollector.php index c1fd96aef26..56c9dc7aa47 100644 --- a/htdocs/includes/maximebf/debugbar/src/DebugBar/DataCollector/AggregatedCollector.php +++ b/htdocs/includes/maximebf/debugbar/src/DebugBar/DataCollector/AggregatedCollector.php @@ -48,7 +48,7 @@ class AggregatedCollector implements DataCollectorInterface, ArrayAccess /** * @param DataCollectorInterface $collector */ - public function addCollector(DataCollectorInterface $collector) + public function addCollector(DataCollectorInterface $collector) : void { $this->collectors[$collector->getName()] = $collector; } @@ -56,7 +56,7 @@ class AggregatedCollector implements DataCollectorInterface, ArrayAccess /** * @return array */ - public function getCollectors() + public function getCollectors() : array { return $this->collectors; } @@ -66,7 +66,7 @@ class AggregatedCollector implements DataCollectorInterface, ArrayAccess * * @param string $property */ - public function setMergeProperty($property) + public function setMergeProperty($property) : void { $this->mergeProperty = $property; } @@ -74,7 +74,7 @@ class AggregatedCollector implements DataCollectorInterface, ArrayAccess /** * @return string */ - public function getMergeProperty() + public function getMergeProperty() : string { return $this->mergeProperty; } @@ -87,7 +87,7 @@ class AggregatedCollector implements DataCollectorInterface, ArrayAccess * * @param bool|string $sort */ - public function setSort($sort) + public function setSort($sort) : void { $this->sort = $sort; } @@ -103,7 +103,7 @@ class AggregatedCollector implements DataCollectorInterface, ArrayAccess /** * @return array */ - public function collect() + public function collect() : array { $aggregate = array(); foreach ($this->collectors as $collector) { @@ -123,7 +123,7 @@ class AggregatedCollector implements DataCollectorInterface, ArrayAccess * @param array $data * @return array */ - protected function sort($data) + protected function sort($data) : array { if (is_string($this->sort)) { $p = $this->sort; @@ -142,7 +142,7 @@ class AggregatedCollector implements DataCollectorInterface, ArrayAccess /** * @return string */ - public function getName() + public function getName() : string { return $this->name; } @@ -155,7 +155,7 @@ class AggregatedCollector implements DataCollectorInterface, ArrayAccess * @param mixed $value * @throws DebugBarException */ - public function offsetSet($key, $value) + public function offsetSet($key, $value): void { throw new DebugBarException("AggregatedCollector[] is read-only"); } @@ -164,6 +164,7 @@ class AggregatedCollector implements DataCollectorInterface, ArrayAccess * @param mixed $key * @return mixed */ + #[\ReturnTypeWillChange] public function offsetGet($key) { return $this->collectors[$key]; @@ -173,7 +174,7 @@ class AggregatedCollector implements DataCollectorInterface, ArrayAccess * @param mixed $key * @return bool */ - public function offsetExists($key) + public function offsetExists($key): bool { return isset($this->collectors[$key]); } @@ -182,7 +183,7 @@ class AggregatedCollector implements DataCollectorInterface, ArrayAccess * @param mixed $key * @throws DebugBarException */ - public function offsetUnset($key) + public function offsetUnset($key): void { throw new DebugBarException("AggregatedCollector[] is read-only"); } diff --git a/htdocs/includes/maximebf/debugbar/src/DebugBar/DataCollector/ExceptionsCollector.php b/htdocs/includes/maximebf/debugbar/src/DebugBar/DataCollector/ExceptionsCollector.php index 285bc971102..3fcac398016 100644 --- a/htdocs/includes/maximebf/debugbar/src/DebugBar/DataCollector/ExceptionsCollector.php +++ b/htdocs/includes/maximebf/debugbar/src/DebugBar/DataCollector/ExceptionsCollector.php @@ -21,6 +21,10 @@ class ExceptionsCollector extends DataCollector implements Renderable protected $exceptions = array(); protected $chainExceptions = false; + // The HTML var dumper requires debug bar users to support the new inline assets, which not all + // may support yet - so return false by default for now. + protected $useHtmlVarDumper = false; + /** * Adds an exception to be profiled in the debug bar * @@ -65,6 +69,30 @@ class ExceptionsCollector extends DataCollector implements Renderable return $this->exceptions; } + /** + * Sets a flag indicating whether the Symfony HtmlDumper will be used to dump variables for + * rich variable rendering. + * + * @param bool $value + * @return $this + */ + public function useHtmlVarDumper($value = true) + { + $this->useHtmlVarDumper = $value; + return $this; + } + + /** + * Indicates whether the Symfony HtmlDumper will be used to dump variables for rich variable + * rendering. + * + * @return mixed + */ + public function isHtmlVarDumperUsed() + { + return $this->useHtmlVarDumper; + } + public function collect() { return array( @@ -102,6 +130,11 @@ class ExceptionsCollector extends DataCollector implements Renderable $lines = array("Cannot open the file ($filePath) in which the exception occurred "); } + $traceHtml = null; + if ($this->isHtmlVarDumperUsed()) { + $traceHtml = $this->getVarDumper()->renderVar($e->getTrace()); + } + return array( 'type' => get_class($e), 'message' => $e->getMessage(), @@ -109,6 +142,7 @@ class ExceptionsCollector extends DataCollector implements Renderable 'file' => $filePath, 'line' => $e->getLine(), 'stack_trace' => $e->getTraceAsString(), + 'stack_trace_html' => $traceHtml, 'surrounding_lines' => $lines, 'xdebug_link' => $this->getXdebugLink($filePath, $e->getLine()) ); diff --git a/htdocs/includes/maximebf/debugbar/src/DebugBar/DataCollector/MemoryCollector.php b/htdocs/includes/maximebf/debugbar/src/DebugBar/DataCollector/MemoryCollector.php index 894f8870adc..1a34f3bddb0 100644 --- a/htdocs/includes/maximebf/debugbar/src/DebugBar/DataCollector/MemoryCollector.php +++ b/htdocs/includes/maximebf/debugbar/src/DebugBar/DataCollector/MemoryCollector.php @@ -67,7 +67,7 @@ class MemoryCollector extends DataCollector implements Renderable $this->updatePeakUsage(); return array( 'peak_usage' => $this->peakUsage, - 'peak_usage_str' => $this->getDataFormatter()->formatBytes($this->peakUsage) + 'peak_usage_str' => $this->getDataFormatter()->formatBytes($this->peakUsage, 0) ); } diff --git a/htdocs/includes/maximebf/debugbar/src/DebugBar/DataCollector/MessagesCollector.php b/htdocs/includes/maximebf/debugbar/src/DebugBar/DataCollector/MessagesCollector.php index f26d3716ca2..8859e7d0175 100644 --- a/htdocs/includes/maximebf/debugbar/src/DebugBar/DataCollector/MessagesCollector.php +++ b/htdocs/includes/maximebf/debugbar/src/DebugBar/DataCollector/MessagesCollector.php @@ -183,11 +183,37 @@ class MessagesCollector extends AbstractLogger implements DataCollectorInterface * @param $message * @param array $context */ - public function log($level, $message, array $context = array()) + public function log($level, $message, array $context = array()): void { + // For string messages, interpolate the context following PSR-3 + if (is_string($message)) { + $message = $this->interpolate($message, $context); + } $this->addMessage($message, $level); } + /** + * Interpolates context values into the message placeholders. + * + * @param $message + * @param array $context + * @return string + */ + function interpolate($message, array $context = array()) + { + // build a replacement array with braces around the context keys + $replace = array(); + foreach ($context as $key => $val) { + // check that the value can be cast to string + if (!is_array($val) && (!is_object($val) || method_exists($val, '__toString'))) { + $replace['{' . $key . '}'] = $val; + } + } + + // interpolate replacement values into the message and return + return strtr($message, $replace); + } + /** * Deletes all messages */ diff --git a/htdocs/includes/maximebf/debugbar/src/DebugBar/DataCollector/PDO/PDOCollector.php b/htdocs/includes/maximebf/debugbar/src/DebugBar/DataCollector/PDO/PDOCollector.php index e1eb35ad0bc..77e36307095 100644 --- a/htdocs/includes/maximebf/debugbar/src/DebugBar/DataCollector/PDO/PDOCollector.php +++ b/htdocs/includes/maximebf/debugbar/src/DebugBar/DataCollector/PDO/PDOCollector.php @@ -21,10 +21,10 @@ class PDOCollector extends DataCollector implements Renderable, AssetProvider protected $sqlQuotationChar = '<>'; /** - * @param TraceablePDO $pdo + * @param \PDO $pdo * @param TimeDataCollector $timeCollector */ - public function __construct(TraceablePDO $pdo = null, TimeDataCollector $timeCollector = null) + public function __construct(\PDO $pdo = null, TimeDataCollector $timeCollector = null) { $this->timeCollector = $timeCollector; if ($pdo !== null) { @@ -65,11 +65,14 @@ class PDOCollector extends DataCollector implements Renderable, AssetProvider * @param TraceablePDO $pdo * @param string $name Optional connection name */ - public function addConnection(TraceablePDO $pdo, $name = null) + public function addConnection(\PDO $pdo, $name = null) { if ($name === null) { $name = spl_object_hash($pdo); } + if (!($pdo instanceof TraceablePDO)) { + $pdo = new TraceablePDO($pdo); + } $this->connections[$name] = $pdo; } diff --git a/htdocs/includes/maximebf/debugbar/src/DebugBar/DataCollector/PDO/TraceablePDO.php b/htdocs/includes/maximebf/debugbar/src/DebugBar/DataCollector/PDO/TraceablePDO.php index e448a794ad3..753964a343c 100644 --- a/htdocs/includes/maximebf/debugbar/src/DebugBar/DataCollector/PDO/TraceablePDO.php +++ b/htdocs/includes/maximebf/debugbar/src/DebugBar/DataCollector/PDO/TraceablePDO.php @@ -23,13 +23,13 @@ class TraceablePDO extends PDO $this->pdo->setAttribute(PDO::ATTR_STATEMENT_CLASS, [TraceablePDOStatement::class, [$this]]); } - /** - * Initiates a transaction - * - * @link http://php.net/manual/en/pdo.begintransaction.php - * @return bool TRUE on success or FALSE on failure. - */ - public function beginTransaction() + /** + * Initiates a transaction + * + * @link http://php.net/manual/en/pdo.begintransaction.php + * @return bool TRUE on success or FALSE on failure. + */ + public function beginTransaction() : bool { return $this->pdo->beginTransaction(); } @@ -40,7 +40,7 @@ class TraceablePDO extends PDO * @link http://php.net/manual/en/pdo.commit.php * @return bool TRUE on success or FALSE on failure. */ - public function commit() + public function commit() : bool { return $this->pdo->commit(); } @@ -51,6 +51,7 @@ class TraceablePDO extends PDO * @link http://php.net/manual/en/pdo.errorinfo.php * @return array PDO::errorInfo returns an array of error information */ + #[\ReturnTypeWillChange] public function errorCode() { return $this->pdo->errorCode(); @@ -62,7 +63,7 @@ class TraceablePDO extends PDO * @link http://php.net/manual/en/pdo.errorinfo.php * @return array PDO::errorInfo returns an array of error information */ - public function errorInfo() + public function errorInfo() : array { return $this->pdo->errorInfo(); } @@ -77,6 +78,7 @@ class TraceablePDO extends PDO * return Boolean FALSE, but may also return a non-Boolean value which evaluates to FALSE. * Please read the section on Booleans for more information */ + #[\ReturnTypeWillChange] public function exec($statement) { return $this->profileCall('exec', $statement, func_get_args()); @@ -90,6 +92,7 @@ class TraceablePDO extends PDO * @return mixed A successful call returns the value of the requested PDO attribute. * An unsuccessful call returns null. */ + #[\ReturnTypeWillChange] public function getAttribute($attribute) { return $this->pdo->getAttribute($attribute); @@ -101,7 +104,7 @@ class TraceablePDO extends PDO * @link http://php.net/manual/en/pdo.intransaction.php * @return bool TRUE if a transaction is currently active, and FALSE if not. */ - public function inTransaction() + public function inTransaction() : bool { return $this->pdo->inTransaction(); } @@ -114,36 +117,41 @@ class TraceablePDO extends PDO * @return string If a sequence name was not specified for the name parameter, PDO::lastInsertId * returns a string representing the row ID of the last row that was inserted into the database. */ + #[\ReturnTypeWillChange] public function lastInsertId($name = null) { return $this->pdo->lastInsertId($name); } - /** - * Prepares a statement for execution and returns a statement object - * - * @link http://php.net/manual/en/pdo.prepare.php - * @param string $statement This must be a valid SQL statement template for the target DB server. - * @param array $driver_options [optional] This array holds one or more key=>value pairs to - * set attribute values for the PDOStatement object that this method returns. - * @return TraceablePDOStatement|bool If the database server successfully prepares the statement, - * PDO::prepare returns a PDOStatement object. If the database server cannot successfully prepare - * the statement, PDO::prepare returns FALSE or emits PDOException (depending on error handling). - */ + /** + * Prepares a statement for execution and returns a statement object + * + * @link http://php.net/manual/en/pdo.prepare.php + * @param string $statement This must be a valid SQL statement template for the target DB server. + * @param array $driver_options [optional] This array holds one or more key=>value pairs to + * set attribute values for the PDOStatement object that this method returns. + * @return TraceablePDOStatement|bool If the database server successfully prepares the statement, + * PDO::prepare returns a PDOStatement object. If the database server cannot successfully prepare + * the statement, PDO::prepare returns FALSE or emits PDOException (depending on error handling). + */ + #[\ReturnTypeWillChange] public function prepare($statement, $driver_options = []) { return $this->pdo->prepare($statement, $driver_options); } - /** - * Executes an SQL statement, returning a result set as a PDOStatement object - * - * @link http://php.net/manual/en/pdo.query.php - * @param string $statement - * @return TraceablePDOStatement|bool PDO::query returns a PDOStatement object, or FALSE on - * failure. - */ - public function query($statement) + /** + * Executes an SQL statement, returning a result set as a PDOStatement object + * + * @link http://php.net/manual/en/pdo.query.php + * @param string $statement + * @param int $fetchMode + * @param mixed ...$fetchModeArgs + * @return TraceablePDOStatement|bool PDO::query returns a PDOStatement object, or FALSE on + * failure. + */ + #[\ReturnTypeWillChange] + public function query($statement, $fetchMode = null, ...$fetchModeArgs) { return $this->profileCall('query', $statement, func_get_args()); } @@ -158,6 +166,7 @@ class TraceablePDO extends PDO * @return string|bool A quoted string that is theoretically safe to pass into an SQL statement. * Returns FALSE if the driver does not support quoting in this way. */ + #[\ReturnTypeWillChange] public function quote($string, $parameter_type = PDO::PARAM_STR) { return $this->pdo->quote($string, $parameter_type); @@ -169,7 +178,7 @@ class TraceablePDO extends PDO * @link http://php.net/manual/en/pdo.rollback.php * @return bool TRUE on success or FALSE on failure. */ - public function rollBack() + public function rollBack() : bool { return $this->pdo->rollBack(); } @@ -182,7 +191,7 @@ class TraceablePDO extends PDO * @param mixed $value * @return bool TRUE on success or FALSE on failure. */ - public function setAttribute($attribute, $value) + public function setAttribute($attribute, $value) : bool { return $this->pdo->setAttribute($attribute, $value); } @@ -195,6 +204,7 @@ class TraceablePDO extends PDO * @param array $args * @return mixed The result of the call */ + #[\ReturnTypeWillChange] protected function profileCall($method, $sql, array $args) { $trace = new TracedStatement($sql); @@ -226,7 +236,7 @@ class TraceablePDO extends PDO * * @param TracedStatement $stmt */ - public function addExecutedStatement(TracedStatement $stmt) + public function addExecutedStatement(TracedStatement $stmt) : void { $this->executedStatements[] = $stmt; } @@ -234,9 +244,9 @@ class TraceablePDO extends PDO /** * Returns the accumulated execution time of statements * - * @return int + * @return float */ - public function getAccumulatedStatementsDuration() + public function getAccumulatedStatementsDuration() : float { return array_reduce($this->executedStatements, function ($v, $s) { return $v + $s->getDuration(); }); } @@ -246,7 +256,7 @@ class TraceablePDO extends PDO * * @return int */ - public function getMemoryUsage() + public function getMemoryUsage() : int { return array_reduce($this->executedStatements, function ($v, $s) { return $v + $s->getMemoryUsage(); }); } @@ -256,7 +266,7 @@ class TraceablePDO extends PDO * * @return int */ - public function getPeakMemoryUsage() + public function getPeakMemoryUsage() : int { return array_reduce($this->executedStatements, function ($v, $s) { $m = $s->getEndMemory(); return $m > $v ? $m : $v; }); } @@ -266,7 +276,7 @@ class TraceablePDO extends PDO * * @return TracedStatement[] */ - public function getExecutedStatements() + public function getExecutedStatements() : array { return $this->executedStatements; } @@ -276,7 +286,7 @@ class TraceablePDO extends PDO * * @return TracedStatement[] */ - public function getFailedExecutedStatements() + public function getFailedExecutedStatements() : array { return array_filter($this->executedStatements, function ($s) { return !$s->isSuccess(); }); } diff --git a/htdocs/includes/maximebf/debugbar/src/DebugBar/DataCollector/PDO/TraceablePDOStatement.php b/htdocs/includes/maximebf/debugbar/src/DebugBar/DataCollector/PDO/TraceablePDOStatement.php index d125b19a2eb..011bbfe4351 100644 --- a/htdocs/includes/maximebf/debugbar/src/DebugBar/DataCollector/PDO/TraceablePDOStatement.php +++ b/htdocs/includes/maximebf/debugbar/src/DebugBar/DataCollector/PDO/TraceablePDOStatement.php @@ -39,6 +39,7 @@ class TraceablePDOStatement extends PDOStatement * @param mixed $driverdata [optional] Optional parameter(s) for the driver. * @return bool TRUE on success or FALSE on failure. */ + #[\ReturnTypeWillChange] public function bindColumn($column, &$param, $type = null, $maxlen = null, $driverdata = null) { $this->boundParameters[$column] = $param; @@ -61,7 +62,7 @@ class TraceablePDOStatement extends PDOStatement * @param mixed $driver_options [optional] * @return bool TRUE on success or FALSE on failure. */ - public function bindParam($parameter, &$variable, $data_type = PDO::PARAM_STR, $length = null, $driver_options = null) + public function bindParam($parameter, &$variable, $data_type = PDO::PARAM_STR, $length = null, $driver_options = null) : bool { $this->boundParameters[$parameter] = $variable; $args = array_merge([$parameter, &$variable], array_slice(func_get_args(), 2)); @@ -80,7 +81,7 @@ class TraceablePDOStatement extends PDOStatement * constants. * @return bool TRUE on success or FALSE on failure. */ - public function bindValue($parameter, $value, $data_type = PDO::PARAM_STR) + public function bindValue($parameter, $value, $data_type = PDO::PARAM_STR) : bool { $this->boundParameters[$parameter] = $value; return call_user_func_array(['parent', 'bindValue'], func_get_args()); @@ -96,7 +97,7 @@ class TraceablePDOStatement extends PDOStatement * @throws PDOException * @return bool TRUE on success or FALSE on failure. */ - public function execute($input_parameters = null) + public function execute($input_parameters = null) : bool { $preparedId = spl_object_hash($this); $boundParameters = $this->boundParameters; diff --git a/htdocs/includes/maximebf/debugbar/src/DebugBar/DataCollector/PDO/TracedStatement.php b/htdocs/includes/maximebf/debugbar/src/DebugBar/DataCollector/PDO/TracedStatement.php index c4eef46aaeb..9111489b0ea 100644 --- a/htdocs/includes/maximebf/debugbar/src/DebugBar/DataCollector/PDO/TracedStatement.php +++ b/htdocs/includes/maximebf/debugbar/src/DebugBar/DataCollector/PDO/TracedStatement.php @@ -27,12 +27,14 @@ class TracedStatement protected $exception; + protected $preparedId; + /** * @param string $sql * @param array $params - * @param string $preparedId + * @param null|string $preparedId */ - public function __construct($sql, array $params = [], $preparedId = null) + public function __construct(string $sql, array $params = [], ?string $preparedId = null) { $this->sql = $sql; $this->parameters = $this->checkParameters($params); @@ -43,7 +45,7 @@ class TracedStatement * @param null $startTime * @param null $startMemory */ - public function start($startTime = null, $startMemory = null) + public function start($startTime = null, $startMemory = null) : void { $this->startTime = $startTime ?: microtime(true); $this->startMemory = $startMemory ?: memory_get_usage(false); @@ -55,7 +57,7 @@ class TracedStatement * @param float $endTime * @param int $endMemory */ - public function end(\Exception $exception = null, $rowCount = 0, $endTime = null, $endMemory = null) + public function end(\Exception $exception = null, int $rowCount = 0, float $endTime = null, int $endMemory = null) : void { $this->endTime = $endTime ?: microtime(true); $this->duration = $this->endTime - $this->startTime; @@ -71,10 +73,10 @@ class TracedStatement * @param array $params * @return array */ - public function checkParameters($params) + public function checkParameters(array $params) : array { foreach ($params as &$param) { - if (!mb_check_encoding($param, 'UTF-8')) { + if (!mb_check_encoding($param ?? '', 'UTF-8')) { $param = '[BINARY DATA]'; } } @@ -86,7 +88,7 @@ class TracedStatement * * @return string */ - public function getSql() + public function getSql() : string { return $this->sql; } @@ -97,7 +99,7 @@ class TracedStatement * @param string $quotationChar * @return string */ - public function getSqlWithParams($quotationChar = '<>') + public function getSqlWithParams(string $quotationChar = '<>') : string { if (($l = strlen($quotationChar)) > 1) { $quoteLeft = substr($quotationChar, 0, $l / 2); @@ -123,7 +125,11 @@ class TracedStatement } $matchRule = "/({$marker}(?!\w))(?=(?:[^$quotationChar]|[$quotationChar][^$quotationChar]*[$quotationChar])*$)/"; - for ($i = 0; $i <= mb_substr_count($sql, $k); $i++) { + $count = mb_substr_count($sql, $k); + if ($count < 1) { + $count = mb_substr_count($sql, $matchRule); + } + for ($i = 0; $i <= $count; $i++) { $sql = preg_replace($matchRule, $v, $sql, 1); } } @@ -138,7 +144,7 @@ class TracedStatement * * @return int */ - public function getRowCount() + public function getRowCount() : int { return $this->rowCount; } @@ -148,11 +154,11 @@ class TracedStatement * * @return array */ - public function getParameters() + public function getParameters() : array { $params = []; foreach ($this->parameters as $name => $param) { - $params[$name] = htmlentities($param, ENT_QUOTES, 'UTF-8', false); + $params[$name] = htmlentities($param?:"", ENT_QUOTES, 'UTF-8', false); } return $params; } @@ -160,9 +166,9 @@ class TracedStatement /** * Returns the prepared statement id * - * @return string + * @return null|string */ - public function getPreparedId() + public function getPreparedId() : ?string { return $this->preparedId; } @@ -172,7 +178,7 @@ class TracedStatement * * @return boolean */ - public function isPrepared() + public function isPrepared() : bool { return $this->preparedId !== null; } @@ -180,7 +186,7 @@ class TracedStatement /** * @return float */ - public function getStartTime() + public function getStartTime() : float { return $this->startTime; } @@ -188,7 +194,7 @@ class TracedStatement /** * @return float */ - public function getEndTime() + public function getEndTime() : float { return $this->endTime; } @@ -198,7 +204,7 @@ class TracedStatement * * @return float */ - public function getDuration() + public function getDuration() : float { return $this->duration; } @@ -206,7 +212,7 @@ class TracedStatement /** * @return int */ - public function getStartMemory() + public function getStartMemory() : int { return $this->startMemory; } @@ -214,7 +220,7 @@ class TracedStatement /** * @return int */ - public function getEndMemory() + public function getEndMemory() : int { return $this->endMemory; } @@ -224,7 +230,7 @@ class TracedStatement * * @return int */ - public function getMemoryUsage() + public function getMemoryUsage() : int { return $this->memoryDelta; } @@ -234,7 +240,7 @@ class TracedStatement * * @return boolean */ - public function isSuccess() + public function isSuccess() : bool { return $this->exception === null; } @@ -244,8 +250,8 @@ class TracedStatement * * @return \Exception */ - public function getException() - { + public function getException() : \Exception + { return $this->exception; } @@ -264,7 +270,7 @@ class TracedStatement * * @return string */ - public function getErrorMessage() + public function getErrorMessage() : string { return $this->exception !== null ? $this->exception->getMessage() : ''; } diff --git a/htdocs/includes/maximebf/debugbar/src/DebugBar/DataCollector/PhpInfoCollector.php b/htdocs/includes/maximebf/debugbar/src/DebugBar/DataCollector/PhpInfoCollector.php index 57e9e45f47f..15a3f22dc38 100644 --- a/htdocs/includes/maximebf/debugbar/src/DebugBar/DataCollector/PhpInfoCollector.php +++ b/htdocs/includes/maximebf/debugbar/src/DebugBar/DataCollector/PhpInfoCollector.php @@ -29,7 +29,7 @@ class PhpInfoCollector extends DataCollector implements Renderable public function collect() { return array( - 'version' => PHP_VERSION, + 'version' => implode('.', [PHP_MAJOR_VERSION, PHP_MINOR_VERSION, PHP_RELEASE_VERSION]), 'interface' => PHP_SAPI ); } diff --git a/htdocs/includes/maximebf/debugbar/src/DebugBar/DataCollector/TimeDataCollector.php b/htdocs/includes/maximebf/debugbar/src/DebugBar/DataCollector/TimeDataCollector.php index 27a2e1a2df2..5794ccd7cb3 100644 --- a/htdocs/includes/maximebf/debugbar/src/DebugBar/DataCollector/TimeDataCollector.php +++ b/htdocs/includes/maximebf/debugbar/src/DebugBar/DataCollector/TimeDataCollector.php @@ -134,6 +134,7 @@ class TimeDataCollector extends DataCollector implements Renderable * @param string $label * @param \Closure $closure * @param string|null $collector + * @return mixed */ public function measure($label, \Closure $closure, $collector = null) { @@ -142,6 +143,7 @@ class TimeDataCollector extends DataCollector implements Renderable $result = $closure(); $params = is_array($result) ? $result : array(); $this->stopMeasure($name, $params); + return $result; } /** diff --git a/htdocs/includes/maximebf/debugbar/src/DebugBar/DataFormatter/DataFormatter.php b/htdocs/includes/maximebf/debugbar/src/DebugBar/DataFormatter/DataFormatter.php index 7ffb19892c8..d933f3466ea 100644 --- a/htdocs/includes/maximebf/debugbar/src/DebugBar/DataFormatter/DataFormatter.php +++ b/htdocs/includes/maximebf/debugbar/src/DebugBar/DataFormatter/DataFormatter.php @@ -15,6 +15,10 @@ use Symfony\Component\VarDumper\Dumper\CliDumper; class DataFormatter implements DataFormatterInterface { + public $cloner; + + public $dumper; + /** * DataFormatter constructor. */ @@ -54,8 +58,10 @@ class DataFormatter implements DataFormatterInterface { if ($seconds < 0.001) { return round($seconds * 1000000) . 'μs'; - } elseif ($seconds < 1) { + } elseif ($seconds < 0.1) { return round($seconds * 1000, 2) . 'ms'; + } elseif ($seconds < 1) { + return round($seconds * 1000) . 'ms'; } return round($seconds, 2) . 's'; } @@ -76,6 +82,6 @@ class DataFormatter implements DataFormatterInterface $base = log($size) / log(1024); $suffixes = array('B', 'KB', 'MB', 'GB', 'TB'); - return $sign . round(pow(1024, $base - floor($base)), $precision) . $suffixes[floor($base)]; + return $sign . round(pow(1024, $base - floor($base)), $precision) . $suffixes[(int) floor($base)]; } } diff --git a/htdocs/includes/maximebf/debugbar/src/DebugBar/DataFormatter/DataFormatterInterface.php b/htdocs/includes/maximebf/debugbar/src/DebugBar/DataFormatter/DataFormatterInterface.php index cb7b426e70b..e4b464b7ed8 100644 --- a/htdocs/includes/maximebf/debugbar/src/DebugBar/DataFormatter/DataFormatterInterface.php +++ b/htdocs/includes/maximebf/debugbar/src/DebugBar/DataFormatter/DataFormatterInterface.php @@ -18,7 +18,7 @@ interface DataFormatterInterface /** * Transforms a PHP variable to a string representation * - * @param mixed $var + * @param mixed $data * @return string */ function formatVar($data); diff --git a/htdocs/includes/maximebf/debugbar/src/DebugBar/DataFormatter/DebugBarVarDumper.php b/htdocs/includes/maximebf/debugbar/src/DebugBar/DataFormatter/DebugBarVarDumper.php index 7b92ddf0a34..768879957fa 100644 --- a/htdocs/includes/maximebf/debugbar/src/DebugBar/DataFormatter/DebugBarVarDumper.php +++ b/htdocs/includes/maximebf/debugbar/src/DebugBar/DataFormatter/DebugBarVarDumper.php @@ -4,7 +4,7 @@ namespace DebugBar\DataFormatter; use DebugBar\DataCollector\AssetProvider; use DebugBar\DataFormatter\VarDumper\DebugBarHtmlDumper; -use DebugBar\DataFormatter\VarDumper\SeekingData; +use Symfony\Component\VarDumper\Cloner\Data\SeekingData; use Symfony\Component\VarDumper\Cloner\Data; use Symfony\Component\VarDumper\Cloner\VarCloner; @@ -254,8 +254,6 @@ class DebugBarVarDumper implements AssetProvider public function renderCapturedVar($capturedData, $seekPath = array()) { $data = unserialize($capturedData); - // The seek method was added in Symfony 3.2; emulate the behavior via SeekingData for older - // Symfony versions. if (!method_exists($data, 'seek')) { $data = new SeekingData($data->getRawData()); } @@ -285,7 +283,7 @@ class DebugBarVarDumper implements AssetProvider */ public function getAssets() { $dumper = $this->getDumper(); - $dumper->setDumpHeader(null); // this will cause the default dump header to regenerate + $dumper->resetDumpHeader(); // this will cause the default dump header to regenerate return array( 'inline_head' => array( 'html_var_dumper' => $dumper->getDumpHeaderByDebugBar(), diff --git a/htdocs/includes/maximebf/debugbar/src/DebugBar/DataFormatter/VarDumper/DebugBarHtmlDumper.php b/htdocs/includes/maximebf/debugbar/src/DebugBar/DataFormatter/VarDumper/DebugBarHtmlDumper.php index 0ff4919c18b..136d1ae8f0c 100644 --- a/htdocs/includes/maximebf/debugbar/src/DebugBar/DataFormatter/VarDumper/DebugBarHtmlDumper.php +++ b/htdocs/includes/maximebf/debugbar/src/DebugBar/DataFormatter/VarDumper/DebugBarHtmlDumper.php @@ -10,6 +10,14 @@ use Symfony\Component\VarDumper\Dumper\HtmlDumper; */ class DebugBarHtmlDumper extends HtmlDumper { + /** + * Resets an HTML header. + */ + public function resetDumpHeader() + { + $this->dumpHeader = null; + } + public function getDumpHeaderByDebugBar() { // getDumpHeader is protected: return str_replace('pre.sf-dump', '.phpdebugbar pre.sf-dump', $this->getDumpHeader()); diff --git a/htdocs/includes/maximebf/debugbar/src/DebugBar/DataFormatter/VarDumper/SeekingData.php b/htdocs/includes/maximebf/debugbar/src/DebugBar/DataFormatter/VarDumper/SeekingData.php deleted file mode 100644 index be71ebfc9ce..00000000000 --- a/htdocs/includes/maximebf/debugbar/src/DebugBar/DataFormatter/VarDumper/SeekingData.php +++ /dev/null @@ -1,103 +0,0 @@ -getRawData(); - $item = $thisData[$this->position][$this->key]; - - if (!$item instanceof Stub || !$item->position) { - return; - } - $keys = array($key); - - switch ($item->type) { - case Stub::TYPE_OBJECT: - $keys[] = "\0+\0".$key; - $keys[] = "\0*\0".$key; - $keys[] = "\0~\0".$key; - $keys[] = "\0$item->class\0$key"; - case Stub::TYPE_ARRAY: - case Stub::TYPE_RESOURCE: - break; - default: - return; - } - - $data = null; - $children = $thisData[$item->position]; - - foreach ($keys as $key) { - if (isset($children[$key]) || array_key_exists($key, $children)) { - $data = clone $this; - $data->key = $key; - $data->position = $item->position; - break; - } - } - - return $data; - } - - /** - * {@inheritdoc} - */ - public function dump(DumperInterface $dumper) - { - // Override the base class dump to use the position and key - $refs = array(0); - $class = new \ReflectionClass($this); - $dumpItem = $class->getMethod('dumpItem'); - $dumpItem->setAccessible(true); - $data = $this->getRawData(); - $args = array($dumper, new Cursor(), &$refs, $data[$this->position][$this->key]); - $dumpItem->invokeArgs($this, $args); - } -} diff --git a/htdocs/includes/maximebf/debugbar/src/DebugBar/DebugBar.php b/htdocs/includes/maximebf/debugbar/src/DebugBar/DebugBar.php index af900a801e8..b3999b476b5 100644 --- a/htdocs/includes/maximebf/debugbar/src/DebugBar/DebugBar.php +++ b/htdocs/includes/maximebf/debugbar/src/DebugBar/DebugBar.php @@ -471,21 +471,25 @@ class DebugBar implements ArrayAccess // -------------------------------------------- // ArrayAccess implementation + #[\ReturnTypeWillChange] public function offsetSet($key, $value) { throw new DebugBarException("DebugBar[] is read-only"); } + #[\ReturnTypeWillChange] public function offsetGet($key) { return $this->getCollector($key); } + #[\ReturnTypeWillChange] public function offsetExists($key) { return $this->hasCollector($key); } + #[\ReturnTypeWillChange] public function offsetUnset($key) { throw new DebugBarException("DebugBar[] is read-only"); diff --git a/htdocs/includes/maximebf/debugbar/src/DebugBar/JavascriptRenderer.php b/htdocs/includes/maximebf/debugbar/src/DebugBar/JavascriptRenderer.php index 7f7ed84e0dd..b61d74fd43e 100644 --- a/htdocs/includes/maximebf/debugbar/src/DebugBar/JavascriptRenderer.php +++ b/htdocs/includes/maximebf/debugbar/src/DebugBar/JavascriptRenderer.php @@ -82,6 +82,8 @@ class JavascriptRenderer protected $openHandlerUrl; + protected $cspNonce; + /** * @param \DebugBar\DebugBar $debugBar * @param string $baseUrl @@ -183,6 +185,9 @@ class JavascriptRenderer if (array_key_exists('open_handler_url', $options)) { $this->setOpenHandlerUrl($options['open_handler_url']); } + if (array_key_exists('csp_nonce', $options)) { + $this->setCspNonce($options['csp_nonce']); + } } /** @@ -606,6 +611,28 @@ class JavascriptRenderer return $this->openHandlerUrl; } + /** + * Sets the CSP Nonce (or remove it by setting to null) + * + * @param string|null $nonce + * @return $this + */ + public function setCspNonce($nonce = null) + { + $this->cspNonce = $nonce; + return $this; + } + + /** + * Get the CSP Nonce + * + * @return string|null + */ + public function getCspNonce() + { + return $this->cspNonce; + } + /** * Add assets stored in files to render in the head * @@ -692,8 +719,8 @@ class JavascriptRenderer } foreach ($additionalAssets as $assets) { - $basePath = isset($assets['base_path']) ? $assets['base_path'] : null; - $baseUrl = isset($assets['base_url']) ? $assets['base_url'] : null; + $basePath = isset($assets['base_path']) ? $assets['base_path'] : ''; + $baseUrl = isset($assets['base_url']) ? $assets['base_url'] : ''; $root = $this->getRelativeRoot($relativeTo, $this->makeUriRelativeTo($basePath, $this->basePath), $this->makeUriRelativeTo($baseUrl, $this->baseUrl)); @@ -719,7 +746,7 @@ class JavascriptRenderer $cssFiles = array_unique($cssFiles); $jsFiles = array_unique($jsFiles); - return $this->filterAssetArray(array($cssFiles, $jsFiles, $inlineCss, $inlineJs, $inlineHead), $type); + return $this->filterAssetArray(array($cssFiles, $jsFiles, $inlineCss, $inlineJs, $inlineHead), $type ?? ''); } /** @@ -762,7 +789,9 @@ class JavascriptRenderer return $uris; } - if ($uri && (substr($uri, 0, 1) === '/' || preg_match('/^([a-zA-Z]+:\/\/|[a-zA-Z]:\/|[a-zA-Z]:\\\)/', $uri))) { + $uri = $uri ?? ''; + + if (substr($uri, 0, 1) === '/' || preg_match('/^([a-zA-Z]+:\/\/|[a-zA-Z]:\/|[a-zA-Z]:\\\)/', $uri)) { return $uri; } return rtrim($root, '/') . "/$uri"; @@ -775,10 +804,10 @@ class JavascriptRenderer * @param string $type 'css', 'js', 'inline_css', 'inline_js', 'inline_head', or null for all * @return array */ - protected function filterAssetArray($array, $type = null) + protected function filterAssetArray($array, $type = '') { $types = array('css', 'js', 'inline_css', 'inline_js', 'inline_head'); - $typeIndex = is_null($type) ? false : array_search(strtolower($type), $types); + $typeIndex = array_search(strtolower($type ?? ''), $types); return $typeIndex !== false ? $array[$typeIndex] : $array; } @@ -905,6 +934,8 @@ class JavascriptRenderer list($cssFiles, $jsFiles, $inlineCss, $inlineJs, $inlineHead) = $this->getAssets(null, self::RELATIVE_URL); $html = ''; + $nonce = $this->getNonceAttribute(); + foreach ($cssFiles as $file) { $html .= sprintf('' . "\n", $file); } @@ -918,7 +949,7 @@ class JavascriptRenderer } foreach ($inlineJs as $content) { - $html .= sprintf('' . "\n", $content); + $html .= sprintf('' . "\n", $nonce, $content); } foreach ($inlineHead as $content) { @@ -926,7 +957,7 @@ class JavascriptRenderer } if ($this->enableJqueryNoConflict && !$this->useRequireJs) { - $html .= '' . "\n"; + $html .= '' . "\n"; } return $html; @@ -1013,10 +1044,12 @@ class JavascriptRenderer $suffix = !$initialize ? '(ajax)' : null; $js .= $this->getAddDatasetCode($this->debugBar->getCurrentRequestId(), $this->debugBar->getData(), $suffix); + $nonce = $this->getNonceAttribute(); + if ($this->useRequireJs){ - return "\n"; + return "\n"; } else { - return "\n"; + return "\n"; } } @@ -1149,4 +1182,17 @@ class JavascriptRenderer ); return $js; } + + /** + * If a nonce it set, create the correct attribute + * @return string + */ + protected function getNonceAttribute() + { + if ($nonce = $this->getCspNonce()) { + return ' nonce="' . $nonce .'"'; + } + + return ''; + } } diff --git a/htdocs/includes/maximebf/debugbar/src/DebugBar/Resources/debugbar.css b/htdocs/includes/maximebf/debugbar/src/DebugBar/Resources/debugbar.css index 502d2482954..606e51dab0e 100644 --- a/htdocs/includes/maximebf/debugbar/src/DebugBar/Resources/debugbar.css +++ b/htdocs/includes/maximebf/debugbar/src/DebugBar/Resources/debugbar.css @@ -116,11 +116,10 @@ div.phpdebugbar-closed, div.phpdebugbar-minimized{ } /* -------------------------------------- */ -div.phpdebugbar-header, a.phpdebugbar-restore-btn { +a.phpdebugbar-restore-btn { background: #efefef url(data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%2020%2020%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Ccircle%20fill%3D%22%23000%22%20cx%3D%2210%22%20cy%3D%2210%22%20r%3D%229%22%2F%3E%3Cpath%20d%3D%22M6.039%208.342c.463%200%20.772.084.927.251.154.168.191.455.11.862-.084.424-.247.727-.487.908-.241.182-.608.272-1.1.272h-.743l.456-2.293h.837zm-2.975%204.615h1.22l.29-1.457H5.62c.461%200%20.84-.047%201.139-.142.298-.095.569-.254.812-.477.205-.184.37-.387.497-.608.127-.222.217-.466.27-.734.13-.65.032-1.155-.292-1.518-.324-.362-.84-.543-1.545-.543H4.153l-1.089%205.479zM9.235%206.02h1.21l-.289%201.458h1.079c.679%200%201.147.115%201.405.347.258.231.335.607.232%201.125l-.507%202.55h-1.23l.481-2.424c.055-.276.035-.464-.06-.565-.095-.1-.298-.15-.608-.15H9.98L9.356%2011.5h-1.21l1.089-5.48M15.566%208.342c.464%200%20.773.084.928.251.154.168.19.455.11.862-.084.424-.247.727-.488.908-.24.182-.607.272-1.1.272h-.742l.456-2.293h.836zm-2.974%204.615h1.22l.29-1.457h1.046c.461%200%20.84-.047%201.139-.142.298-.095.569-.254.812-.477.205-.184.37-.387.497-.608.127-.222.217-.466.27-.734.129-.65.032-1.155-.292-1.518-.324-.362-.84-.543-1.545-.543H13.68l-1.089%205.479z%22%20fill%3D%22%23FFF%22%2F%3E%3C%2Fsvg%3E) no-repeat 5px 4px / 20px 20px; } div.phpdebugbar-header { - padding-left: 29px; min-height: 26px; line-height: 16px; } diff --git a/htdocs/includes/maximebf/debugbar/src/DebugBar/Resources/debugbar.js b/htdocs/includes/maximebf/debugbar/src/DebugBar/Resources/debugbar.js index 09c3caebdc6..66658d25938 100644 --- a/htdocs/includes/maximebf/debugbar/src/DebugBar/Resources/debugbar.js +++ b/htdocs/includes/maximebf/debugbar/src/DebugBar/Resources/debugbar.js @@ -477,6 +477,10 @@ if (typeof(PhpDebugBar) == 'undefined') { this.$dragCapture = $('
').addClass(csscls('drag-capture')).appendTo(this.$el); this.$resizehdle = $('').addClass(csscls('resize-handle')).appendTo(this.$el); this.$header = $('').addClass(csscls('header')).appendTo(this.$el); + this.$headerBtn = $('').addClass(csscls('restore-btn')).appendTo(this.$header); + this.$headerBtn.click(function() { + self.close(); + }); this.$headerLeft = $('').addClass(csscls('header-left')).appendTo(this.$header); this.$headerRight = $('').addClass(csscls('header-right')).appendTo(this.$header); var $body = this.$body = $('').addClass(csscls('body')).appendTo(this.$el); @@ -944,6 +948,7 @@ if (typeof(PhpDebugBar) == 'undefined') { var self = this; this.openHandler.load(id, function(data) { self.addDataSet(data, id, suffix, show); + self.resize(); callback && callback(data); }); }, @@ -1160,7 +1165,7 @@ if (typeof(PhpDebugBar) == 'undefined') { var self = this; var proxied = window.fetch; - if (proxied === undefined && proxied.polyfill !== undefined) { + if (proxied !== undefined && proxied.polyfill !== undefined) { return; } @@ -1169,8 +1174,6 @@ if (typeof(PhpDebugBar) == 'undefined') { promise.then(function (response) { self.handle(response); - }, function (e) { - self.handle(response); }); return promise; @@ -1204,7 +1207,9 @@ if (typeof(PhpDebugBar) == 'undefined') { var xhr = this; this.addEventListener("readystatechange", function() { var skipUrl = self.debugbar.openHandler ? self.debugbar.openHandler.get('url') : null; - if (xhr.readyState == 4 && url.indexOf(skipUrl) !== 0) { + var href = (typeof url === 'string') ? url : url.href; + + if (xhr.readyState == 4 && href.indexOf(skipUrl) !== 0) { self.handle(xhr); } }, false); diff --git a/htdocs/includes/maximebf/debugbar/src/DebugBar/Resources/vendor/font-awesome/css/font-awesome.min.css b/htdocs/includes/maximebf/debugbar/src/DebugBar/Resources/vendor/font-awesome/css/font-awesome.min.css new file mode 100644 index 00000000000..3559d52d8c2 --- /dev/null +++ b/htdocs/includes/maximebf/debugbar/src/DebugBar/Resources/vendor/font-awesome/css/font-awesome.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'PhpDebugbarFontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.phpdebugbar-fa{display:inline-block;font:normal normal normal 14px/1 PhpDebugbarFontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.phpdebugbar-fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.phpdebugbar-fa-2x{font-size:2em}.phpdebugbar-fa-3x{font-size:3em}.phpdebugbar-fa-4x{font-size:4em}.phpdebugbar-fa-5x{font-size:5em}.phpdebugbar-fa-fw{width:1.28571429em;text-align:center}.phpdebugbar-fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.phpdebugbar-fa-ul>li{position:relative}.phpdebugbar-fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.phpdebugbar-fa-li.phpdebugbar-fa-lg{left:-1.85714286em}.phpdebugbar-fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.phpdebugbar-fa-pull-left{float:left}.phpdebugbar-fa-pull-right{float:right}.phpdebugbar-fa.phpdebugbar-fa-pull-left{margin-right:.3em}.phpdebugbar-fa.phpdebugbar-fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.phpdebugbar-fa.pull-left{margin-right:.3em}.phpdebugbar-fa.pull-right{margin-left:.3em}.phpdebugbar-fa-spin{-webkit-animation:phpdebugbar-fa-spin 2s infinite linear;animation:phpdebugbar-fa-spin 2s infinite linear}.phpdebugbar-fa-pulse{-webkit-animation:phpdebugbar-fa-spin 1s infinite steps(8);animation:phpdebugbar-fa-spin 1s infinite steps(8)}@-webkit-keyframes phpdebugbar-fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes phpdebugbar-fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.phpdebugbar-fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.phpdebugbar-fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.phpdebugbar-fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.phpdebugbar-fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.phpdebugbar-fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .phpdebugbar-fa-rotate-90,:root .phpdebugbar-fa-rotate-180,:root .phpdebugbar-fa-rotate-270,:root .phpdebugbar-fa-flip-horizontal,:root .phpdebugbar-fa-flip-vertical{filter:none}.phpdebugbar-fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.phpdebugbar-fa-stack-1x,.phpdebugbar-fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.phpdebugbar-fa-stack-1x{line-height:inherit}.phpdebugbar-fa-stack-2x{font-size:2em}.phpdebugbar-fa-inverse{color:#fff}.phpdebugbar-fa-glass:before{content:"\f000"}.phpdebugbar-fa-music:before{content:"\f001"}.phpdebugbar-fa-search:before{content:"\f002"}.phpdebugbar-fa-envelope-o:before{content:"\f003"}.phpdebugbar-fa-heart:before{content:"\f004"}.phpdebugbar-fa-star:before{content:"\f005"}.phpdebugbar-fa-star-o:before{content:"\f006"}.phpdebugbar-fa-user:before{content:"\f007"}.phpdebugbar-fa-film:before{content:"\f008"}.phpdebugbar-fa-th-large:before{content:"\f009"}.phpdebugbar-fa-th:before{content:"\f00a"}.phpdebugbar-fa-th-list:before{content:"\f00b"}.phpdebugbar-fa-check:before{content:"\f00c"}.phpdebugbar-fa-remove:before,.phpdebugbar-fa-close:before,.phpdebugbar-fa-times:before{content:"\f00d"}.phpdebugbar-fa-search-plus:before{content:"\f00e"}.phpdebugbar-fa-search-minus:before{content:"\f010"}.phpdebugbar-fa-power-off:before{content:"\f011"}.phpdebugbar-fa-signal:before{content:"\f012"}.phpdebugbar-fa-gear:before,.phpdebugbar-fa-cog:before{content:"\f013"}.phpdebugbar-fa-trash-o:before{content:"\f014"}.phpdebugbar-fa-home:before{content:"\f015"}.phpdebugbar-fa-file-o:before{content:"\f016"}.phpdebugbar-fa-clock-o:before{content:"\f017"}.phpdebugbar-fa-road:before{content:"\f018"}.phpdebugbar-fa-download:before{content:"\f019"}.phpdebugbar-fa-arrow-circle-o-down:before{content:"\f01a"}.phpdebugbar-fa-arrow-circle-o-up:before{content:"\f01b"}.phpdebugbar-fa-inbox:before{content:"\f01c"}.phpdebugbar-fa-play-circle-o:before{content:"\f01d"}.phpdebugbar-fa-rotate-right:before,.phpdebugbar-fa-repeat:before{content:"\f01e"}.phpdebugbar-fa-refresh:before{content:"\f021"}.phpdebugbar-fa-list-alt:before{content:"\f022"}.phpdebugbar-fa-lock:before{content:"\f023"}.phpdebugbar-fa-flag:before{content:"\f024"}.phpdebugbar-fa-headphones:before{content:"\f025"}.phpdebugbar-fa-volume-off:before{content:"\f026"}.phpdebugbar-fa-volume-down:before{content:"\f027"}.phpdebugbar-fa-volume-up:before{content:"\f028"}.phpdebugbar-fa-qrcode:before{content:"\f029"}.phpdebugbar-fa-barcode:before{content:"\f02a"}.phpdebugbar-fa-tag:before{content:"\f02b"}.phpdebugbar-fa-tags:before{content:"\f02c"}.phpdebugbar-fa-book:before{content:"\f02d"}.phpdebugbar-fa-bookmark:before{content:"\f02e"}.phpdebugbar-fa-print:before{content:"\f02f"}.phpdebugbar-fa-camera:before{content:"\f030"}.phpdebugbar-fa-font:before{content:"\f031"}.phpdebugbar-fa-bold:before{content:"\f032"}.phpdebugbar-fa-italic:before{content:"\f033"}.phpdebugbar-fa-text-height:before{content:"\f034"}.phpdebugbar-fa-text-width:before{content:"\f035"}.phpdebugbar-fa-align-left:before{content:"\f036"}.phpdebugbar-fa-align-center:before{content:"\f037"}.phpdebugbar-fa-align-right:before{content:"\f038"}.phpdebugbar-fa-align-justify:before{content:"\f039"}.phpdebugbar-fa-list:before{content:"\f03a"}.phpdebugbar-fa-dedent:before,.phpdebugbar-fa-outdent:before{content:"\f03b"}.phpdebugbar-fa-indent:before{content:"\f03c"}.phpdebugbar-fa-video-camera:before{content:"\f03d"}.phpdebugbar-fa-photo:before,.phpdebugbar-fa-image:before,.phpdebugbar-fa-picture-o:before{content:"\f03e"}.phpdebugbar-fa-pencil:before{content:"\f040"}.phpdebugbar-fa-map-marker:before{content:"\f041"}.phpdebugbar-fa-adjust:before{content:"\f042"}.phpdebugbar-fa-tint:before{content:"\f043"}.phpdebugbar-fa-edit:before,.phpdebugbar-fa-pencil-square-o:before{content:"\f044"}.phpdebugbar-fa-share-square-o:before{content:"\f045"}.phpdebugbar-fa-check-square-o:before{content:"\f046"}.phpdebugbar-fa-arrows:before{content:"\f047"}.phpdebugbar-fa-step-backward:before{content:"\f048"}.phpdebugbar-fa-fast-backward:before{content:"\f049"}.phpdebugbar-fa-backward:before{content:"\f04a"}.phpdebugbar-fa-play:before{content:"\f04b"}.phpdebugbar-fa-pause:before{content:"\f04c"}.phpdebugbar-fa-stop:before{content:"\f04d"}.phpdebugbar-fa-forward:before{content:"\f04e"}.phpdebugbar-fa-fast-forward:before{content:"\f050"}.phpdebugbar-fa-step-forward:before{content:"\f051"}.phpdebugbar-fa-eject:before{content:"\f052"}.phpdebugbar-fa-chevron-left:before{content:"\f053"}.phpdebugbar-fa-chevron-right:before{content:"\f054"}.phpdebugbar-fa-plus-circle:before{content:"\f055"}.phpdebugbar-fa-minus-circle:before{content:"\f056"}.phpdebugbar-fa-times-circle:before{content:"\f057"}.phpdebugbar-fa-check-circle:before{content:"\f058"}.phpdebugbar-fa-question-circle:before{content:"\f059"}.phpdebugbar-fa-info-circle:before{content:"\f05a"}.phpdebugbar-fa-crosshairs:before{content:"\f05b"}.phpdebugbar-fa-times-circle-o:before{content:"\f05c"}.phpdebugbar-fa-check-circle-o:before{content:"\f05d"}.phpdebugbar-fa-ban:before{content:"\f05e"}.phpdebugbar-fa-arrow-left:before{content:"\f060"}.phpdebugbar-fa-arrow-right:before{content:"\f061"}.phpdebugbar-fa-arrow-up:before{content:"\f062"}.phpdebugbar-fa-arrow-down:before{content:"\f063"}.phpdebugbar-fa-mail-forward:before,.phpdebugbar-fa-share:before{content:"\f064"}.phpdebugbar-fa-expand:before{content:"\f065"}.phpdebugbar-fa-compress:before{content:"\f066"}.phpdebugbar-fa-plus:before{content:"\f067"}.phpdebugbar-fa-minus:before{content:"\f068"}.phpdebugbar-fa-asterisk:before{content:"\f069"}.phpdebugbar-fa-exclamation-circle:before{content:"\f06a"}.phpdebugbar-fa-gift:before{content:"\f06b"}.phpdebugbar-fa-leaf:before{content:"\f06c"}.phpdebugbar-fa-fire:before{content:"\f06d"}.phpdebugbar-fa-eye:before{content:"\f06e"}.phpdebugbar-fa-eye-slash:before{content:"\f070"}.phpdebugbar-fa-warning:before,.phpdebugbar-fa-exclamation-triangle:before{content:"\f071"}.phpdebugbar-fa-plane:before{content:"\f072"}.phpdebugbar-fa-calendar:before{content:"\f073"}.phpdebugbar-fa-random:before{content:"\f074"}.phpdebugbar-fa-comment:before{content:"\f075"}.phpdebugbar-fa-magnet:before{content:"\f076"}.phpdebugbar-fa-chevron-up:before{content:"\f077"}.phpdebugbar-fa-chevron-down:before{content:"\f078"}.phpdebugbar-fa-retweet:before{content:"\f079"}.phpdebugbar-fa-shopping-cart:before{content:"\f07a"}.phpdebugbar-fa-folder:before{content:"\f07b"}.phpdebugbar-fa-folder-open:before{content:"\f07c"}.phpdebugbar-fa-arrows-v:before{content:"\f07d"}.phpdebugbar-fa-arrows-h:before{content:"\f07e"}.phpdebugbar-fa-bar-chart-o:before,.phpdebugbar-fa-bar-chart:before{content:"\f080"}.phpdebugbar-fa-twitter-square:before{content:"\f081"}.phpdebugbar-fa-facebook-square:before{content:"\f082"}.phpdebugbar-fa-camera-retro:before{content:"\f083"}.phpdebugbar-fa-key:before{content:"\f084"}.phpdebugbar-fa-gears:before,.phpdebugbar-fa-cogs:before{content:"\f085"}.phpdebugbar-fa-comments:before{content:"\f086"}.phpdebugbar-fa-thumbs-o-up:before{content:"\f087"}.phpdebugbar-fa-thumbs-o-down:before{content:"\f088"}.phpdebugbar-fa-star-half:before{content:"\f089"}.phpdebugbar-fa-heart-o:before{content:"\f08a"}.phpdebugbar-fa-sign-out:before{content:"\f08b"}.phpdebugbar-fa-linkedin-square:before{content:"\f08c"}.phpdebugbar-fa-thumb-tack:before{content:"\f08d"}.phpdebugbar-fa-external-link:before{content:"\f08e"}.phpdebugbar-fa-sign-in:before{content:"\f090"}.phpdebugbar-fa-trophy:before{content:"\f091"}.phpdebugbar-fa-github-square:before{content:"\f092"}.phpdebugbar-fa-upload:before{content:"\f093"}.phpdebugbar-fa-lemon-o:before{content:"\f094"}.phpdebugbar-fa-phone:before{content:"\f095"}.phpdebugbar-fa-square-o:before{content:"\f096"}.phpdebugbar-fa-bookmark-o:before{content:"\f097"}.phpdebugbar-fa-phone-square:before{content:"\f098"}.phpdebugbar-fa-twitter:before{content:"\f099"}.phpdebugbar-fa-facebook-f:before,.phpdebugbar-fa-facebook:before{content:"\f09a"}.phpdebugbar-fa-github:before{content:"\f09b"}.phpdebugbar-fa-unlock:before{content:"\f09c"}.phpdebugbar-fa-credit-card:before{content:"\f09d"}.phpdebugbar-fa-feed:before,.phpdebugbar-fa-rss:before{content:"\f09e"}.phpdebugbar-fa-hdd-o:before{content:"\f0a0"}.phpdebugbar-fa-bullhorn:before{content:"\f0a1"}.phpdebugbar-fa-bell:before{content:"\f0f3"}.phpdebugbar-fa-certificate:before{content:"\f0a3"}.phpdebugbar-fa-hand-o-right:before{content:"\f0a4"}.phpdebugbar-fa-hand-o-left:before{content:"\f0a5"}.phpdebugbar-fa-hand-o-up:before{content:"\f0a6"}.phpdebugbar-fa-hand-o-down:before{content:"\f0a7"}.phpdebugbar-fa-arrow-circle-left:before{content:"\f0a8"}.phpdebugbar-fa-arrow-circle-right:before{content:"\f0a9"}.phpdebugbar-fa-arrow-circle-up:before{content:"\f0aa"}.phpdebugbar-fa-arrow-circle-down:before{content:"\f0ab"}.phpdebugbar-fa-globe:before{content:"\f0ac"}.phpdebugbar-fa-wrench:before{content:"\f0ad"}.phpdebugbar-fa-tasks:before{content:"\f0ae"}.phpdebugbar-fa-filter:before{content:"\f0b0"}.phpdebugbar-fa-briefcase:before{content:"\f0b1"}.phpdebugbar-fa-arrows-alt:before{content:"\f0b2"}.phpdebugbar-fa-group:before,.phpdebugbar-fa-users:before{content:"\f0c0"}.phpdebugbar-fa-chain:before,.phpdebugbar-fa-link:before{content:"\f0c1"}.phpdebugbar-fa-cloud:before{content:"\f0c2"}.phpdebugbar-fa-flask:before{content:"\f0c3"}.phpdebugbar-fa-cut:before,.phpdebugbar-fa-scissors:before{content:"\f0c4"}.phpdebugbar-fa-copy:before,.phpdebugbar-fa-files-o:before{content:"\f0c5"}.phpdebugbar-fa-paperclip:before{content:"\f0c6"}.phpdebugbar-fa-save:before,.phpdebugbar-fa-floppy-o:before{content:"\f0c7"}.phpdebugbar-fa-square:before{content:"\f0c8"}.phpdebugbar-fa-navicon:before,.phpdebugbar-fa-reorder:before,.phpdebugbar-fa-bars:before{content:"\f0c9"}.phpdebugbar-fa-list-ul:before{content:"\f0ca"}.phpdebugbar-fa-list-ol:before{content:"\f0cb"}.phpdebugbar-fa-strikethrough:before{content:"\f0cc"}.phpdebugbar-fa-underline:before{content:"\f0cd"}.phpdebugbar-fa-table:before{content:"\f0ce"}.phpdebugbar-fa-magic:before{content:"\f0d0"}.phpdebugbar-fa-truck:before{content:"\f0d1"}.phpdebugbar-fa-pinterest:before{content:"\f0d2"}.phpdebugbar-fa-pinterest-square:before{content:"\f0d3"}.phpdebugbar-fa-google-plus-square:before{content:"\f0d4"}.phpdebugbar-fa-google-plus:before{content:"\f0d5"}.phpdebugbar-fa-money:before{content:"\f0d6"}.phpdebugbar-fa-caret-down:before{content:"\f0d7"}.phpdebugbar-fa-caret-up:before{content:"\f0d8"}.phpdebugbar-fa-caret-left:before{content:"\f0d9"}.phpdebugbar-fa-caret-right:before{content:"\f0da"}.phpdebugbar-fa-columns:before{content:"\f0db"}.phpdebugbar-fa-unsorted:before,.phpdebugbar-fa-sort:before{content:"\f0dc"}.phpdebugbar-fa-sort-down:before,.phpdebugbar-fa-sort-desc:before{content:"\f0dd"}.phpdebugbar-fa-sort-up:before,.phpdebugbar-fa-sort-asc:before{content:"\f0de"}.phpdebugbar-fa-envelope:before{content:"\f0e0"}.phpdebugbar-fa-linkedin:before{content:"\f0e1"}.phpdebugbar-fa-rotate-left:before,.phpdebugbar-fa-undo:before{content:"\f0e2"}.phpdebugbar-fa-legal:before,.phpdebugbar-fa-gavel:before{content:"\f0e3"}.phpdebugbar-fa-dashboard:before,.phpdebugbar-fa-tachometer:before{content:"\f0e4"}.phpdebugbar-fa-comment-o:before{content:"\f0e5"}.phpdebugbar-fa-comments-o:before{content:"\f0e6"}.phpdebugbar-fa-flash:before,.phpdebugbar-fa-bolt:before{content:"\f0e7"}.phpdebugbar-fa-sitemap:before{content:"\f0e8"}.phpdebugbar-fa-umbrella:before{content:"\f0e9"}.phpdebugbar-fa-paste:before,.phpdebugbar-fa-clipboard:before{content:"\f0ea"}.phpdebugbar-fa-lightbulb-o:before{content:"\f0eb"}.phpdebugbar-fa-exchange:before{content:"\f0ec"}.phpdebugbar-fa-cloud-download:before{content:"\f0ed"}.phpdebugbar-fa-cloud-upload:before{content:"\f0ee"}.phpdebugbar-fa-user-md:before{content:"\f0f0"}.phpdebugbar-fa-stethoscope:before{content:"\f0f1"}.phpdebugbar-fa-suitcase:before{content:"\f0f2"}.phpdebugbar-fa-bell-o:before{content:"\f0a2"}.phpdebugbar-fa-coffee:before{content:"\f0f4"}.phpdebugbar-fa-cutlery:before{content:"\f0f5"}.phpdebugbar-fa-file-text-o:before{content:"\f0f6"}.phpdebugbar-fa-building-o:before{content:"\f0f7"}.phpdebugbar-fa-hospital-o:before{content:"\f0f8"}.phpdebugbar-fa-ambulance:before{content:"\f0f9"}.phpdebugbar-fa-medkit:before{content:"\f0fa"}.phpdebugbar-fa-fighter-jet:before{content:"\f0fb"}.phpdebugbar-fa-beer:before{content:"\f0fc"}.phpdebugbar-fa-h-square:before{content:"\f0fd"}.phpdebugbar-fa-plus-square:before{content:"\f0fe"}.phpdebugbar-fa-angle-double-left:before{content:"\f100"}.phpdebugbar-fa-angle-double-right:before{content:"\f101"}.phpdebugbar-fa-angle-double-up:before{content:"\f102"}.phpdebugbar-fa-angle-double-down:before{content:"\f103"}.phpdebugbar-fa-angle-left:before{content:"\f104"}.phpdebugbar-fa-angle-right:before{content:"\f105"}.phpdebugbar-fa-angle-up:before{content:"\f106"}.phpdebugbar-fa-angle-down:before{content:"\f107"}.phpdebugbar-fa-desktop:before{content:"\f108"}.phpdebugbar-fa-laptop:before{content:"\f109"}.phpdebugbar-fa-tablet:before{content:"\f10a"}.phpdebugbar-fa-mobile-phone:before,.phpdebugbar-fa-mobile:before{content:"\f10b"}.phpdebugbar-fa-circle-o:before{content:"\f10c"}.phpdebugbar-fa-quote-left:before{content:"\f10d"}.phpdebugbar-fa-quote-right:before{content:"\f10e"}.phpdebugbar-fa-spinner:before{content:"\f110"}.phpdebugbar-fa-circle:before{content:"\f111"}.phpdebugbar-fa-mail-reply:before,.phpdebugbar-fa-reply:before{content:"\f112"}.phpdebugbar-fa-github-alt:before{content:"\f113"}.phpdebugbar-fa-folder-o:before{content:"\f114"}.phpdebugbar-fa-folder-open-o:before{content:"\f115"}.phpdebugbar-fa-smile-o:before{content:"\f118"}.phpdebugbar-fa-frown-o:before{content:"\f119"}.phpdebugbar-fa-meh-o:before{content:"\f11a"}.phpdebugbar-fa-gamepad:before{content:"\f11b"}.phpdebugbar-fa-keyboard-o:before{content:"\f11c"}.phpdebugbar-fa-flag-o:before{content:"\f11d"}.phpdebugbar-fa-flag-checkered:before{content:"\f11e"}.phpdebugbar-fa-terminal:before{content:"\f120"}.phpdebugbar-fa-code:before{content:"\f121"}.phpdebugbar-fa-mail-reply-all:before,.phpdebugbar-fa-reply-all:before{content:"\f122"}.phpdebugbar-fa-star-half-empty:before,.phpdebugbar-fa-star-half-full:before,.phpdebugbar-fa-star-half-o:before{content:"\f123"}.phpdebugbar-fa-location-arrow:before{content:"\f124"}.phpdebugbar-fa-crop:before{content:"\f125"}.phpdebugbar-fa-code-fork:before{content:"\f126"}.phpdebugbar-fa-unlink:before,.phpdebugbar-fa-chain-broken:before{content:"\f127"}.phpdebugbar-fa-question:before{content:"\f128"}.phpdebugbar-fa-info:before{content:"\f129"}.phpdebugbar-fa-exclamation:before{content:"\f12a"}.phpdebugbar-fa-superscript:before{content:"\f12b"}.phpdebugbar-fa-subscript:before{content:"\f12c"}.phpdebugbar-fa-eraser:before{content:"\f12d"}.phpdebugbar-fa-puzzle-piece:before{content:"\f12e"}.phpdebugbar-fa-microphone:before{content:"\f130"}.phpdebugbar-fa-microphone-slash:before{content:"\f131"}.phpdebugbar-fa-shield:before{content:"\f132"}.phpdebugbar-fa-calendar-o:before{content:"\f133"}.phpdebugbar-fa-fire-extinguisher:before{content:"\f134"}.phpdebugbar-fa-rocket:before{content:"\f135"}.phpdebugbar-fa-maxcdn:before{content:"\f136"}.phpdebugbar-fa-chevron-circle-left:before{content:"\f137"}.phpdebugbar-fa-chevron-circle-right:before{content:"\f138"}.phpdebugbar-fa-chevron-circle-up:before{content:"\f139"}.phpdebugbar-fa-chevron-circle-down:before{content:"\f13a"}.phpdebugbar-fa-html5:before{content:"\f13b"}.phpdebugbar-fa-css3:before{content:"\f13c"}.phpdebugbar-fa-anchor:before{content:"\f13d"}.phpdebugbar-fa-unlock-alt:before{content:"\f13e"}.phpdebugbar-fa-bullseye:before{content:"\f140"}.phpdebugbar-fa-ellipsis-h:before{content:"\f141"}.phpdebugbar-fa-ellipsis-v:before{content:"\f142"}.phpdebugbar-fa-rss-square:before{content:"\f143"}.phpdebugbar-fa-play-circle:before{content:"\f144"}.phpdebugbar-fa-ticket:before{content:"\f145"}.phpdebugbar-fa-minus-square:before{content:"\f146"}.phpdebugbar-fa-minus-square-o:before{content:"\f147"}.phpdebugbar-fa-level-up:before{content:"\f148"}.phpdebugbar-fa-level-down:before{content:"\f149"}.phpdebugbar-fa-check-square:before{content:"\f14a"}.phpdebugbar-fa-pencil-square:before{content:"\f14b"}.phpdebugbar-fa-external-link-square:before{content:"\f14c"}.phpdebugbar-fa-share-square:before{content:"\f14d"}.phpdebugbar-fa-compass:before{content:"\f14e"}.phpdebugbar-fa-toggle-down:before,.phpdebugbar-fa-caret-square-o-down:before{content:"\f150"}.phpdebugbar-fa-toggle-up:before,.phpdebugbar-fa-caret-square-o-up:before{content:"\f151"}.phpdebugbar-fa-toggle-right:before,.phpdebugbar-fa-caret-square-o-right:before{content:"\f152"}.phpdebugbar-fa-euro:before,.phpdebugbar-fa-eur:before{content:"\f153"}.phpdebugbar-fa-gbp:before{content:"\f154"}.phpdebugbar-fa-dollar:before,.phpdebugbar-fa-usd:before{content:"\f155"}.phpdebugbar-fa-rupee:before,.phpdebugbar-fa-inr:before{content:"\f156"}.phpdebugbar-fa-cny:before,.phpdebugbar-fa-rmb:before,.phpdebugbar-fa-yen:before,.phpdebugbar-fa-jpy:before{content:"\f157"}.phpdebugbar-fa-ruble:before,.phpdebugbar-fa-rouble:before,.phpdebugbar-fa-rub:before{content:"\f158"}.phpdebugbar-fa-won:before,.phpdebugbar-fa-krw:before{content:"\f159"}.phpdebugbar-fa-bitcoin:before,.phpdebugbar-fa-btc:before{content:"\f15a"}.phpdebugbar-fa-file:before{content:"\f15b"}.phpdebugbar-fa-file-text:before{content:"\f15c"}.phpdebugbar-fa-sort-alpha-asc:before{content:"\f15d"}.phpdebugbar-fa-sort-alpha-desc:before{content:"\f15e"}.phpdebugbar-fa-sort-amount-asc:before{content:"\f160"}.phpdebugbar-fa-sort-amount-desc:before{content:"\f161"}.phpdebugbar-fa-sort-numeric-asc:before{content:"\f162"}.phpdebugbar-fa-sort-numeric-desc:before{content:"\f163"}.phpdebugbar-fa-thumbs-up:before{content:"\f164"}.phpdebugbar-fa-thumbs-down:before{content:"\f165"}.phpdebugbar-fa-youtube-square:before{content:"\f166"}.phpdebugbar-fa-youtube:before{content:"\f167"}.phpdebugbar-fa-xing:before{content:"\f168"}.phpdebugbar-fa-xing-square:before{content:"\f169"}.phpdebugbar-fa-youtube-play:before{content:"\f16a"}.phpdebugbar-fa-dropbox:before{content:"\f16b"}.phpdebugbar-fa-stack-overflow:before{content:"\f16c"}.phpdebugbar-fa-instagram:before{content:"\f16d"}.phpdebugbar-fa-flickr:before{content:"\f16e"}.phpdebugbar-fa-adn:before{content:"\f170"}.phpdebugbar-fa-bitbucket:before{content:"\f171"}.phpdebugbar-fa-bitbucket-square:before{content:"\f172"}.phpdebugbar-fa-tumblr:before{content:"\f173"}.phpdebugbar-fa-tumblr-square:before{content:"\f174"}.phpdebugbar-fa-long-arrow-down:before{content:"\f175"}.phpdebugbar-fa-long-arrow-up:before{content:"\f176"}.phpdebugbar-fa-long-arrow-left:before{content:"\f177"}.phpdebugbar-fa-long-arrow-right:before{content:"\f178"}.phpdebugbar-fa-apple:before{content:"\f179"}.phpdebugbar-fa-windows:before{content:"\f17a"}.phpdebugbar-fa-android:before{content:"\f17b"}.phpdebugbar-fa-linux:before{content:"\f17c"}.phpdebugbar-fa-dribbble:before{content:"\f17d"}.phpdebugbar-fa-skype:before{content:"\f17e"}.phpdebugbar-fa-foursquare:before{content:"\f180"}.phpdebugbar-fa-trello:before{content:"\f181"}.phpdebugbar-fa-female:before{content:"\f182"}.phpdebugbar-fa-male:before{content:"\f183"}.phpdebugbar-fa-gittip:before,.phpdebugbar-fa-gratipay:before{content:"\f184"}.phpdebugbar-fa-sun-o:before{content:"\f185"}.phpdebugbar-fa-moon-o:before{content:"\f186"}.phpdebugbar-fa-archive:before{content:"\f187"}.phpdebugbar-fa-bug:before{content:"\f188"}.phpdebugbar-fa-vk:before{content:"\f189"}.phpdebugbar-fa-weibo:before{content:"\f18a"}.phpdebugbar-fa-renren:before{content:"\f18b"}.phpdebugbar-fa-pagelines:before{content:"\f18c"}.phpdebugbar-fa-stack-exchange:before{content:"\f18d"}.phpdebugbar-fa-arrow-circle-o-right:before{content:"\f18e"}.phpdebugbar-fa-arrow-circle-o-left:before{content:"\f190"}.phpdebugbar-fa-toggle-left:before,.phpdebugbar-fa-caret-square-o-left:before{content:"\f191"}.phpdebugbar-fa-dot-circle-o:before{content:"\f192"}.phpdebugbar-fa-wheelchair:before{content:"\f193"}.phpdebugbar-fa-vimeo-square:before{content:"\f194"}.phpdebugbar-fa-turkish-lira:before,.phpdebugbar-fa-try:before{content:"\f195"}.phpdebugbar-fa-plus-square-o:before{content:"\f196"}.phpdebugbar-fa-space-shuttle:before{content:"\f197"}.phpdebugbar-fa-slack:before{content:"\f198"}.phpdebugbar-fa-envelope-square:before{content:"\f199"}.phpdebugbar-fa-wordpress:before{content:"\f19a"}.phpdebugbar-fa-openid:before{content:"\f19b"}.phpdebugbar-fa-institution:before,.phpdebugbar-fa-bank:before,.phpdebugbar-fa-university:before{content:"\f19c"}.phpdebugbar-fa-mortar-board:before,.phpdebugbar-fa-graduation-cap:before{content:"\f19d"}.phpdebugbar-fa-yahoo:before{content:"\f19e"}.phpdebugbar-fa-google:before{content:"\f1a0"}.phpdebugbar-fa-reddit:before{content:"\f1a1"}.phpdebugbar-fa-reddit-square:before{content:"\f1a2"}.phpdebugbar-fa-stumbleupon-circle:before{content:"\f1a3"}.phpdebugbar-fa-stumbleupon:before{content:"\f1a4"}.phpdebugbar-fa-delicious:before{content:"\f1a5"}.phpdebugbar-fa-digg:before{content:"\f1a6"}.phpdebugbar-fa-pied-piper-pp:before{content:"\f1a7"}.phpdebugbar-fa-pied-piper-alt:before{content:"\f1a8"}.phpdebugbar-fa-drupal:before{content:"\f1a9"}.phpdebugbar-fa-joomla:before{content:"\f1aa"}.phpdebugbar-fa-language:before{content:"\f1ab"}.phpdebugbar-fa-fax:before{content:"\f1ac"}.phpdebugbar-fa-building:before{content:"\f1ad"}.phpdebugbar-fa-child:before{content:"\f1ae"}.phpdebugbar-fa-paw:before{content:"\f1b0"}.phpdebugbar-fa-spoon:before{content:"\f1b1"}.phpdebugbar-fa-cube:before{content:"\f1b2"}.phpdebugbar-fa-cubes:before{content:"\f1b3"}.phpdebugbar-fa-behance:before{content:"\f1b4"}.phpdebugbar-fa-behance-square:before{content:"\f1b5"}.phpdebugbar-fa-steam:before{content:"\f1b6"}.phpdebugbar-fa-steam-square:before{content:"\f1b7"}.phpdebugbar-fa-recycle:before{content:"\f1b8"}.phpdebugbar-fa-automobile:before,.phpdebugbar-fa-car:before{content:"\f1b9"}.phpdebugbar-fa-cab:before,.phpdebugbar-fa-taxi:before{content:"\f1ba"}.phpdebugbar-fa-tree:before{content:"\f1bb"}.phpdebugbar-fa-spotify:before{content:"\f1bc"}.phpdebugbar-fa-deviantart:before{content:"\f1bd"}.phpdebugbar-fa-soundcloud:before{content:"\f1be"}.phpdebugbar-fa-database:before{content:"\f1c0"}.phpdebugbar-fa-file-pdf-o:before{content:"\f1c1"}.phpdebugbar-fa-file-word-o:before{content:"\f1c2"}.phpdebugbar-fa-file-excel-o:before{content:"\f1c3"}.phpdebugbar-fa-file-powerpoint-o:before{content:"\f1c4"}.phpdebugbar-fa-file-photo-o:before,.phpdebugbar-fa-file-picture-o:before,.phpdebugbar-fa-file-image-o:before{content:"\f1c5"}.phpdebugbar-fa-file-zip-o:before,.phpdebugbar-fa-file-archive-o:before{content:"\f1c6"}.phpdebugbar-fa-file-sound-o:before,.phpdebugbar-fa-file-audio-o:before{content:"\f1c7"}.phpdebugbar-fa-file-movie-o:before,.phpdebugbar-fa-file-video-o:before{content:"\f1c8"}.phpdebugbar-fa-file-code-o:before{content:"\f1c9"}.phpdebugbar-fa-vine:before{content:"\f1ca"}.phpdebugbar-fa-codepen:before{content:"\f1cb"}.phpdebugbar-fa-jsfiddle:before{content:"\f1cc"}.phpdebugbar-fa-life-bouy:before,.phpdebugbar-fa-life-buoy:before,.phpdebugbar-fa-life-saver:before,.phpdebugbar-fa-support:before,.phpdebugbar-fa-life-ring:before{content:"\f1cd"}.phpdebugbar-fa-circle-o-notch:before{content:"\f1ce"}.phpdebugbar-fa-ra:before,.phpdebugbar-fa-resistance:before,.phpdebugbar-fa-rebel:before{content:"\f1d0"}.phpdebugbar-fa-ge:before,.phpdebugbar-fa-empire:before{content:"\f1d1"}.phpdebugbar-fa-git-square:before{content:"\f1d2"}.phpdebugbar-fa-git:before{content:"\f1d3"}.phpdebugbar-fa-y-combinator-square:before,.phpdebugbar-fa-yc-square:before,.phpdebugbar-fa-hacker-news:before{content:"\f1d4"}.phpdebugbar-fa-tencent-weibo:before{content:"\f1d5"}.phpdebugbar-fa-qq:before{content:"\f1d6"}.phpdebugbar-fa-wechat:before,.phpdebugbar-fa-weixin:before{content:"\f1d7"}.phpdebugbar-fa-send:before,.phpdebugbar-fa-paper-plane:before{content:"\f1d8"}.phpdebugbar-fa-send-o:before,.phpdebugbar-fa-paper-plane-o:before{content:"\f1d9"}.phpdebugbar-fa-history:before{content:"\f1da"}.phpdebugbar-fa-circle-thin:before{content:"\f1db"}.phpdebugbar-fa-header:before{content:"\f1dc"}.phpdebugbar-fa-paragraph:before{content:"\f1dd"}.phpdebugbar-fa-sliders:before{content:"\f1de"}.phpdebugbar-fa-share-alt:before{content:"\f1e0"}.phpdebugbar-fa-share-alt-square:before{content:"\f1e1"}.phpdebugbar-fa-bomb:before{content:"\f1e2"}.phpdebugbar-fa-soccer-ball-o:before,.phpdebugbar-fa-futbol-o:before{content:"\f1e3"}.phpdebugbar-fa-tty:before{content:"\f1e4"}.phpdebugbar-fa-binoculars:before{content:"\f1e5"}.phpdebugbar-fa-plug:before{content:"\f1e6"}.phpdebugbar-fa-slideshare:before{content:"\f1e7"}.phpdebugbar-fa-twitch:before{content:"\f1e8"}.phpdebugbar-fa-yelp:before{content:"\f1e9"}.phpdebugbar-fa-newspaper-o:before{content:"\f1ea"}.phpdebugbar-fa-wifi:before{content:"\f1eb"}.phpdebugbar-fa-calculator:before{content:"\f1ec"}.phpdebugbar-fa-paypal:before{content:"\f1ed"}.phpdebugbar-fa-google-wallet:before{content:"\f1ee"}.phpdebugbar-fa-cc-visa:before{content:"\f1f0"}.phpdebugbar-fa-cc-mastercard:before{content:"\f1f1"}.phpdebugbar-fa-cc-discover:before{content:"\f1f2"}.phpdebugbar-fa-cc-amex:before{content:"\f1f3"}.phpdebugbar-fa-cc-paypal:before{content:"\f1f4"}.phpdebugbar-fa-cc-stripe:before{content:"\f1f5"}.phpdebugbar-fa-bell-slash:before{content:"\f1f6"}.phpdebugbar-fa-bell-slash-o:before{content:"\f1f7"}.phpdebugbar-fa-trash:before{content:"\f1f8"}.phpdebugbar-fa-copyright:before{content:"\f1f9"}.phpdebugbar-fa-at:before{content:"\f1fa"}.phpdebugbar-fa-eyedropper:before{content:"\f1fb"}.phpdebugbar-fa-paint-brush:before{content:"\f1fc"}.phpdebugbar-fa-birthday-cake:before{content:"\f1fd"}.phpdebugbar-fa-area-chart:before{content:"\f1fe"}.phpdebugbar-fa-pie-chart:before{content:"\f200"}.phpdebugbar-fa-line-chart:before{content:"\f201"}.phpdebugbar-fa-lastfm:before{content:"\f202"}.phpdebugbar-fa-lastfm-square:before{content:"\f203"}.phpdebugbar-fa-toggle-off:before{content:"\f204"}.phpdebugbar-fa-toggle-on:before{content:"\f205"}.phpdebugbar-fa-bicycle:before{content:"\f206"}.phpdebugbar-fa-bus:before{content:"\f207"}.phpdebugbar-fa-ioxhost:before{content:"\f208"}.phpdebugbar-fa-angellist:before{content:"\f209"}.phpdebugbar-fa-cc:before{content:"\f20a"}.phpdebugbar-fa-shekel:before,.phpdebugbar-fa-sheqel:before,.phpdebugbar-fa-ils:before{content:"\f20b"}.phpdebugbar-fa-meanpath:before{content:"\f20c"}.phpdebugbar-fa-buysellads:before{content:"\f20d"}.phpdebugbar-fa-connectdevelop:before{content:"\f20e"}.phpdebugbar-fa-dashcube:before{content:"\f210"}.phpdebugbar-fa-forumbee:before{content:"\f211"}.phpdebugbar-fa-leanpub:before{content:"\f212"}.phpdebugbar-fa-sellsy:before{content:"\f213"}.phpdebugbar-fa-shirtsinbulk:before{content:"\f214"}.phpdebugbar-fa-simplybuilt:before{content:"\f215"}.phpdebugbar-fa-skyatlas:before{content:"\f216"}.phpdebugbar-fa-cart-plus:before{content:"\f217"}.phpdebugbar-fa-cart-arrow-down:before{content:"\f218"}.phpdebugbar-fa-diamond:before{content:"\f219"}.phpdebugbar-fa-ship:before{content:"\f21a"}.phpdebugbar-fa-user-secret:before{content:"\f21b"}.phpdebugbar-fa-motorcycle:before{content:"\f21c"}.phpdebugbar-fa-street-view:before{content:"\f21d"}.phpdebugbar-fa-heartbeat:before{content:"\f21e"}.phpdebugbar-fa-venus:before{content:"\f221"}.phpdebugbar-fa-mars:before{content:"\f222"}.phpdebugbar-fa-mercury:before{content:"\f223"}.phpdebugbar-fa-intersex:before,.phpdebugbar-fa-transgender:before{content:"\f224"}.phpdebugbar-fa-transgender-alt:before{content:"\f225"}.phpdebugbar-fa-venus-double:before{content:"\f226"}.phpdebugbar-fa-mars-double:before{content:"\f227"}.phpdebugbar-fa-venus-mars:before{content:"\f228"}.phpdebugbar-fa-mars-stroke:before{content:"\f229"}.phpdebugbar-fa-mars-stroke-v:before{content:"\f22a"}.phpdebugbar-fa-mars-stroke-h:before{content:"\f22b"}.phpdebugbar-fa-neuter:before{content:"\f22c"}.phpdebugbar-fa-genderless:before{content:"\f22d"}.phpdebugbar-fa-facebook-official:before{content:"\f230"}.phpdebugbar-fa-pinterest-p:before{content:"\f231"}.phpdebugbar-fa-whatsapp:before{content:"\f232"}.phpdebugbar-fa-server:before{content:"\f233"}.phpdebugbar-fa-user-plus:before{content:"\f234"}.phpdebugbar-fa-user-times:before{content:"\f235"}.phpdebugbar-fa-hotel:before,.phpdebugbar-fa-bed:before{content:"\f236"}.phpdebugbar-fa-viacoin:before{content:"\f237"}.phpdebugbar-fa-train:before{content:"\f238"}.phpdebugbar-fa-subway:before{content:"\f239"}.phpdebugbar-fa-medium:before{content:"\f23a"}.phpdebugbar-fa-yc:before,.phpdebugbar-fa-y-combinator:before{content:"\f23b"}.phpdebugbar-fa-optin-monster:before{content:"\f23c"}.phpdebugbar-fa-opencart:before{content:"\f23d"}.phpdebugbar-fa-expeditedssl:before{content:"\f23e"}.phpdebugbar-fa-battery-4:before,.phpdebugbar-fa-battery:before,.phpdebugbar-fa-battery-full:before{content:"\f240"}.phpdebugbar-fa-battery-3:before,.phpdebugbar-fa-battery-three-quarters:before{content:"\f241"}.phpdebugbar-fa-battery-2:before,.phpdebugbar-fa-battery-half:before{content:"\f242"}.phpdebugbar-fa-battery-1:before,.phpdebugbar-fa-battery-quarter:before{content:"\f243"}.phpdebugbar-fa-battery-0:before,.phpdebugbar-fa-battery-empty:before{content:"\f244"}.phpdebugbar-fa-mouse-pointer:before{content:"\f245"}.phpdebugbar-fa-i-cursor:before{content:"\f246"}.phpdebugbar-fa-object-group:before{content:"\f247"}.phpdebugbar-fa-object-ungroup:before{content:"\f248"}.phpdebugbar-fa-sticky-note:before{content:"\f249"}.phpdebugbar-fa-sticky-note-o:before{content:"\f24a"}.phpdebugbar-fa-cc-jcb:before{content:"\f24b"}.phpdebugbar-fa-cc-diners-club:before{content:"\f24c"}.phpdebugbar-fa-clone:before{content:"\f24d"}.phpdebugbar-fa-balance-scale:before{content:"\f24e"}.phpdebugbar-fa-hourglass-o:before{content:"\f250"}.phpdebugbar-fa-hourglass-1:before,.phpdebugbar-fa-hourglass-start:before{content:"\f251"}.phpdebugbar-fa-hourglass-2:before,.phpdebugbar-fa-hourglass-half:before{content:"\f252"}.phpdebugbar-fa-hourglass-3:before,.phpdebugbar-fa-hourglass-end:before{content:"\f253"}.phpdebugbar-fa-hourglass:before{content:"\f254"}.phpdebugbar-fa-hand-grab-o:before,.phpdebugbar-fa-hand-rock-o:before{content:"\f255"}.phpdebugbar-fa-hand-stop-o:before,.phpdebugbar-fa-hand-paper-o:before{content:"\f256"}.phpdebugbar-fa-hand-scissors-o:before{content:"\f257"}.phpdebugbar-fa-hand-lizard-o:before{content:"\f258"}.phpdebugbar-fa-hand-spock-o:before{content:"\f259"}.phpdebugbar-fa-hand-pointer-o:before{content:"\f25a"}.phpdebugbar-fa-hand-peace-o:before{content:"\f25b"}.phpdebugbar-fa-trademark:before{content:"\f25c"}.phpdebugbar-fa-registered:before{content:"\f25d"}.phpdebugbar-fa-creative-commons:before{content:"\f25e"}.phpdebugbar-fa-gg:before{content:"\f260"}.phpdebugbar-fa-gg-circle:before{content:"\f261"}.phpdebugbar-fa-tripadvisor:before{content:"\f262"}.phpdebugbar-fa-odnoklassniki:before{content:"\f263"}.phpdebugbar-fa-odnoklassniki-square:before{content:"\f264"}.phpdebugbar-fa-get-pocket:before{content:"\f265"}.phpdebugbar-fa-wikipedia-w:before{content:"\f266"}.phpdebugbar-fa-safari:before{content:"\f267"}.phpdebugbar-fa-chrome:before{content:"\f268"}.phpdebugbar-fa-firefox:before{content:"\f269"}.phpdebugbar-fa-opera:before{content:"\f26a"}.phpdebugbar-fa-internet-explorer:before{content:"\f26b"}.phpdebugbar-fa-tv:before,.phpdebugbar-fa-television:before{content:"\f26c"}.phpdebugbar-fa-contao:before{content:"\f26d"}.phpdebugbar-fa-500px:before{content:"\f26e"}.phpdebugbar-fa-amazon:before{content:"\f270"}.phpdebugbar-fa-calendar-plus-o:before{content:"\f271"}.phpdebugbar-fa-calendar-minus-o:before{content:"\f272"}.phpdebugbar-fa-calendar-times-o:before{content:"\f273"}.phpdebugbar-fa-calendar-check-o:before{content:"\f274"}.phpdebugbar-fa-industry:before{content:"\f275"}.phpdebugbar-fa-map-pin:before{content:"\f276"}.phpdebugbar-fa-map-signs:before{content:"\f277"}.phpdebugbar-fa-map-o:before{content:"\f278"}.phpdebugbar-fa-map:before{content:"\f279"}.phpdebugbar-fa-commenting:before{content:"\f27a"}.phpdebugbar-fa-commenting-o:before{content:"\f27b"}.phpdebugbar-fa-houzz:before{content:"\f27c"}.phpdebugbar-fa-vimeo:before{content:"\f27d"}.phpdebugbar-fa-black-tie:before{content:"\f27e"}.phpdebugbar-fa-fonticons:before{content:"\f280"}.phpdebugbar-fa-reddit-alien:before{content:"\f281"}.phpdebugbar-fa-edge:before{content:"\f282"}.phpdebugbar-fa-credit-card-alt:before{content:"\f283"}.phpdebugbar-fa-codiepie:before{content:"\f284"}.phpdebugbar-fa-modx:before{content:"\f285"}.phpdebugbar-fa-fort-awesome:before{content:"\f286"}.phpdebugbar-fa-usb:before{content:"\f287"}.phpdebugbar-fa-product-hunt:before{content:"\f288"}.phpdebugbar-fa-mixcloud:before{content:"\f289"}.phpdebugbar-fa-scribd:before{content:"\f28a"}.phpdebugbar-fa-pause-circle:before{content:"\f28b"}.phpdebugbar-fa-pause-circle-o:before{content:"\f28c"}.phpdebugbar-fa-stop-circle:before{content:"\f28d"}.phpdebugbar-fa-stop-circle-o:before{content:"\f28e"}.phpdebugbar-fa-shopping-bag:before{content:"\f290"}.phpdebugbar-fa-shopping-basket:before{content:"\f291"}.phpdebugbar-fa-hashtag:before{content:"\f292"}.phpdebugbar-fa-bluetooth:before{content:"\f293"}.phpdebugbar-fa-bluetooth-b:before{content:"\f294"}.phpdebugbar-fa-percent:before{content:"\f295"}.phpdebugbar-fa-gitlab:before{content:"\f296"}.phpdebugbar-fa-wpbeginner:before{content:"\f297"}.phpdebugbar-fa-wpforms:before{content:"\f298"}.phpdebugbar-fa-envira:before{content:"\f299"}.phpdebugbar-fa-universal-access:before{content:"\f29a"}.phpdebugbar-fa-wheelchair-alt:before{content:"\f29b"}.phpdebugbar-fa-question-circle-o:before{content:"\f29c"}.phpdebugbar-fa-blind:before{content:"\f29d"}.phpdebugbar-fa-audio-description:before{content:"\f29e"}.phpdebugbar-fa-volume-control-phone:before{content:"\f2a0"}.phpdebugbar-fa-braille:before{content:"\f2a1"}.phpdebugbar-fa-assistive-listening-systems:before{content:"\f2a2"}.phpdebugbar-fa-asl-interpreting:before,.phpdebugbar-fa-american-sign-language-interpreting:before{content:"\f2a3"}.phpdebugbar-fa-deafness:before,.phpdebugbar-fa-hard-of-hearing:before,.phpdebugbar-fa-deaf:before{content:"\f2a4"}.phpdebugbar-fa-glide:before{content:"\f2a5"}.phpdebugbar-fa-glide-g:before{content:"\f2a6"}.phpdebugbar-fa-signing:before,.phpdebugbar-fa-sign-language:before{content:"\f2a7"}.phpdebugbar-fa-low-vision:before{content:"\f2a8"}.phpdebugbar-fa-viadeo:before{content:"\f2a9"}.phpdebugbar-fa-viadeo-square:before{content:"\f2aa"}.phpdebugbar-fa-snapchat:before{content:"\f2ab"}.phpdebugbar-fa-snapchat-ghost:before{content:"\f2ac"}.phpdebugbar-fa-snapchat-square:before{content:"\f2ad"}.phpdebugbar-fa-pied-piper:before{content:"\f2ae"}.phpdebugbar-fa-first-order:before{content:"\f2b0"}.phpdebugbar-fa-yoast:before{content:"\f2b1"}.phpdebugbar-fa-themeisle:before{content:"\f2b2"}.phpdebugbar-fa-google-plus-circle:before,.phpdebugbar-fa-google-plus-official:before{content:"\f2b3"}.phpdebugbar-fa-fa:before,.phpdebugbar-fa-font-awesome:before{content:"\f2b4"}.phpdebugbar-fa-handshake-o:before{content:"\f2b5"}.phpdebugbar-fa-envelope-open:before{content:"\f2b6"}.phpdebugbar-fa-envelope-open-o:before{content:"\f2b7"}.phpdebugbar-fa-linode:before{content:"\f2b8"}.phpdebugbar-fa-address-book:before{content:"\f2b9"}.phpdebugbar-fa-address-book-o:before{content:"\f2ba"}.phpdebugbar-fa-vcard:before,.phpdebugbar-fa-address-card:before{content:"\f2bb"}.phpdebugbar-fa-vcard-o:before,.phpdebugbar-fa-address-card-o:before{content:"\f2bc"}.phpdebugbar-fa-user-circle:before{content:"\f2bd"}.phpdebugbar-fa-user-circle-o:before{content:"\f2be"}.phpdebugbar-fa-user-o:before{content:"\f2c0"}.phpdebugbar-fa-id-badge:before{content:"\f2c1"}.phpdebugbar-fa-drivers-license:before,.phpdebugbar-fa-id-card:before{content:"\f2c2"}.phpdebugbar-fa-drivers-license-o:before,.phpdebugbar-fa-id-card-o:before{content:"\f2c3"}.phpdebugbar-fa-quora:before{content:"\f2c4"}.phpdebugbar-fa-free-code-camp:before{content:"\f2c5"}.phpdebugbar-fa-telegram:before{content:"\f2c6"}.phpdebugbar-fa-thermometer-4:before,.phpdebugbar-fa-thermometer:before,.phpdebugbar-fa-thermometer-full:before{content:"\f2c7"}.phpdebugbar-fa-thermometer-3:before,.phpdebugbar-fa-thermometer-three-quarters:before{content:"\f2c8"}.phpdebugbar-fa-thermometer-2:before,.phpdebugbar-fa-thermometer-half:before{content:"\f2c9"}.phpdebugbar-fa-thermometer-1:before,.phpdebugbar-fa-thermometer-quarter:before{content:"\f2ca"}.phpdebugbar-fa-thermometer-0:before,.phpdebugbar-fa-thermometer-empty:before{content:"\f2cb"}.phpdebugbar-fa-shower:before{content:"\f2cc"}.phpdebugbar-fa-bathtub:before,.phpdebugbar-fa-s15:before,.phpdebugbar-fa-bath:before{content:"\f2cd"}.phpdebugbar-fa-podcast:before{content:"\f2ce"}.phpdebugbar-fa-window-maximize:before{content:"\f2d0"}.phpdebugbar-fa-window-minimize:before{content:"\f2d1"}.phpdebugbar-fa-window-restore:before{content:"\f2d2"}.phpdebugbar-fa-times-rectangle:before,.phpdebugbar-fa-window-close:before{content:"\f2d3"}.phpdebugbar-fa-times-rectangle-o:before,.phpdebugbar-fa-window-close-o:before{content:"\f2d4"}.phpdebugbar-fa-bandcamp:before{content:"\f2d5"}.phpdebugbar-fa-grav:before{content:"\f2d6"}.phpdebugbar-fa-etsy:before{content:"\f2d7"}.phpdebugbar-fa-imdb:before{content:"\f2d8"}.phpdebugbar-fa-ravelry:before{content:"\f2d9"}.phpdebugbar-fa-eercast:before{content:"\f2da"}.phpdebugbar-fa-microchip:before{content:"\f2db"}.phpdebugbar-fa-snowflake-o:before{content:"\f2dc"}.phpdebugbar-fa-superpowers:before{content:"\f2dd"}.phpdebugbar-fa-wpexplorer:before{content:"\f2de"}.phpdebugbar-fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} diff --git a/htdocs/includes/maximebf/debugbar/src/DebugBar/Resources/vendor/font-awesome/fonts/FontAwesome.otf b/htdocs/includes/maximebf/debugbar/src/DebugBar/Resources/vendor/font-awesome/fonts/FontAwesome.otf new file mode 100644 index 00000000000..401ec0f36e4 Binary files /dev/null and b/htdocs/includes/maximebf/debugbar/src/DebugBar/Resources/vendor/font-awesome/fonts/FontAwesome.otf differ diff --git a/htdocs/includes/maximebf/debugbar/src/DebugBar/Resources/vendor/font-awesome/fonts/fontawesome-webfont.eot b/htdocs/includes/maximebf/debugbar/src/DebugBar/Resources/vendor/font-awesome/fonts/fontawesome-webfont.eot new file mode 100644 index 00000000000..e9f60ca953f Binary files /dev/null and b/htdocs/includes/maximebf/debugbar/src/DebugBar/Resources/vendor/font-awesome/fonts/fontawesome-webfont.eot differ diff --git a/htdocs/includes/maximebf/debugbar/src/DebugBar/Resources/vendor/font-awesome/fonts/fontawesome-webfont.svg b/htdocs/includes/maximebf/debugbar/src/DebugBar/Resources/vendor/font-awesome/fonts/fontawesome-webfont.svg new file mode 100644 index 00000000000..855c845e538 --- /dev/null +++ b/htdocs/includes/maximebf/debugbar/src/DebugBar/Resources/vendor/font-awesome/fonts/fontawesome-webfont.svg @@ -0,0 +1,2671 @@ + + + diff --git a/htdocs/includes/maximebf/debugbar/src/DebugBar/Resources/vendor/font-awesome/fonts/fontawesome-webfont.ttf b/htdocs/includes/maximebf/debugbar/src/DebugBar/Resources/vendor/font-awesome/fonts/fontawesome-webfont.ttf new file mode 100644 index 00000000000..35acda2fa11 Binary files /dev/null and b/htdocs/includes/maximebf/debugbar/src/DebugBar/Resources/vendor/font-awesome/fonts/fontawesome-webfont.ttf differ diff --git a/htdocs/includes/maximebf/debugbar/src/DebugBar/Resources/vendor/font-awesome/fonts/fontawesome-webfont.woff b/htdocs/includes/maximebf/debugbar/src/DebugBar/Resources/vendor/font-awesome/fonts/fontawesome-webfont.woff new file mode 100644 index 00000000000..400014a4b06 Binary files /dev/null and b/htdocs/includes/maximebf/debugbar/src/DebugBar/Resources/vendor/font-awesome/fonts/fontawesome-webfont.woff differ diff --git a/htdocs/includes/maximebf/debugbar/src/DebugBar/Resources/vendor/font-awesome/fonts/fontawesome-webfont.woff2 b/htdocs/includes/maximebf/debugbar/src/DebugBar/Resources/vendor/font-awesome/fonts/fontawesome-webfont.woff2 new file mode 100644 index 00000000000..4d13fc60404 Binary files /dev/null and b/htdocs/includes/maximebf/debugbar/src/DebugBar/Resources/vendor/font-awesome/fonts/fontawesome-webfont.woff2 differ diff --git a/htdocs/includes/maximebf/debugbar/src/DebugBar/Resources/vendor/highlightjs/highlight.pack.js b/htdocs/includes/maximebf/debugbar/src/DebugBar/Resources/vendor/highlightjs/highlight.pack.js new file mode 100644 index 00000000000..cf7215a66e1 --- /dev/null +++ b/htdocs/includes/maximebf/debugbar/src/DebugBar/Resources/vendor/highlightjs/highlight.pack.js @@ -0,0 +1 @@ +var hljs=new function(){function k(v){return v.replace(/&/gm,"&").replace(//gm,">")}function t(v){return v.nodeName.toLowerCase()}function i(w,x){var v=w&&w.exec(x);return v&&v.index==0}function d(v){return Array.prototype.map.call(v.childNodes,function(w){if(w.nodeType==3){return b.useBR?w.nodeValue.replace(/\n/g,""):w.nodeValue}if(t(w)=="br"){return"\n"}return d(w)}).join("")}function r(w){var v=(w.className+" "+(w.parentNode?w.parentNode.className:"")).split(/\s+/);v=v.map(function(x){return x.replace(/^language-/,"")});return v.filter(function(x){return j(x)||x=="no-highlight"})[0]}function o(x,y){var v={};for(var w in x){v[w]=x[w]}if(y){for(var w in y){v[w]=y[w]}}return v}function u(x){var v=[];(function w(y,z){for(var A=y.firstChild;A;A=A.nextSibling){if(A.nodeType==3){z+=A.nodeValue.length}else{if(t(A)=="br"){z+=1}else{if(A.nodeType==1){v.push({event:"start",offset:z,node:A});z=w(A,z);v.push({event:"stop",offset:z,node:A})}}}}return z})(x,0);return v}function q(w,y,C){var x=0;var F="";var z=[];function B(){if(!w.length||!y.length){return w.length?w:y}if(w[0].offset!=y[0].offset){return(w[0].offset