diff --git a/.gitignore b/.gitignore index c0863c7..9369d6e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -# WizdamDebugToolbar .gitignore +# DebugToolbar .gitignore # Dependencies vendor/ diff --git a/README.md b/README.md index 63d950b..6e2ab67 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,7 @@ composer require wizdam/debug-toolbar:@dev ### Inisialisasi Dasar ```php -use WizdamDebugToolbar\DebugToolbar; +use DebugToolbar\DebugToolbar; $config = require 'config/wizdamtoolbar.php'; $toolbar = new DebugToolbar($config); @@ -63,7 +63,7 @@ Cocok untuk aplikasi PHP tanpa *middleware stack*. ```php define('WIZDAM_DEBUG', true); // Aktifkan hanya di development! -$middleware = new \WizdamDebugToolbar\Middleware\DebugToolbarMiddleware($toolbar); +$middleware = new \DebugToolbar\Middleware\DebugToolbarMiddleware($toolbar); $middleware->startBuffer(); // ... logika aplikasi Anda berjalan normal ... @@ -76,8 +76,8 @@ $middleware->endBuffer(); // Toolbar otomatis di-inject di akhir HTML Gunakan `AdodbDatabaseAdapter` untuk mencatat query ADODB: ```php -use WizdamDebugToolbar\Adapters\AdodbDatabaseAdapter; -use WizdamDebugToolbar\Collectors\DatabaseCollector; +use DebugToolbar\Adapters\AdodbDatabaseAdapter; +use DebugToolbar\Collectors\DatabaseCollector; $dbAdapter = new AdodbDatabaseAdapter(); $toolbar->addCollector(new DatabaseCollector($dbAdapter)); @@ -88,7 +88,7 @@ $toolbar->addCollector(new DatabaseCollector($dbAdapter)); Untuk aplikasi modern yang sudah memiliki *middleware stack*: ```php -$app->add(new \WizdamDebugToolbar\Middleware\DebugToolbarMiddleware($toolbar)); +$app->add(new \DebugToolbar\Middleware\DebugToolbarMiddleware($toolbar)); ``` --- @@ -132,7 +132,7 @@ return [ Implementasikan `CollectorInterface`: ```php -use WizdamDebugToolbar\Interfaces\CollectorInterface; +use DebugToolbar\Interfaces\CollectorInterface; class CacheCollector implements CollectorInterface { diff --git a/SECURITY.md b/SECURITY.md index 584b49d..4933615 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -20,7 +20,7 @@ This person will coordinate the fix and release process, involving the following - Confirm the problem and determine the affected versions. - Audit code to find any potential similar problems. - Prepare fixes for all releases still under maintenance. These fixes will be released as fast as possible. -- Publish security advisories at https://github.com/mokesano/WizdamDebugToolbar/security/advisories +- Publish security advisories at https://github.com/mokesano/DebugToolbar/security/advisories ## Comments on this Policy diff --git a/composer.json b/composer.json index 31c111f..e257b7a 100644 --- a/composer.json +++ b/composer.json @@ -1,5 +1,5 @@ { - "name": "wizdamdebug/debug-toolbar", + "name": "wizdam/debug-toolbar", "description": "Standalone Debug Toolbar based on CodeIgniter4 DebugBar - Framework Agnostic", "type": "library", "license": "MIT", @@ -10,8 +10,8 @@ "debugbar", "debug", "toolbar", - "wizdam", - "ojs", + "sciecola", + "lumera", "adodb", "php84" ], @@ -35,17 +35,17 @@ }, "autoload": { "psr-4": { - "WizdamDebugToolbar\\": "src/" + "DebugToolbar\\": "src/" } }, "autoload-dev": { "psr-4": { - "WizdamDebugToolbar\\Tests\\": "tests/" + "DebugToolbar\\Tests\\": "tests/" } }, "extra": { "wizdam": { - "compatible-with": "OJS 2.4.8.5+", + "compatible-with": "Lumera and legacy systems running PHP 8.0+", "php-versions": ["8.0", "8.1", "8.2", "8.3", "8.4"], "based-on": "CodeIgniter4 4.7.2 DebugBar (MIT License)" } diff --git a/composer.lock b/composer.lock index 9dd99ee..e3e5f8c 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "853cb7f8b7002b1a584a90ec75c1a82a", + "content-hash": "0502f1b9760d3196fa82dc45a50106a5", "packages": [], "packages-dev": [ { @@ -245,16 +245,16 @@ }, { "name": "phpunit/php-code-coverage", - "version": "12.5.6", + "version": "12.5.7", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "876099a072646c7745f673d7aeab5382c4439691" + "reference": "186dab580576598076de6818596d12b61801880e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/876099a072646c7745f673d7aeab5382c4439691", - "reference": "876099a072646c7745f673d7aeab5382c4439691", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/186dab580576598076de6818596d12b61801880e", + "reference": "186dab580576598076de6818596d12b61801880e", "shasum": "" }, "require": { @@ -265,13 +265,13 @@ "php": ">=8.3", "phpunit/php-text-template": "^5.0", "sebastian/complexity": "^5.0", - "sebastian/environment": "^8.0.3", - "sebastian/lines-of-code": "^4.0", + "sebastian/environment": "^8.1.2", + "sebastian/lines-of-code": "^4.0.1", "sebastian/version": "^6.0", "theseer/tokenizer": "^2.0.1" }, "require-dev": { - "phpunit/phpunit": "^12.5.1" + "phpunit/phpunit": "^12.5.28" }, "suggest": { "ext-pcov": "PHP extension that provides line coverage", @@ -309,7 +309,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/12.5.6" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/12.5.7" }, "funding": [ { @@ -329,7 +329,7 @@ "type": "tidelift" } ], - "time": "2026-04-15T08:23:17+00:00" + "time": "2026-06-01T13:24:19+00:00" }, { "name": "phpunit/php-file-iterator", @@ -590,16 +590,16 @@ }, { "name": "phpunit/phpunit", - "version": "12.5.27", + "version": "12.5.28", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "f37c01edaf3a0cd820331462506af93f1495696e" + "reference": "5895d05f5bf421ed230fbd76e1277e4b8955def4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f37c01edaf3a0cd820331462506af93f1495696e", - "reference": "f37c01edaf3a0cd820331462506af93f1495696e", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/5895d05f5bf421ed230fbd76e1277e4b8955def4", + "reference": "5895d05f5bf421ed230fbd76e1277e4b8955def4", "shasum": "" }, "require": { @@ -668,7 +668,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/12.5.27" + "source": "https://github.com/sebastianbergmann/phpunit/tree/12.5.28" }, "funding": [ { @@ -676,7 +676,7 @@ "type": "other" } ], - "time": "2026-05-25T15:35:34+00:00" + "time": "2026-05-27T14:01:10+00:00" }, { "name": "sebastian/cli-parser", @@ -1132,26 +1132,26 @@ }, { "name": "sebastian/global-state", - "version": "8.0.2", + "version": "8.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "ef1377171613d09edd25b7816f05be8313f9115d" + "reference": "b164d3274d6537ab462591c5755f76a8f5b1aae9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/ef1377171613d09edd25b7816f05be8313f9115d", - "reference": "ef1377171613d09edd25b7816f05be8313f9115d", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/b164d3274d6537ab462591c5755f76a8f5b1aae9", + "reference": "b164d3274d6537ab462591c5755f76a8f5b1aae9", "shasum": "" }, "require": { "php": ">=8.3", "sebastian/object-reflector": "^5.0", - "sebastian/recursion-context": "^7.0" + "sebastian/recursion-context": "^7.0.1" }, "require-dev": { "ext-dom": "*", - "phpunit/phpunit": "^12.0" + "phpunit/phpunit": "^12.5.28" }, "type": "library", "extra": { @@ -1182,7 +1182,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", "security": "https://github.com/sebastianbergmann/global-state/security/policy", - "source": "https://github.com/sebastianbergmann/global-state/tree/8.0.2" + "source": "https://github.com/sebastianbergmann/global-state/tree/8.0.3" }, "funding": [ { @@ -1202,7 +1202,7 @@ "type": "tidelift" } ], - "time": "2025-08-29T11:29:25+00:00" + "time": "2026-06-01T15:10:33+00:00" }, { "name": "sebastian/lines-of-code", diff --git a/config/wizdamtoolbar.php b/config/wizdamtoolbar.php index aa6b21a..e73acae 100644 --- a/config/wizdamtoolbar.php +++ b/config/wizdamtoolbar.php @@ -10,15 +10,15 @@ * Perubahan dari versi CI4: * - `extends BaseConfig` dihapus — file ini mengembalikan array PHP biasa * - `SYSTEMPATH` diganti dengan path relatif berbasis __DIR__ - * - Namespace CI4 collector diganti dengan namespace WizdamDebugToolbar + * - Namespace CI4 collector diganti dengan namespace DebugToolbar * - Ditambahkan: `baseURL`, `historyPath`, `environment`, `startTime` * * Cara penggunaan: * $config = require 'path/to/config/wizdamtoolbar.php'; - * $debugBar = new \WizdamDebugToolbar\DebugToolbar($config); + * $debugBar = new \DebugToolbar\DebugToolbar($config); * * Override per-instalasi: - * $debugBar = new \WizdamDebugToolbar\DebugToolbar([ + * $debugBar = new \DebugToolbar\DebugToolbar([ * 'baseURL' => 'https://ojs.example.com', * 'historyPath' => '/var/www/ojs/cache/debugbar/', * 'maxHistory' => 10, @@ -33,13 +33,13 @@ // Hapus atau komentari collector yang tidak dibutuhkan. // Urutan menentukan urutan tab di toolbar. 'collectors' => [ - \WizdamDebugToolbar\Collectors\Timers::class, - \WizdamDebugToolbar\Collectors\Database::class, - \WizdamDebugToolbar\Collectors\Logs::class, - \WizdamDebugToolbar\Collectors\Views::class, - \WizdamDebugToolbar\Collectors\Files::class, - \WizdamDebugToolbar\Collectors\Routes::class, - \WizdamDebugToolbar\Collectors\Events::class, + \DebugToolbar\Collectors\Timers::class, + \DebugToolbar\Collectors\Database::class, + \DebugToolbar\Collectors\Logs::class, + \DebugToolbar\Collectors\Views::class, + \DebugToolbar\Collectors\Files::class, + \DebugToolbar\Collectors\Routes::class, + \DebugToolbar\Collectors\Events::class, ], // --------------------------------------------------------------- diff --git a/phpunit.dist.xml b/phpunit.dist.xml index 9d9f0f9..dfc93a9 100644 --- a/phpunit.dist.xml +++ b/phpunit.dist.xml @@ -10,7 +10,7 @@ failOnWarning="true" > - + tests diff --git a/src/Adapters/AdodbDatabaseAdapter.php b/src/Adapters/AdodbDatabaseAdapter.php index a10b652..b21dd58 100644 --- a/src/Adapters/AdodbDatabaseAdapter.php +++ b/src/Adapters/AdodbDatabaseAdapter.php @@ -2,9 +2,9 @@ declare(strict_types=1); -namespace WizdamDebugToolbar\Adapters; +namespace DebugToolbar\Adapters; -use WizdamDebugToolbar\Interfaces\DatabaseAdapterInterface; +use DebugToolbar\Interfaces\DatabaseAdapterInterface; /** * AdodbDatabaseAdapter diff --git a/src/Adapters/WizdamRouterAdapter.php b/src/Adapters/WizdamRouterAdapter.php index 6cb7bb8..1a76a88 100644 --- a/src/Adapters/WizdamRouterAdapter.php +++ b/src/Adapters/WizdamRouterAdapter.php @@ -2,9 +2,9 @@ declare(strict_types=1); -namespace WizdamDebugToolbar\Adapters; +namespace DebugToolbar\Adapters; -use WizdamDebugToolbar\Interfaces\RouterInterface; +use DebugToolbar\Interfaces\RouterInterface; /** * WizdamRouterAdapter diff --git a/src/Collectors/BaseCollector.php b/src/Collectors/BaseCollector.php index ad7f117..7258de7 100644 --- a/src/Collectors/BaseCollector.php +++ b/src/Collectors/BaseCollector.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * This file is part of WizdamDebugToolbar library. + * This file is part of DebugToolbar library. * * (c) Wizdam Frontedge * @@ -19,7 +19,7 @@ * --- */ -namespace WizdamDebugToolbar\Collectors; +namespace DebugToolbar\Collectors; /** * Base Toolbar collector diff --git a/src/Collectors/Config.php b/src/Collectors/Config.php index d1d7a6d..b818ef8 100644 --- a/src/Collectors/Config.php +++ b/src/Collectors/Config.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * This file is part of WizdamDebugToolbar library. + * This file is part of DebugToolbar library. * * (c) Wizdam Frontedge * @@ -19,7 +19,7 @@ * --- */ -namespace WizdamDebugToolbar\Collectors; +namespace DebugToolbar\Collectors; /** * Debug toolbar configuration diff --git a/src/Collectors/Database.php b/src/Collectors/Database.php index 438608e..d8e4131 100644 --- a/src/Collectors/Database.php +++ b/src/Collectors/Database.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * This file is part of WizdamDebugToolbar library. + * This file is part of DebugToolbar library. * * (c) Wizdam Frontedge * @@ -19,9 +19,9 @@ * --- */ -namespace WizdamDebugToolbar\Collectors; +namespace DebugToolbar\Collectors; -use WizdamDebugToolbar\Interfaces\DatabaseAdapterInterface; +use DebugToolbar\Interfaces\DatabaseAdapterInterface; /** * Collector for the Database tab of the Debug Toolbar. diff --git a/src/Collectors/Events.php b/src/Collectors/Events.php index aa55a9c..4ced4db 100644 --- a/src/Collectors/Events.php +++ b/src/Collectors/Events.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * This file is part of WizdamDebugToolbar library. + * This file is part of DebugToolbar library. * * (c) Wizdam Frontedge * @@ -19,7 +19,7 @@ * --- */ -namespace WizdamDebugToolbar\Collectors; +namespace DebugToolbar\Collectors; /** * Events collector diff --git a/src/Collectors/Files.php b/src/Collectors/Files.php index c2f2321..f7d745e 100644 --- a/src/Collectors/Files.php +++ b/src/Collectors/Files.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * This file is part of WizdamDebugToolbar library. + * This file is part of DebugToolbar library. * * (c) Wizdam Frontedge * @@ -19,7 +19,7 @@ * --- */ -namespace WizdamDebugToolbar\Collectors; +namespace DebugToolbar\Collectors; /** * Files collector diff --git a/src/Collectors/History.php b/src/Collectors/History.php index b7fc034..2af6bb8 100644 --- a/src/Collectors/History.php +++ b/src/Collectors/History.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * This file is part of WizdamDebugToolbar library. + * This file is part of DebugToolbar library. * * (c) Wizdam Frontedge * @@ -19,7 +19,7 @@ * --- */ -namespace WizdamDebugToolbar\Collectors; +namespace DebugToolbar\Collectors; /** * History collector diff --git a/src/Collectors/Logs.php b/src/Collectors/Logs.php index f457add..9ed48e2 100644 --- a/src/Collectors/Logs.php +++ b/src/Collectors/Logs.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * This file is part of WizdamDebugToolbar library. + * This file is part of DebugToolbar library. * * (c) Wizdam Frontedge * @@ -19,7 +19,7 @@ * --- */ -namespace WizdamDebugToolbar\Collectors; +namespace DebugToolbar\Collectors; /** * Logs collector diff --git a/src/Collectors/Routes.php b/src/Collectors/Routes.php index 3184324..46bf21c 100644 --- a/src/Collectors/Routes.php +++ b/src/Collectors/Routes.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * This file is part of WizdamDebugToolbar library. + * This file is part of DebugToolbar library. * * (c) Wizdam Frontedge * @@ -19,9 +19,9 @@ * --- */ -namespace WizdamDebugToolbar\Collectors; +namespace DebugToolbar\Collectors; -use WizdamDebugToolbar\Interfaces\RouterInterface; +use DebugToolbar\Interfaces\RouterInterface; /** * Routes collector diff --git a/src/Collectors/Timers.php b/src/Collectors/Timers.php index fdb8db2..750cf63 100644 --- a/src/Collectors/Timers.php +++ b/src/Collectors/Timers.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * This file is part of WizdamDebugToolbar library. + * This file is part of DebugToolbar library. * * (c) Wizdam Frontedge * @@ -19,7 +19,7 @@ * --- */ -namespace WizdamDebugToolbar\Collectors; +namespace DebugToolbar\Collectors; /** * Timers collector diff --git a/src/Collectors/Views.php b/src/Collectors/Views.php index 2b8c293..8ebb2ec 100644 --- a/src/Collectors/Views.php +++ b/src/Collectors/Views.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * This file is part of WizdamDebugToolbar library. + * This file is part of DebugToolbar library. * * (c) Wizdam Frontedge * @@ -19,7 +19,7 @@ * --- */ -namespace WizdamDebugToolbar\Collectors; +namespace DebugToolbar\Collectors; /** * Views collector diff --git a/src/DebugToolbar.php b/src/DebugToolbar.php index 8251706..a109499 100644 --- a/src/DebugToolbar.php +++ b/src/DebugToolbar.php @@ -2,13 +2,13 @@ declare(strict_types=1); -namespace WizdamDebugToolbar; +namespace DebugToolbar; -use WizdamDebugToolbar\Collectors\Config; -use WizdamDebugToolbar\Collectors\History; +use DebugToolbar\Collectors\Config; +use DebugToolbar\Collectors\History; /** - * WizdamDebugToolbar DebugToolbar + * DebugToolbar DebugToolbar * * Diadaptasi dari CodeIgniter4 v4.7.2 system/Debug/Toolbar.php * Semua dependency CI4 (Services::, service(), WRITEPATH, site_url(), dll) @@ -20,7 +20,7 @@ class DebugToolbar protected array $config; - /** @var list<\WizdamDebugToolbar\Collectors\BaseCollector> */ + /** @var list<\DebugToolbar\Collectors\BaseCollector> */ protected array $collectors = []; public function __construct(array $config = []) @@ -30,7 +30,7 @@ public function __construct(array $config = []) foreach ($this->config['collectors'] as $collectorClass) { if (! class_exists($collectorClass)) { - error_log('WizdamDebugToolbar: Collector tidak ditemukan (' . $collectorClass . ').'); + error_log('DebugToolbar: Collector tidak ditemukan (' . $collectorClass . ').'); continue; } $this->collectors[] = new $collectorClass(); diff --git a/src/Interfaces/CollectorInterface.php b/src/Interfaces/CollectorInterface.php index d1b1e0e..13a33e1 100644 --- a/src/Interfaces/CollectorInterface.php +++ b/src/Interfaces/CollectorInterface.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace WizdamDebugToolbar\Interfaces; +namespace DebugToolbar\Interfaces; /** * CollectorInterface diff --git a/src/Interfaces/DatabaseAdapterInterface.php b/src/Interfaces/DatabaseAdapterInterface.php index c86e7ba..21672b4 100644 --- a/src/Interfaces/DatabaseAdapterInterface.php +++ b/src/Interfaces/DatabaseAdapterInterface.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace WizdamDebugToolbar\Interfaces; +namespace DebugToolbar\Interfaces; /** * DatabaseAdapterInterface diff --git a/src/Interfaces/RouterInterface.php b/src/Interfaces/RouterInterface.php index f6b281c..8f81bb3 100644 --- a/src/Interfaces/RouterInterface.php +++ b/src/Interfaces/RouterInterface.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace WizdamDebugToolbar\Interfaces; +namespace DebugToolbar\Interfaces; /** * RouterInterface diff --git a/src/Interfaces/TemplateEngineInterface.php b/src/Interfaces/TemplateEngineInterface.php index 729c3e0..6efc5f8 100644 --- a/src/Interfaces/TemplateEngineInterface.php +++ b/src/Interfaces/TemplateEngineInterface.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace WizdamDebugToolbar\Interfaces; +namespace DebugToolbar\Interfaces; /** * TemplateEngineInterface diff --git a/src/Middleware/DebugToolbarMiddleware.php b/src/Middleware/DebugToolbarMiddleware.php index e892428..37979b7 100644 --- a/src/Middleware/DebugToolbarMiddleware.php +++ b/src/Middleware/DebugToolbarMiddleware.php @@ -2,9 +2,9 @@ declare(strict_types=1); -namespace WizdamDebugToolbar\Middleware; +namespace DebugToolbar\Middleware; -use WizdamDebugToolbar\DebugToolbar; +use DebugToolbar\DebugToolbar; /** * DebugToolbarMiddleware @@ -17,7 +17,7 @@ * MODE 1 — Output Buffering (untuk OJS / aplikasi tanpa PSR-15) * --------------------------------------------------------------- * // Di bootstrap OJS (mis: index.php atau pkp-lib/classes/core/PKPApplication.inc.php) - * use WizdamDebugToolbar\Middleware\DebugToolbarMiddleware; + * use DebugToolbar\Middleware\DebugToolbarMiddleware; * * $middleware = new DebugToolbarMiddleware($debugBar); * $middleware->startBuffer(); diff --git a/views/_config.tpl b/views/_config.tpl index bb2d21b..90f188f 100644 --- a/views/_config.tpl +++ b/views/_config.tpl @@ -11,8 +11,8 @@ - - + + diff --git a/views/_logs.tpl b/views/_logs.tpl index ecf0d26..19a8dbd 100644 --- a/views/_logs.tpl +++ b/views/_logs.tpl @@ -3,7 +3,7 @@ ?>

Nothing was logged. If you were expecting logged items, call - WizdamDebugToolbar\Collectors\Logs::addLog($level, $message) + DebugToolbar\Collectors\Logs::addLog($level, $message) from your application code.

WizdamDebugToolbar Version:DebugToolbar Version:
PHP Version:
diff --git a/views/toolbar.tpl.php b/views/toolbar.tpl.php index bb9e44b..e9689e0 100644 --- a/views/toolbar.tpl.php +++ b/views/toolbar.tpl.php @@ -1,6 +1,6 @@