diff --git a/.env.example b/.env.example index 53d48bf3..61df84b1 100644 --- a/.env.example +++ b/.env.example @@ -5,6 +5,7 @@ APP_DEBUG=true APP_URL=http://localhost LOG_CHANNEL=stack +SCOUT_DRIVER=tntsearch DB_CONNECTION=mysql DB_HOST=127.0.0.1 @@ -44,3 +45,6 @@ PUSHER_APP_CLUSTER=mt1 MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" + +PASSPORT_CLIENT_ID= +PASSPORT_CLIENT_SECRET= diff --git a/.phpstorm.meta.php b/.phpstorm.meta.php new file mode 100644 index 00000000..2a5a88f7 --- /dev/null +++ b/.phpstorm.meta.php @@ -0,0 +1,1317 @@ + + * @see https://github.com/barryvdh/laravel-ide-helper + */ + override(new \Illuminate\Contracts\Container\Container, map([ + '' => '@', + 'Asm89\Stack\CorsService' => \Asm89\Stack\CorsService::class, + 'Facade\IgnitionContracts\SolutionProviderRepository' => \Facade\Ignition\SolutionProviders\SolutionProviderRepository::class, + 'Facade\Ignition\DumpRecorder\DumpRecorder' => \Facade\Ignition\DumpRecorder\DumpRecorder::class, + 'Facade\Ignition\ErrorPage\Renderer' => \Facade\Ignition\ErrorPage\Renderer::class, + 'Facade\Ignition\IgnitionConfig' => \Facade\Ignition\IgnitionConfig::class, + 'Facade\Ignition\LogRecorder\LogRecorder' => \Facade\Ignition\LogRecorder\LogRecorder::class, + 'Facade\Ignition\QueryRecorder\QueryRecorder' => \Facade\Ignition\QueryRecorder\QueryRecorder::class, + 'Illuminate\Broadcasting\BroadcastManager' => \Illuminate\Broadcasting\BroadcastManager::class, + 'Illuminate\Bus\Dispatcher' => \Illuminate\Bus\Dispatcher::class, + 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, + 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, + 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, + 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, + 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\LogBroadcaster::class, + 'Illuminate\Contracts\Console\Kernel' => \App\Console\Kernel::class, + 'Illuminate\Contracts\Debug\ExceptionHandler' => \NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler::class, + 'Illuminate\Contracts\Http\Kernel' => \App\Http\Kernel::class, + 'Illuminate\Contracts\Pipeline\Hub' => \Illuminate\Pipeline\Hub::class, + 'Illuminate\Contracts\Queue\EntityResolver' => \Illuminate\Database\Eloquent\QueueEntityResolver::class, + 'Illuminate\Contracts\Routing\ResponseFactory' => \Illuminate\Routing\ResponseFactory::class, + 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, + 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, + 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, + 'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class, + 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, + 'Laravel\Scout\EngineManager' => \Laravel\Scout\EngineManager::class, + 'League\OAuth2\Server\AuthorizationServer' => \League\OAuth2\Server\AuthorizationServer::class, + 'League\OAuth2\Server\ResourceServer' => \League\OAuth2\Server\ResourceServer::class, + 'NunoMaduro\Collision\Contracts\Adapters\Phpunit\Listener' => \NunoMaduro\Collision\Adapters\Phpunit\Listener::class, + 'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class, + 'Psr\Http\Message\ResponseInterface' => \Nyholm\Psr7\Response::class, + 'Psr\Http\Message\ServerRequestInterface' => \Nyholm\Psr7\ServerRequest::class, + 'Whoops\Handler\HandlerInterface' => \Facade\Ignition\ErrorPage\IgnitionWhoopsHandler::class, + 'auth' => \Illuminate\Auth\AuthManager::class, + 'auth.driver' => \Illuminate\Auth\SessionGuard::class, + 'auth.password' => \Illuminate\Auth\Passwords\PasswordBrokerManager::class, + 'auth.password.broker' => \Illuminate\Auth\Passwords\PasswordBroker::class, + 'blade.compiler' => \Illuminate\View\Compilers\BladeCompiler::class, + 'cache' => \Illuminate\Cache\CacheManager::class, + 'cache.store' => \Illuminate\Cache\Repository::class, + 'command.auth.resets.clear' => \Illuminate\Auth\Console\ClearResetsCommand::class, + 'command.cache.clear' => \Illuminate\Cache\Console\ClearCommand::class, + 'command.cache.forget' => \Illuminate\Cache\Console\ForgetCommand::class, + 'command.cache.table' => \Illuminate\Cache\Console\CacheTableCommand::class, + 'command.channel.make' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, + 'command.clear-compiled' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, + 'command.config.cache' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, + 'command.config.clear' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'command.console.make' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, + 'command.controller.make' => \Illuminate\Routing\Console\ControllerMakeCommand::class, + 'command.db.wipe' => \Illuminate\Database\Console\WipeCommand::class, + 'command.down' => \Illuminate\Foundation\Console\DownCommand::class, + 'command.environment' => \Illuminate\Foundation\Console\EnvironmentCommand::class, + 'command.event.cache' => \Illuminate\Foundation\Console\EventCacheCommand::class, + 'command.event.clear' => \Illuminate\Foundation\Console\EventClearCommand::class, + 'command.event.generate' => \Illuminate\Foundation\Console\EventGenerateCommand::class, + 'command.event.list' => \Illuminate\Foundation\Console\EventListCommand::class, + 'command.event.make' => \Illuminate\Foundation\Console\EventMakeCommand::class, + 'command.exception.make' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, + 'command.factory.make' => \Illuminate\Database\Console\Factories\FactoryMakeCommand::class, + 'command.flare:test' => \Facade\Ignition\Commands\TestCommand::class, + 'command.ide-helper.eloquent' => \Barryvdh\LaravelIdeHelper\Console\EloquentCommand::class, + 'command.ide-helper.generate' => \Barryvdh\LaravelIdeHelper\Console\GeneratorCommand::class, + 'command.ide-helper.meta' => \Barryvdh\LaravelIdeHelper\Console\MetaCommand::class, + 'command.ide-helper.models' => \Barryvdh\LaravelIdeHelper\Console\ModelsCommand::class, + 'command.job.make' => \Illuminate\Foundation\Console\JobMakeCommand::class, + 'command.key.generate' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, + 'command.listener.make' => \Illuminate\Foundation\Console\ListenerMakeCommand::class, + 'command.mail.make' => \Illuminate\Foundation\Console\MailMakeCommand::class, + 'command.make:solution' => \Facade\Ignition\Commands\SolutionMakeCommand::class, + 'command.middleware.make' => \Illuminate\Routing\Console\MiddlewareMakeCommand::class, + 'command.migrate' => \Illuminate\Database\Console\Migrations\MigrateCommand::class, + 'command.migrate.fresh' => \Illuminate\Database\Console\Migrations\FreshCommand::class, + 'command.migrate.install' => \Illuminate\Database\Console\Migrations\InstallCommand::class, + 'command.migrate.make' => \Illuminate\Database\Console\Migrations\MigrateMakeCommand::class, + 'command.migrate.refresh' => \Illuminate\Database\Console\Migrations\RefreshCommand::class, + 'command.migrate.reset' => \Illuminate\Database\Console\Migrations\ResetCommand::class, + 'command.migrate.rollback' => \Illuminate\Database\Console\Migrations\RollbackCommand::class, + 'command.migrate.status' => \Illuminate\Database\Console\Migrations\StatusCommand::class, + 'command.model.make' => \Illuminate\Foundation\Console\ModelMakeCommand::class, + 'command.notification.make' => \Illuminate\Foundation\Console\NotificationMakeCommand::class, + 'command.notification.table' => \Illuminate\Notifications\Console\NotificationTableCommand::class, + 'command.observer.make' => \Illuminate\Foundation\Console\ObserverMakeCommand::class, + 'command.optimize' => \Illuminate\Foundation\Console\OptimizeCommand::class, + 'command.optimize.clear' => \Illuminate\Foundation\Console\OptimizeClearCommand::class, + 'command.package.discover' => \Illuminate\Foundation\Console\PackageDiscoverCommand::class, + 'command.policy.make' => \Illuminate\Foundation\Console\PolicyMakeCommand::class, + 'command.preset' => \Illuminate\Foundation\Console\PresetCommand::class, + 'command.provider.make' => \Illuminate\Foundation\Console\ProviderMakeCommand::class, + 'command.queue.failed' => \Illuminate\Queue\Console\ListFailedCommand::class, + 'command.queue.failed-table' => \Illuminate\Queue\Console\FailedTableCommand::class, + 'command.queue.flush' => \Illuminate\Queue\Console\FlushFailedCommand::class, + 'command.queue.forget' => \Illuminate\Queue\Console\ForgetFailedCommand::class, + 'command.queue.listen' => \Illuminate\Queue\Console\ListenCommand::class, + 'command.queue.restart' => \Illuminate\Queue\Console\RestartCommand::class, + 'command.queue.retry' => \Illuminate\Queue\Console\RetryCommand::class, + 'command.queue.table' => \Illuminate\Queue\Console\TableCommand::class, + 'command.queue.work' => \Illuminate\Queue\Console\WorkCommand::class, + 'command.request.make' => \Illuminate\Foundation\Console\RequestMakeCommand::class, + 'command.resource.make' => \Illuminate\Foundation\Console\ResourceMakeCommand::class, + 'command.route.cache' => \Illuminate\Foundation\Console\RouteCacheCommand::class, + 'command.route.clear' => \Illuminate\Foundation\Console\RouteClearCommand::class, + 'command.route.list' => \Illuminate\Foundation\Console\RouteListCommand::class, + 'command.rule.make' => \Illuminate\Foundation\Console\RuleMakeCommand::class, + 'command.seed' => \Illuminate\Database\Console\Seeds\SeedCommand::class, + 'command.seeder.make' => \Illuminate\Database\Console\Seeds\SeederMakeCommand::class, + 'command.serve' => \Illuminate\Foundation\Console\ServeCommand::class, + 'command.session.table' => \Illuminate\Session\Console\SessionTableCommand::class, + 'command.storage.link' => \Illuminate\Foundation\Console\StorageLinkCommand::class, + 'command.test.make' => \Illuminate\Foundation\Console\TestMakeCommand::class, + 'command.tinker' => \Laravel\Tinker\Console\TinkerCommand::class, + 'command.up' => \Illuminate\Foundation\Console\UpCommand::class, + 'command.vendor.publish' => \Illuminate\Foundation\Console\VendorPublishCommand::class, + 'command.view.cache' => \Illuminate\Foundation\Console\ViewCacheCommand::class, + 'command.view.clear' => \Illuminate\Foundation\Console\ViewClearCommand::class, + 'composer' => \Illuminate\Support\Composer::class, + 'cookie' => \Illuminate\Cookie\CookieJar::class, + 'db' => \Illuminate\Database\DatabaseManager::class, + 'db.connection' => \Illuminate\Database\MySqlConnection::class, + 'db.factory' => \Illuminate\Database\Connectors\ConnectionFactory::class, + 'encrypter' => \Illuminate\Encryption\Encrypter::class, + 'events' => \Illuminate\Events\Dispatcher::class, + 'files' => \Illuminate\Filesystem\Filesystem::class, + 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, + 'filesystem.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'flare.client' => \Facade\FlareClient\Flare::class, + 'flare.http' => \Facade\FlareClient\Http\Client::class, + 'flare.logger' => \Monolog\Logger::class, + 'hash' => \Illuminate\Hashing\HashManager::class, + 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, + 'image' => \Intervention\Image\ImageManager::class, + 'log' => \Illuminate\Log\LogManager::class, + 'mailer' => \Illuminate\Mail\Mailer::class, + 'memcached.connector' => \Illuminate\Cache\MemcachedConnector::class, + 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, + 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, + 'migrator' => \Illuminate\Database\Migrations\Migrator::class, + 'queue' => \Illuminate\Queue\QueueManager::class, + 'queue.connection' => \Illuminate\Queue\SyncQueue::class, + 'queue.failer' => \Illuminate\Queue\Failed\DatabaseFailedJobProvider::class, + 'queue.listener' => \Illuminate\Queue\Listener::class, + 'queue.worker' => \Illuminate\Queue\Worker::class, + 'redirect' => \Illuminate\Routing\Redirector::class, + 'redis' => \Illuminate\Redis\RedisManager::class, + 'router' => \Illuminate\Routing\Router::class, + 'session' => \Illuminate\Session\SessionManager::class, + 'session.store' => \Illuminate\Session\Store::class, + 'swift.mailer' => \Swift_Mailer::class, + 'swift.transport' => \Illuminate\Mail\TransportManager::class, + 'translation.loader' => \Illuminate\Translation\FileLoader::class, + 'translator' => \Illuminate\Translation\Translator::class, + 'url' => \Illuminate\Routing\UrlGenerator::class, + 'validation.presence' => \Illuminate\Validation\DatabasePresenceVerifier::class, + 'view' => \Illuminate\View\Factory::class, + 'view.engine.resolver' => \Illuminate\View\Engines\EngineResolver::class, + 'view.finder' => \Illuminate\View\FileViewFinder::class, + ])); + override(\Illuminate\Container\Container::makeWith(0), map([ + '' => '@', + 'Asm89\Stack\CorsService' => \Asm89\Stack\CorsService::class, + 'Facade\IgnitionContracts\SolutionProviderRepository' => \Facade\Ignition\SolutionProviders\SolutionProviderRepository::class, + 'Facade\Ignition\DumpRecorder\DumpRecorder' => \Facade\Ignition\DumpRecorder\DumpRecorder::class, + 'Facade\Ignition\ErrorPage\Renderer' => \Facade\Ignition\ErrorPage\Renderer::class, + 'Facade\Ignition\IgnitionConfig' => \Facade\Ignition\IgnitionConfig::class, + 'Facade\Ignition\LogRecorder\LogRecorder' => \Facade\Ignition\LogRecorder\LogRecorder::class, + 'Facade\Ignition\QueryRecorder\QueryRecorder' => \Facade\Ignition\QueryRecorder\QueryRecorder::class, + 'Illuminate\Broadcasting\BroadcastManager' => \Illuminate\Broadcasting\BroadcastManager::class, + 'Illuminate\Bus\Dispatcher' => \Illuminate\Bus\Dispatcher::class, + 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, + 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, + 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, + 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, + 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\LogBroadcaster::class, + 'Illuminate\Contracts\Console\Kernel' => \App\Console\Kernel::class, + 'Illuminate\Contracts\Debug\ExceptionHandler' => \NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler::class, + 'Illuminate\Contracts\Http\Kernel' => \App\Http\Kernel::class, + 'Illuminate\Contracts\Pipeline\Hub' => \Illuminate\Pipeline\Hub::class, + 'Illuminate\Contracts\Queue\EntityResolver' => \Illuminate\Database\Eloquent\QueueEntityResolver::class, + 'Illuminate\Contracts\Routing\ResponseFactory' => \Illuminate\Routing\ResponseFactory::class, + 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, + 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, + 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, + 'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class, + 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, + 'Laravel\Scout\EngineManager' => \Laravel\Scout\EngineManager::class, + 'League\OAuth2\Server\AuthorizationServer' => \League\OAuth2\Server\AuthorizationServer::class, + 'League\OAuth2\Server\ResourceServer' => \League\OAuth2\Server\ResourceServer::class, + 'NunoMaduro\Collision\Contracts\Adapters\Phpunit\Listener' => \NunoMaduro\Collision\Adapters\Phpunit\Listener::class, + 'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class, + 'Psr\Http\Message\ResponseInterface' => \Nyholm\Psr7\Response::class, + 'Psr\Http\Message\ServerRequestInterface' => \Nyholm\Psr7\ServerRequest::class, + 'Whoops\Handler\HandlerInterface' => \Facade\Ignition\ErrorPage\IgnitionWhoopsHandler::class, + 'auth' => \Illuminate\Auth\AuthManager::class, + 'auth.driver' => \Illuminate\Auth\SessionGuard::class, + 'auth.password' => \Illuminate\Auth\Passwords\PasswordBrokerManager::class, + 'auth.password.broker' => \Illuminate\Auth\Passwords\PasswordBroker::class, + 'blade.compiler' => \Illuminate\View\Compilers\BladeCompiler::class, + 'cache' => \Illuminate\Cache\CacheManager::class, + 'cache.store' => \Illuminate\Cache\Repository::class, + 'command.auth.resets.clear' => \Illuminate\Auth\Console\ClearResetsCommand::class, + 'command.cache.clear' => \Illuminate\Cache\Console\ClearCommand::class, + 'command.cache.forget' => \Illuminate\Cache\Console\ForgetCommand::class, + 'command.cache.table' => \Illuminate\Cache\Console\CacheTableCommand::class, + 'command.channel.make' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, + 'command.clear-compiled' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, + 'command.config.cache' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, + 'command.config.clear' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'command.console.make' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, + 'command.controller.make' => \Illuminate\Routing\Console\ControllerMakeCommand::class, + 'command.db.wipe' => \Illuminate\Database\Console\WipeCommand::class, + 'command.down' => \Illuminate\Foundation\Console\DownCommand::class, + 'command.environment' => \Illuminate\Foundation\Console\EnvironmentCommand::class, + 'command.event.cache' => \Illuminate\Foundation\Console\EventCacheCommand::class, + 'command.event.clear' => \Illuminate\Foundation\Console\EventClearCommand::class, + 'command.event.generate' => \Illuminate\Foundation\Console\EventGenerateCommand::class, + 'command.event.list' => \Illuminate\Foundation\Console\EventListCommand::class, + 'command.event.make' => \Illuminate\Foundation\Console\EventMakeCommand::class, + 'command.exception.make' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, + 'command.factory.make' => \Illuminate\Database\Console\Factories\FactoryMakeCommand::class, + 'command.flare:test' => \Facade\Ignition\Commands\TestCommand::class, + 'command.ide-helper.eloquent' => \Barryvdh\LaravelIdeHelper\Console\EloquentCommand::class, + 'command.ide-helper.generate' => \Barryvdh\LaravelIdeHelper\Console\GeneratorCommand::class, + 'command.ide-helper.meta' => \Barryvdh\LaravelIdeHelper\Console\MetaCommand::class, + 'command.ide-helper.models' => \Barryvdh\LaravelIdeHelper\Console\ModelsCommand::class, + 'command.job.make' => \Illuminate\Foundation\Console\JobMakeCommand::class, + 'command.key.generate' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, + 'command.listener.make' => \Illuminate\Foundation\Console\ListenerMakeCommand::class, + 'command.mail.make' => \Illuminate\Foundation\Console\MailMakeCommand::class, + 'command.make:solution' => \Facade\Ignition\Commands\SolutionMakeCommand::class, + 'command.middleware.make' => \Illuminate\Routing\Console\MiddlewareMakeCommand::class, + 'command.migrate' => \Illuminate\Database\Console\Migrations\MigrateCommand::class, + 'command.migrate.fresh' => \Illuminate\Database\Console\Migrations\FreshCommand::class, + 'command.migrate.install' => \Illuminate\Database\Console\Migrations\InstallCommand::class, + 'command.migrate.make' => \Illuminate\Database\Console\Migrations\MigrateMakeCommand::class, + 'command.migrate.refresh' => \Illuminate\Database\Console\Migrations\RefreshCommand::class, + 'command.migrate.reset' => \Illuminate\Database\Console\Migrations\ResetCommand::class, + 'command.migrate.rollback' => \Illuminate\Database\Console\Migrations\RollbackCommand::class, + 'command.migrate.status' => \Illuminate\Database\Console\Migrations\StatusCommand::class, + 'command.model.make' => \Illuminate\Foundation\Console\ModelMakeCommand::class, + 'command.notification.make' => \Illuminate\Foundation\Console\NotificationMakeCommand::class, + 'command.notification.table' => \Illuminate\Notifications\Console\NotificationTableCommand::class, + 'command.observer.make' => \Illuminate\Foundation\Console\ObserverMakeCommand::class, + 'command.optimize' => \Illuminate\Foundation\Console\OptimizeCommand::class, + 'command.optimize.clear' => \Illuminate\Foundation\Console\OptimizeClearCommand::class, + 'command.package.discover' => \Illuminate\Foundation\Console\PackageDiscoverCommand::class, + 'command.policy.make' => \Illuminate\Foundation\Console\PolicyMakeCommand::class, + 'command.preset' => \Illuminate\Foundation\Console\PresetCommand::class, + 'command.provider.make' => \Illuminate\Foundation\Console\ProviderMakeCommand::class, + 'command.queue.failed' => \Illuminate\Queue\Console\ListFailedCommand::class, + 'command.queue.failed-table' => \Illuminate\Queue\Console\FailedTableCommand::class, + 'command.queue.flush' => \Illuminate\Queue\Console\FlushFailedCommand::class, + 'command.queue.forget' => \Illuminate\Queue\Console\ForgetFailedCommand::class, + 'command.queue.listen' => \Illuminate\Queue\Console\ListenCommand::class, + 'command.queue.restart' => \Illuminate\Queue\Console\RestartCommand::class, + 'command.queue.retry' => \Illuminate\Queue\Console\RetryCommand::class, + 'command.queue.table' => \Illuminate\Queue\Console\TableCommand::class, + 'command.queue.work' => \Illuminate\Queue\Console\WorkCommand::class, + 'command.request.make' => \Illuminate\Foundation\Console\RequestMakeCommand::class, + 'command.resource.make' => \Illuminate\Foundation\Console\ResourceMakeCommand::class, + 'command.route.cache' => \Illuminate\Foundation\Console\RouteCacheCommand::class, + 'command.route.clear' => \Illuminate\Foundation\Console\RouteClearCommand::class, + 'command.route.list' => \Illuminate\Foundation\Console\RouteListCommand::class, + 'command.rule.make' => \Illuminate\Foundation\Console\RuleMakeCommand::class, + 'command.seed' => \Illuminate\Database\Console\Seeds\SeedCommand::class, + 'command.seeder.make' => \Illuminate\Database\Console\Seeds\SeederMakeCommand::class, + 'command.serve' => \Illuminate\Foundation\Console\ServeCommand::class, + 'command.session.table' => \Illuminate\Session\Console\SessionTableCommand::class, + 'command.storage.link' => \Illuminate\Foundation\Console\StorageLinkCommand::class, + 'command.test.make' => \Illuminate\Foundation\Console\TestMakeCommand::class, + 'command.tinker' => \Laravel\Tinker\Console\TinkerCommand::class, + 'command.up' => \Illuminate\Foundation\Console\UpCommand::class, + 'command.vendor.publish' => \Illuminate\Foundation\Console\VendorPublishCommand::class, + 'command.view.cache' => \Illuminate\Foundation\Console\ViewCacheCommand::class, + 'command.view.clear' => \Illuminate\Foundation\Console\ViewClearCommand::class, + 'composer' => \Illuminate\Support\Composer::class, + 'cookie' => \Illuminate\Cookie\CookieJar::class, + 'db' => \Illuminate\Database\DatabaseManager::class, + 'db.connection' => \Illuminate\Database\MySqlConnection::class, + 'db.factory' => \Illuminate\Database\Connectors\ConnectionFactory::class, + 'encrypter' => \Illuminate\Encryption\Encrypter::class, + 'events' => \Illuminate\Events\Dispatcher::class, + 'files' => \Illuminate\Filesystem\Filesystem::class, + 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, + 'filesystem.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'flare.client' => \Facade\FlareClient\Flare::class, + 'flare.http' => \Facade\FlareClient\Http\Client::class, + 'flare.logger' => \Monolog\Logger::class, + 'hash' => \Illuminate\Hashing\HashManager::class, + 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, + 'image' => \Intervention\Image\ImageManager::class, + 'log' => \Illuminate\Log\LogManager::class, + 'mailer' => \Illuminate\Mail\Mailer::class, + 'memcached.connector' => \Illuminate\Cache\MemcachedConnector::class, + 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, + 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, + 'migrator' => \Illuminate\Database\Migrations\Migrator::class, + 'queue' => \Illuminate\Queue\QueueManager::class, + 'queue.connection' => \Illuminate\Queue\SyncQueue::class, + 'queue.failer' => \Illuminate\Queue\Failed\DatabaseFailedJobProvider::class, + 'queue.listener' => \Illuminate\Queue\Listener::class, + 'queue.worker' => \Illuminate\Queue\Worker::class, + 'redirect' => \Illuminate\Routing\Redirector::class, + 'redis' => \Illuminate\Redis\RedisManager::class, + 'router' => \Illuminate\Routing\Router::class, + 'session' => \Illuminate\Session\SessionManager::class, + 'session.store' => \Illuminate\Session\Store::class, + 'swift.mailer' => \Swift_Mailer::class, + 'swift.transport' => \Illuminate\Mail\TransportManager::class, + 'translation.loader' => \Illuminate\Translation\FileLoader::class, + 'translator' => \Illuminate\Translation\Translator::class, + 'url' => \Illuminate\Routing\UrlGenerator::class, + 'validation.presence' => \Illuminate\Validation\DatabasePresenceVerifier::class, + 'view' => \Illuminate\View\Factory::class, + 'view.engine.resolver' => \Illuminate\View\Engines\EngineResolver::class, + 'view.finder' => \Illuminate\View\FileViewFinder::class, + ])); + override(\Illuminate\Contracts\Container\Container::make(0), map([ + '' => '@', + 'Asm89\Stack\CorsService' => \Asm89\Stack\CorsService::class, + 'Facade\IgnitionContracts\SolutionProviderRepository' => \Facade\Ignition\SolutionProviders\SolutionProviderRepository::class, + 'Facade\Ignition\DumpRecorder\DumpRecorder' => \Facade\Ignition\DumpRecorder\DumpRecorder::class, + 'Facade\Ignition\ErrorPage\Renderer' => \Facade\Ignition\ErrorPage\Renderer::class, + 'Facade\Ignition\IgnitionConfig' => \Facade\Ignition\IgnitionConfig::class, + 'Facade\Ignition\LogRecorder\LogRecorder' => \Facade\Ignition\LogRecorder\LogRecorder::class, + 'Facade\Ignition\QueryRecorder\QueryRecorder' => \Facade\Ignition\QueryRecorder\QueryRecorder::class, + 'Illuminate\Broadcasting\BroadcastManager' => \Illuminate\Broadcasting\BroadcastManager::class, + 'Illuminate\Bus\Dispatcher' => \Illuminate\Bus\Dispatcher::class, + 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, + 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, + 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, + 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, + 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\LogBroadcaster::class, + 'Illuminate\Contracts\Console\Kernel' => \App\Console\Kernel::class, + 'Illuminate\Contracts\Debug\ExceptionHandler' => \NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler::class, + 'Illuminate\Contracts\Http\Kernel' => \App\Http\Kernel::class, + 'Illuminate\Contracts\Pipeline\Hub' => \Illuminate\Pipeline\Hub::class, + 'Illuminate\Contracts\Queue\EntityResolver' => \Illuminate\Database\Eloquent\QueueEntityResolver::class, + 'Illuminate\Contracts\Routing\ResponseFactory' => \Illuminate\Routing\ResponseFactory::class, + 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, + 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, + 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, + 'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class, + 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, + 'Laravel\Scout\EngineManager' => \Laravel\Scout\EngineManager::class, + 'League\OAuth2\Server\AuthorizationServer' => \League\OAuth2\Server\AuthorizationServer::class, + 'League\OAuth2\Server\ResourceServer' => \League\OAuth2\Server\ResourceServer::class, + 'NunoMaduro\Collision\Contracts\Adapters\Phpunit\Listener' => \NunoMaduro\Collision\Adapters\Phpunit\Listener::class, + 'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class, + 'Psr\Http\Message\ResponseInterface' => \Nyholm\Psr7\Response::class, + 'Psr\Http\Message\ServerRequestInterface' => \Nyholm\Psr7\ServerRequest::class, + 'Whoops\Handler\HandlerInterface' => \Facade\Ignition\ErrorPage\IgnitionWhoopsHandler::class, + 'auth' => \Illuminate\Auth\AuthManager::class, + 'auth.driver' => \Illuminate\Auth\SessionGuard::class, + 'auth.password' => \Illuminate\Auth\Passwords\PasswordBrokerManager::class, + 'auth.password.broker' => \Illuminate\Auth\Passwords\PasswordBroker::class, + 'blade.compiler' => \Illuminate\View\Compilers\BladeCompiler::class, + 'cache' => \Illuminate\Cache\CacheManager::class, + 'cache.store' => \Illuminate\Cache\Repository::class, + 'command.auth.resets.clear' => \Illuminate\Auth\Console\ClearResetsCommand::class, + 'command.cache.clear' => \Illuminate\Cache\Console\ClearCommand::class, + 'command.cache.forget' => \Illuminate\Cache\Console\ForgetCommand::class, + 'command.cache.table' => \Illuminate\Cache\Console\CacheTableCommand::class, + 'command.channel.make' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, + 'command.clear-compiled' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, + 'command.config.cache' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, + 'command.config.clear' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'command.console.make' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, + 'command.controller.make' => \Illuminate\Routing\Console\ControllerMakeCommand::class, + 'command.db.wipe' => \Illuminate\Database\Console\WipeCommand::class, + 'command.down' => \Illuminate\Foundation\Console\DownCommand::class, + 'command.environment' => \Illuminate\Foundation\Console\EnvironmentCommand::class, + 'command.event.cache' => \Illuminate\Foundation\Console\EventCacheCommand::class, + 'command.event.clear' => \Illuminate\Foundation\Console\EventClearCommand::class, + 'command.event.generate' => \Illuminate\Foundation\Console\EventGenerateCommand::class, + 'command.event.list' => \Illuminate\Foundation\Console\EventListCommand::class, + 'command.event.make' => \Illuminate\Foundation\Console\EventMakeCommand::class, + 'command.exception.make' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, + 'command.factory.make' => \Illuminate\Database\Console\Factories\FactoryMakeCommand::class, + 'command.flare:test' => \Facade\Ignition\Commands\TestCommand::class, + 'command.ide-helper.eloquent' => \Barryvdh\LaravelIdeHelper\Console\EloquentCommand::class, + 'command.ide-helper.generate' => \Barryvdh\LaravelIdeHelper\Console\GeneratorCommand::class, + 'command.ide-helper.meta' => \Barryvdh\LaravelIdeHelper\Console\MetaCommand::class, + 'command.ide-helper.models' => \Barryvdh\LaravelIdeHelper\Console\ModelsCommand::class, + 'command.job.make' => \Illuminate\Foundation\Console\JobMakeCommand::class, + 'command.key.generate' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, + 'command.listener.make' => \Illuminate\Foundation\Console\ListenerMakeCommand::class, + 'command.mail.make' => \Illuminate\Foundation\Console\MailMakeCommand::class, + 'command.make:solution' => \Facade\Ignition\Commands\SolutionMakeCommand::class, + 'command.middleware.make' => \Illuminate\Routing\Console\MiddlewareMakeCommand::class, + 'command.migrate' => \Illuminate\Database\Console\Migrations\MigrateCommand::class, + 'command.migrate.fresh' => \Illuminate\Database\Console\Migrations\FreshCommand::class, + 'command.migrate.install' => \Illuminate\Database\Console\Migrations\InstallCommand::class, + 'command.migrate.make' => \Illuminate\Database\Console\Migrations\MigrateMakeCommand::class, + 'command.migrate.refresh' => \Illuminate\Database\Console\Migrations\RefreshCommand::class, + 'command.migrate.reset' => \Illuminate\Database\Console\Migrations\ResetCommand::class, + 'command.migrate.rollback' => \Illuminate\Database\Console\Migrations\RollbackCommand::class, + 'command.migrate.status' => \Illuminate\Database\Console\Migrations\StatusCommand::class, + 'command.model.make' => \Illuminate\Foundation\Console\ModelMakeCommand::class, + 'command.notification.make' => \Illuminate\Foundation\Console\NotificationMakeCommand::class, + 'command.notification.table' => \Illuminate\Notifications\Console\NotificationTableCommand::class, + 'command.observer.make' => \Illuminate\Foundation\Console\ObserverMakeCommand::class, + 'command.optimize' => \Illuminate\Foundation\Console\OptimizeCommand::class, + 'command.optimize.clear' => \Illuminate\Foundation\Console\OptimizeClearCommand::class, + 'command.package.discover' => \Illuminate\Foundation\Console\PackageDiscoverCommand::class, + 'command.policy.make' => \Illuminate\Foundation\Console\PolicyMakeCommand::class, + 'command.preset' => \Illuminate\Foundation\Console\PresetCommand::class, + 'command.provider.make' => \Illuminate\Foundation\Console\ProviderMakeCommand::class, + 'command.queue.failed' => \Illuminate\Queue\Console\ListFailedCommand::class, + 'command.queue.failed-table' => \Illuminate\Queue\Console\FailedTableCommand::class, + 'command.queue.flush' => \Illuminate\Queue\Console\FlushFailedCommand::class, + 'command.queue.forget' => \Illuminate\Queue\Console\ForgetFailedCommand::class, + 'command.queue.listen' => \Illuminate\Queue\Console\ListenCommand::class, + 'command.queue.restart' => \Illuminate\Queue\Console\RestartCommand::class, + 'command.queue.retry' => \Illuminate\Queue\Console\RetryCommand::class, + 'command.queue.table' => \Illuminate\Queue\Console\TableCommand::class, + 'command.queue.work' => \Illuminate\Queue\Console\WorkCommand::class, + 'command.request.make' => \Illuminate\Foundation\Console\RequestMakeCommand::class, + 'command.resource.make' => \Illuminate\Foundation\Console\ResourceMakeCommand::class, + 'command.route.cache' => \Illuminate\Foundation\Console\RouteCacheCommand::class, + 'command.route.clear' => \Illuminate\Foundation\Console\RouteClearCommand::class, + 'command.route.list' => \Illuminate\Foundation\Console\RouteListCommand::class, + 'command.rule.make' => \Illuminate\Foundation\Console\RuleMakeCommand::class, + 'command.seed' => \Illuminate\Database\Console\Seeds\SeedCommand::class, + 'command.seeder.make' => \Illuminate\Database\Console\Seeds\SeederMakeCommand::class, + 'command.serve' => \Illuminate\Foundation\Console\ServeCommand::class, + 'command.session.table' => \Illuminate\Session\Console\SessionTableCommand::class, + 'command.storage.link' => \Illuminate\Foundation\Console\StorageLinkCommand::class, + 'command.test.make' => \Illuminate\Foundation\Console\TestMakeCommand::class, + 'command.tinker' => \Laravel\Tinker\Console\TinkerCommand::class, + 'command.up' => \Illuminate\Foundation\Console\UpCommand::class, + 'command.vendor.publish' => \Illuminate\Foundation\Console\VendorPublishCommand::class, + 'command.view.cache' => \Illuminate\Foundation\Console\ViewCacheCommand::class, + 'command.view.clear' => \Illuminate\Foundation\Console\ViewClearCommand::class, + 'composer' => \Illuminate\Support\Composer::class, + 'cookie' => \Illuminate\Cookie\CookieJar::class, + 'db' => \Illuminate\Database\DatabaseManager::class, + 'db.connection' => \Illuminate\Database\MySqlConnection::class, + 'db.factory' => \Illuminate\Database\Connectors\ConnectionFactory::class, + 'encrypter' => \Illuminate\Encryption\Encrypter::class, + 'events' => \Illuminate\Events\Dispatcher::class, + 'files' => \Illuminate\Filesystem\Filesystem::class, + 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, + 'filesystem.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'flare.client' => \Facade\FlareClient\Flare::class, + 'flare.http' => \Facade\FlareClient\Http\Client::class, + 'flare.logger' => \Monolog\Logger::class, + 'hash' => \Illuminate\Hashing\HashManager::class, + 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, + 'image' => \Intervention\Image\ImageManager::class, + 'log' => \Illuminate\Log\LogManager::class, + 'mailer' => \Illuminate\Mail\Mailer::class, + 'memcached.connector' => \Illuminate\Cache\MemcachedConnector::class, + 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, + 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, + 'migrator' => \Illuminate\Database\Migrations\Migrator::class, + 'queue' => \Illuminate\Queue\QueueManager::class, + 'queue.connection' => \Illuminate\Queue\SyncQueue::class, + 'queue.failer' => \Illuminate\Queue\Failed\DatabaseFailedJobProvider::class, + 'queue.listener' => \Illuminate\Queue\Listener::class, + 'queue.worker' => \Illuminate\Queue\Worker::class, + 'redirect' => \Illuminate\Routing\Redirector::class, + 'redis' => \Illuminate\Redis\RedisManager::class, + 'router' => \Illuminate\Routing\Router::class, + 'session' => \Illuminate\Session\SessionManager::class, + 'session.store' => \Illuminate\Session\Store::class, + 'swift.mailer' => \Swift_Mailer::class, + 'swift.transport' => \Illuminate\Mail\TransportManager::class, + 'translation.loader' => \Illuminate\Translation\FileLoader::class, + 'translator' => \Illuminate\Translation\Translator::class, + 'url' => \Illuminate\Routing\UrlGenerator::class, + 'validation.presence' => \Illuminate\Validation\DatabasePresenceVerifier::class, + 'view' => \Illuminate\View\Factory::class, + 'view.engine.resolver' => \Illuminate\View\Engines\EngineResolver::class, + 'view.finder' => \Illuminate\View\FileViewFinder::class, + ])); + override(\Illuminate\Contracts\Container\Container::makeWith(0), map([ + '' => '@', + 'Asm89\Stack\CorsService' => \Asm89\Stack\CorsService::class, + 'Facade\IgnitionContracts\SolutionProviderRepository' => \Facade\Ignition\SolutionProviders\SolutionProviderRepository::class, + 'Facade\Ignition\DumpRecorder\DumpRecorder' => \Facade\Ignition\DumpRecorder\DumpRecorder::class, + 'Facade\Ignition\ErrorPage\Renderer' => \Facade\Ignition\ErrorPage\Renderer::class, + 'Facade\Ignition\IgnitionConfig' => \Facade\Ignition\IgnitionConfig::class, + 'Facade\Ignition\LogRecorder\LogRecorder' => \Facade\Ignition\LogRecorder\LogRecorder::class, + 'Facade\Ignition\QueryRecorder\QueryRecorder' => \Facade\Ignition\QueryRecorder\QueryRecorder::class, + 'Illuminate\Broadcasting\BroadcastManager' => \Illuminate\Broadcasting\BroadcastManager::class, + 'Illuminate\Bus\Dispatcher' => \Illuminate\Bus\Dispatcher::class, + 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, + 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, + 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, + 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, + 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\LogBroadcaster::class, + 'Illuminate\Contracts\Console\Kernel' => \App\Console\Kernel::class, + 'Illuminate\Contracts\Debug\ExceptionHandler' => \NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler::class, + 'Illuminate\Contracts\Http\Kernel' => \App\Http\Kernel::class, + 'Illuminate\Contracts\Pipeline\Hub' => \Illuminate\Pipeline\Hub::class, + 'Illuminate\Contracts\Queue\EntityResolver' => \Illuminate\Database\Eloquent\QueueEntityResolver::class, + 'Illuminate\Contracts\Routing\ResponseFactory' => \Illuminate\Routing\ResponseFactory::class, + 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, + 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, + 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, + 'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class, + 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, + 'Laravel\Scout\EngineManager' => \Laravel\Scout\EngineManager::class, + 'League\OAuth2\Server\AuthorizationServer' => \League\OAuth2\Server\AuthorizationServer::class, + 'League\OAuth2\Server\ResourceServer' => \League\OAuth2\Server\ResourceServer::class, + 'NunoMaduro\Collision\Contracts\Adapters\Phpunit\Listener' => \NunoMaduro\Collision\Adapters\Phpunit\Listener::class, + 'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class, + 'Psr\Http\Message\ResponseInterface' => \Nyholm\Psr7\Response::class, + 'Psr\Http\Message\ServerRequestInterface' => \Nyholm\Psr7\ServerRequest::class, + 'Whoops\Handler\HandlerInterface' => \Facade\Ignition\ErrorPage\IgnitionWhoopsHandler::class, + 'auth' => \Illuminate\Auth\AuthManager::class, + 'auth.driver' => \Illuminate\Auth\SessionGuard::class, + 'auth.password' => \Illuminate\Auth\Passwords\PasswordBrokerManager::class, + 'auth.password.broker' => \Illuminate\Auth\Passwords\PasswordBroker::class, + 'blade.compiler' => \Illuminate\View\Compilers\BladeCompiler::class, + 'cache' => \Illuminate\Cache\CacheManager::class, + 'cache.store' => \Illuminate\Cache\Repository::class, + 'command.auth.resets.clear' => \Illuminate\Auth\Console\ClearResetsCommand::class, + 'command.cache.clear' => \Illuminate\Cache\Console\ClearCommand::class, + 'command.cache.forget' => \Illuminate\Cache\Console\ForgetCommand::class, + 'command.cache.table' => \Illuminate\Cache\Console\CacheTableCommand::class, + 'command.channel.make' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, + 'command.clear-compiled' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, + 'command.config.cache' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, + 'command.config.clear' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'command.console.make' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, + 'command.controller.make' => \Illuminate\Routing\Console\ControllerMakeCommand::class, + 'command.db.wipe' => \Illuminate\Database\Console\WipeCommand::class, + 'command.down' => \Illuminate\Foundation\Console\DownCommand::class, + 'command.environment' => \Illuminate\Foundation\Console\EnvironmentCommand::class, + 'command.event.cache' => \Illuminate\Foundation\Console\EventCacheCommand::class, + 'command.event.clear' => \Illuminate\Foundation\Console\EventClearCommand::class, + 'command.event.generate' => \Illuminate\Foundation\Console\EventGenerateCommand::class, + 'command.event.list' => \Illuminate\Foundation\Console\EventListCommand::class, + 'command.event.make' => \Illuminate\Foundation\Console\EventMakeCommand::class, + 'command.exception.make' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, + 'command.factory.make' => \Illuminate\Database\Console\Factories\FactoryMakeCommand::class, + 'command.flare:test' => \Facade\Ignition\Commands\TestCommand::class, + 'command.ide-helper.eloquent' => \Barryvdh\LaravelIdeHelper\Console\EloquentCommand::class, + 'command.ide-helper.generate' => \Barryvdh\LaravelIdeHelper\Console\GeneratorCommand::class, + 'command.ide-helper.meta' => \Barryvdh\LaravelIdeHelper\Console\MetaCommand::class, + 'command.ide-helper.models' => \Barryvdh\LaravelIdeHelper\Console\ModelsCommand::class, + 'command.job.make' => \Illuminate\Foundation\Console\JobMakeCommand::class, + 'command.key.generate' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, + 'command.listener.make' => \Illuminate\Foundation\Console\ListenerMakeCommand::class, + 'command.mail.make' => \Illuminate\Foundation\Console\MailMakeCommand::class, + 'command.make:solution' => \Facade\Ignition\Commands\SolutionMakeCommand::class, + 'command.middleware.make' => \Illuminate\Routing\Console\MiddlewareMakeCommand::class, + 'command.migrate' => \Illuminate\Database\Console\Migrations\MigrateCommand::class, + 'command.migrate.fresh' => \Illuminate\Database\Console\Migrations\FreshCommand::class, + 'command.migrate.install' => \Illuminate\Database\Console\Migrations\InstallCommand::class, + 'command.migrate.make' => \Illuminate\Database\Console\Migrations\MigrateMakeCommand::class, + 'command.migrate.refresh' => \Illuminate\Database\Console\Migrations\RefreshCommand::class, + 'command.migrate.reset' => \Illuminate\Database\Console\Migrations\ResetCommand::class, + 'command.migrate.rollback' => \Illuminate\Database\Console\Migrations\RollbackCommand::class, + 'command.migrate.status' => \Illuminate\Database\Console\Migrations\StatusCommand::class, + 'command.model.make' => \Illuminate\Foundation\Console\ModelMakeCommand::class, + 'command.notification.make' => \Illuminate\Foundation\Console\NotificationMakeCommand::class, + 'command.notification.table' => \Illuminate\Notifications\Console\NotificationTableCommand::class, + 'command.observer.make' => \Illuminate\Foundation\Console\ObserverMakeCommand::class, + 'command.optimize' => \Illuminate\Foundation\Console\OptimizeCommand::class, + 'command.optimize.clear' => \Illuminate\Foundation\Console\OptimizeClearCommand::class, + 'command.package.discover' => \Illuminate\Foundation\Console\PackageDiscoverCommand::class, + 'command.policy.make' => \Illuminate\Foundation\Console\PolicyMakeCommand::class, + 'command.preset' => \Illuminate\Foundation\Console\PresetCommand::class, + 'command.provider.make' => \Illuminate\Foundation\Console\ProviderMakeCommand::class, + 'command.queue.failed' => \Illuminate\Queue\Console\ListFailedCommand::class, + 'command.queue.failed-table' => \Illuminate\Queue\Console\FailedTableCommand::class, + 'command.queue.flush' => \Illuminate\Queue\Console\FlushFailedCommand::class, + 'command.queue.forget' => \Illuminate\Queue\Console\ForgetFailedCommand::class, + 'command.queue.listen' => \Illuminate\Queue\Console\ListenCommand::class, + 'command.queue.restart' => \Illuminate\Queue\Console\RestartCommand::class, + 'command.queue.retry' => \Illuminate\Queue\Console\RetryCommand::class, + 'command.queue.table' => \Illuminate\Queue\Console\TableCommand::class, + 'command.queue.work' => \Illuminate\Queue\Console\WorkCommand::class, + 'command.request.make' => \Illuminate\Foundation\Console\RequestMakeCommand::class, + 'command.resource.make' => \Illuminate\Foundation\Console\ResourceMakeCommand::class, + 'command.route.cache' => \Illuminate\Foundation\Console\RouteCacheCommand::class, + 'command.route.clear' => \Illuminate\Foundation\Console\RouteClearCommand::class, + 'command.route.list' => \Illuminate\Foundation\Console\RouteListCommand::class, + 'command.rule.make' => \Illuminate\Foundation\Console\RuleMakeCommand::class, + 'command.seed' => \Illuminate\Database\Console\Seeds\SeedCommand::class, + 'command.seeder.make' => \Illuminate\Database\Console\Seeds\SeederMakeCommand::class, + 'command.serve' => \Illuminate\Foundation\Console\ServeCommand::class, + 'command.session.table' => \Illuminate\Session\Console\SessionTableCommand::class, + 'command.storage.link' => \Illuminate\Foundation\Console\StorageLinkCommand::class, + 'command.test.make' => \Illuminate\Foundation\Console\TestMakeCommand::class, + 'command.tinker' => \Laravel\Tinker\Console\TinkerCommand::class, + 'command.up' => \Illuminate\Foundation\Console\UpCommand::class, + 'command.vendor.publish' => \Illuminate\Foundation\Console\VendorPublishCommand::class, + 'command.view.cache' => \Illuminate\Foundation\Console\ViewCacheCommand::class, + 'command.view.clear' => \Illuminate\Foundation\Console\ViewClearCommand::class, + 'composer' => \Illuminate\Support\Composer::class, + 'cookie' => \Illuminate\Cookie\CookieJar::class, + 'db' => \Illuminate\Database\DatabaseManager::class, + 'db.connection' => \Illuminate\Database\MySqlConnection::class, + 'db.factory' => \Illuminate\Database\Connectors\ConnectionFactory::class, + 'encrypter' => \Illuminate\Encryption\Encrypter::class, + 'events' => \Illuminate\Events\Dispatcher::class, + 'files' => \Illuminate\Filesystem\Filesystem::class, + 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, + 'filesystem.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'flare.client' => \Facade\FlareClient\Flare::class, + 'flare.http' => \Facade\FlareClient\Http\Client::class, + 'flare.logger' => \Monolog\Logger::class, + 'hash' => \Illuminate\Hashing\HashManager::class, + 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, + 'image' => \Intervention\Image\ImageManager::class, + 'log' => \Illuminate\Log\LogManager::class, + 'mailer' => \Illuminate\Mail\Mailer::class, + 'memcached.connector' => \Illuminate\Cache\MemcachedConnector::class, + 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, + 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, + 'migrator' => \Illuminate\Database\Migrations\Migrator::class, + 'queue' => \Illuminate\Queue\QueueManager::class, + 'queue.connection' => \Illuminate\Queue\SyncQueue::class, + 'queue.failer' => \Illuminate\Queue\Failed\DatabaseFailedJobProvider::class, + 'queue.listener' => \Illuminate\Queue\Listener::class, + 'queue.worker' => \Illuminate\Queue\Worker::class, + 'redirect' => \Illuminate\Routing\Redirector::class, + 'redis' => \Illuminate\Redis\RedisManager::class, + 'router' => \Illuminate\Routing\Router::class, + 'session' => \Illuminate\Session\SessionManager::class, + 'session.store' => \Illuminate\Session\Store::class, + 'swift.mailer' => \Swift_Mailer::class, + 'swift.transport' => \Illuminate\Mail\TransportManager::class, + 'translation.loader' => \Illuminate\Translation\FileLoader::class, + 'translator' => \Illuminate\Translation\Translator::class, + 'url' => \Illuminate\Routing\UrlGenerator::class, + 'validation.presence' => \Illuminate\Validation\DatabasePresenceVerifier::class, + 'view' => \Illuminate\View\Factory::class, + 'view.engine.resolver' => \Illuminate\View\Engines\EngineResolver::class, + 'view.finder' => \Illuminate\View\FileViewFinder::class, + ])); + override(\App::make(0), map([ + '' => '@', + 'Asm89\Stack\CorsService' => \Asm89\Stack\CorsService::class, + 'Facade\IgnitionContracts\SolutionProviderRepository' => \Facade\Ignition\SolutionProviders\SolutionProviderRepository::class, + 'Facade\Ignition\DumpRecorder\DumpRecorder' => \Facade\Ignition\DumpRecorder\DumpRecorder::class, + 'Facade\Ignition\ErrorPage\Renderer' => \Facade\Ignition\ErrorPage\Renderer::class, + 'Facade\Ignition\IgnitionConfig' => \Facade\Ignition\IgnitionConfig::class, + 'Facade\Ignition\LogRecorder\LogRecorder' => \Facade\Ignition\LogRecorder\LogRecorder::class, + 'Facade\Ignition\QueryRecorder\QueryRecorder' => \Facade\Ignition\QueryRecorder\QueryRecorder::class, + 'Illuminate\Broadcasting\BroadcastManager' => \Illuminate\Broadcasting\BroadcastManager::class, + 'Illuminate\Bus\Dispatcher' => \Illuminate\Bus\Dispatcher::class, + 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, + 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, + 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, + 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, + 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\LogBroadcaster::class, + 'Illuminate\Contracts\Console\Kernel' => \App\Console\Kernel::class, + 'Illuminate\Contracts\Debug\ExceptionHandler' => \NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler::class, + 'Illuminate\Contracts\Http\Kernel' => \App\Http\Kernel::class, + 'Illuminate\Contracts\Pipeline\Hub' => \Illuminate\Pipeline\Hub::class, + 'Illuminate\Contracts\Queue\EntityResolver' => \Illuminate\Database\Eloquent\QueueEntityResolver::class, + 'Illuminate\Contracts\Routing\ResponseFactory' => \Illuminate\Routing\ResponseFactory::class, + 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, + 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, + 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, + 'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class, + 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, + 'Laravel\Scout\EngineManager' => \Laravel\Scout\EngineManager::class, + 'League\OAuth2\Server\AuthorizationServer' => \League\OAuth2\Server\AuthorizationServer::class, + 'League\OAuth2\Server\ResourceServer' => \League\OAuth2\Server\ResourceServer::class, + 'NunoMaduro\Collision\Contracts\Adapters\Phpunit\Listener' => \NunoMaduro\Collision\Adapters\Phpunit\Listener::class, + 'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class, + 'Psr\Http\Message\ResponseInterface' => \Nyholm\Psr7\Response::class, + 'Psr\Http\Message\ServerRequestInterface' => \Nyholm\Psr7\ServerRequest::class, + 'Whoops\Handler\HandlerInterface' => \Facade\Ignition\ErrorPage\IgnitionWhoopsHandler::class, + 'auth' => \Illuminate\Auth\AuthManager::class, + 'auth.driver' => \Illuminate\Auth\SessionGuard::class, + 'auth.password' => \Illuminate\Auth\Passwords\PasswordBrokerManager::class, + 'auth.password.broker' => \Illuminate\Auth\Passwords\PasswordBroker::class, + 'blade.compiler' => \Illuminate\View\Compilers\BladeCompiler::class, + 'cache' => \Illuminate\Cache\CacheManager::class, + 'cache.store' => \Illuminate\Cache\Repository::class, + 'command.auth.resets.clear' => \Illuminate\Auth\Console\ClearResetsCommand::class, + 'command.cache.clear' => \Illuminate\Cache\Console\ClearCommand::class, + 'command.cache.forget' => \Illuminate\Cache\Console\ForgetCommand::class, + 'command.cache.table' => \Illuminate\Cache\Console\CacheTableCommand::class, + 'command.channel.make' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, + 'command.clear-compiled' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, + 'command.config.cache' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, + 'command.config.clear' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'command.console.make' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, + 'command.controller.make' => \Illuminate\Routing\Console\ControllerMakeCommand::class, + 'command.db.wipe' => \Illuminate\Database\Console\WipeCommand::class, + 'command.down' => \Illuminate\Foundation\Console\DownCommand::class, + 'command.environment' => \Illuminate\Foundation\Console\EnvironmentCommand::class, + 'command.event.cache' => \Illuminate\Foundation\Console\EventCacheCommand::class, + 'command.event.clear' => \Illuminate\Foundation\Console\EventClearCommand::class, + 'command.event.generate' => \Illuminate\Foundation\Console\EventGenerateCommand::class, + 'command.event.list' => \Illuminate\Foundation\Console\EventListCommand::class, + 'command.event.make' => \Illuminate\Foundation\Console\EventMakeCommand::class, + 'command.exception.make' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, + 'command.factory.make' => \Illuminate\Database\Console\Factories\FactoryMakeCommand::class, + 'command.flare:test' => \Facade\Ignition\Commands\TestCommand::class, + 'command.ide-helper.eloquent' => \Barryvdh\LaravelIdeHelper\Console\EloquentCommand::class, + 'command.ide-helper.generate' => \Barryvdh\LaravelIdeHelper\Console\GeneratorCommand::class, + 'command.ide-helper.meta' => \Barryvdh\LaravelIdeHelper\Console\MetaCommand::class, + 'command.ide-helper.models' => \Barryvdh\LaravelIdeHelper\Console\ModelsCommand::class, + 'command.job.make' => \Illuminate\Foundation\Console\JobMakeCommand::class, + 'command.key.generate' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, + 'command.listener.make' => \Illuminate\Foundation\Console\ListenerMakeCommand::class, + 'command.mail.make' => \Illuminate\Foundation\Console\MailMakeCommand::class, + 'command.make:solution' => \Facade\Ignition\Commands\SolutionMakeCommand::class, + 'command.middleware.make' => \Illuminate\Routing\Console\MiddlewareMakeCommand::class, + 'command.migrate' => \Illuminate\Database\Console\Migrations\MigrateCommand::class, + 'command.migrate.fresh' => \Illuminate\Database\Console\Migrations\FreshCommand::class, + 'command.migrate.install' => \Illuminate\Database\Console\Migrations\InstallCommand::class, + 'command.migrate.make' => \Illuminate\Database\Console\Migrations\MigrateMakeCommand::class, + 'command.migrate.refresh' => \Illuminate\Database\Console\Migrations\RefreshCommand::class, + 'command.migrate.reset' => \Illuminate\Database\Console\Migrations\ResetCommand::class, + 'command.migrate.rollback' => \Illuminate\Database\Console\Migrations\RollbackCommand::class, + 'command.migrate.status' => \Illuminate\Database\Console\Migrations\StatusCommand::class, + 'command.model.make' => \Illuminate\Foundation\Console\ModelMakeCommand::class, + 'command.notification.make' => \Illuminate\Foundation\Console\NotificationMakeCommand::class, + 'command.notification.table' => \Illuminate\Notifications\Console\NotificationTableCommand::class, + 'command.observer.make' => \Illuminate\Foundation\Console\ObserverMakeCommand::class, + 'command.optimize' => \Illuminate\Foundation\Console\OptimizeCommand::class, + 'command.optimize.clear' => \Illuminate\Foundation\Console\OptimizeClearCommand::class, + 'command.package.discover' => \Illuminate\Foundation\Console\PackageDiscoverCommand::class, + 'command.policy.make' => \Illuminate\Foundation\Console\PolicyMakeCommand::class, + 'command.preset' => \Illuminate\Foundation\Console\PresetCommand::class, + 'command.provider.make' => \Illuminate\Foundation\Console\ProviderMakeCommand::class, + 'command.queue.failed' => \Illuminate\Queue\Console\ListFailedCommand::class, + 'command.queue.failed-table' => \Illuminate\Queue\Console\FailedTableCommand::class, + 'command.queue.flush' => \Illuminate\Queue\Console\FlushFailedCommand::class, + 'command.queue.forget' => \Illuminate\Queue\Console\ForgetFailedCommand::class, + 'command.queue.listen' => \Illuminate\Queue\Console\ListenCommand::class, + 'command.queue.restart' => \Illuminate\Queue\Console\RestartCommand::class, + 'command.queue.retry' => \Illuminate\Queue\Console\RetryCommand::class, + 'command.queue.table' => \Illuminate\Queue\Console\TableCommand::class, + 'command.queue.work' => \Illuminate\Queue\Console\WorkCommand::class, + 'command.request.make' => \Illuminate\Foundation\Console\RequestMakeCommand::class, + 'command.resource.make' => \Illuminate\Foundation\Console\ResourceMakeCommand::class, + 'command.route.cache' => \Illuminate\Foundation\Console\RouteCacheCommand::class, + 'command.route.clear' => \Illuminate\Foundation\Console\RouteClearCommand::class, + 'command.route.list' => \Illuminate\Foundation\Console\RouteListCommand::class, + 'command.rule.make' => \Illuminate\Foundation\Console\RuleMakeCommand::class, + 'command.seed' => \Illuminate\Database\Console\Seeds\SeedCommand::class, + 'command.seeder.make' => \Illuminate\Database\Console\Seeds\SeederMakeCommand::class, + 'command.serve' => \Illuminate\Foundation\Console\ServeCommand::class, + 'command.session.table' => \Illuminate\Session\Console\SessionTableCommand::class, + 'command.storage.link' => \Illuminate\Foundation\Console\StorageLinkCommand::class, + 'command.test.make' => \Illuminate\Foundation\Console\TestMakeCommand::class, + 'command.tinker' => \Laravel\Tinker\Console\TinkerCommand::class, + 'command.up' => \Illuminate\Foundation\Console\UpCommand::class, + 'command.vendor.publish' => \Illuminate\Foundation\Console\VendorPublishCommand::class, + 'command.view.cache' => \Illuminate\Foundation\Console\ViewCacheCommand::class, + 'command.view.clear' => \Illuminate\Foundation\Console\ViewClearCommand::class, + 'composer' => \Illuminate\Support\Composer::class, + 'cookie' => \Illuminate\Cookie\CookieJar::class, + 'db' => \Illuminate\Database\DatabaseManager::class, + 'db.connection' => \Illuminate\Database\MySqlConnection::class, + 'db.factory' => \Illuminate\Database\Connectors\ConnectionFactory::class, + 'encrypter' => \Illuminate\Encryption\Encrypter::class, + 'events' => \Illuminate\Events\Dispatcher::class, + 'files' => \Illuminate\Filesystem\Filesystem::class, + 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, + 'filesystem.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'flare.client' => \Facade\FlareClient\Flare::class, + 'flare.http' => \Facade\FlareClient\Http\Client::class, + 'flare.logger' => \Monolog\Logger::class, + 'hash' => \Illuminate\Hashing\HashManager::class, + 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, + 'image' => \Intervention\Image\ImageManager::class, + 'log' => \Illuminate\Log\LogManager::class, + 'mailer' => \Illuminate\Mail\Mailer::class, + 'memcached.connector' => \Illuminate\Cache\MemcachedConnector::class, + 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, + 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, + 'migrator' => \Illuminate\Database\Migrations\Migrator::class, + 'queue' => \Illuminate\Queue\QueueManager::class, + 'queue.connection' => \Illuminate\Queue\SyncQueue::class, + 'queue.failer' => \Illuminate\Queue\Failed\DatabaseFailedJobProvider::class, + 'queue.listener' => \Illuminate\Queue\Listener::class, + 'queue.worker' => \Illuminate\Queue\Worker::class, + 'redirect' => \Illuminate\Routing\Redirector::class, + 'redis' => \Illuminate\Redis\RedisManager::class, + 'router' => \Illuminate\Routing\Router::class, + 'session' => \Illuminate\Session\SessionManager::class, + 'session.store' => \Illuminate\Session\Store::class, + 'swift.mailer' => \Swift_Mailer::class, + 'swift.transport' => \Illuminate\Mail\TransportManager::class, + 'translation.loader' => \Illuminate\Translation\FileLoader::class, + 'translator' => \Illuminate\Translation\Translator::class, + 'url' => \Illuminate\Routing\UrlGenerator::class, + 'validation.presence' => \Illuminate\Validation\DatabasePresenceVerifier::class, + 'view' => \Illuminate\View\Factory::class, + 'view.engine.resolver' => \Illuminate\View\Engines\EngineResolver::class, + 'view.finder' => \Illuminate\View\FileViewFinder::class, + ])); + override(\App::makeWith(0), map([ + '' => '@', + 'Asm89\Stack\CorsService' => \Asm89\Stack\CorsService::class, + 'Facade\IgnitionContracts\SolutionProviderRepository' => \Facade\Ignition\SolutionProviders\SolutionProviderRepository::class, + 'Facade\Ignition\DumpRecorder\DumpRecorder' => \Facade\Ignition\DumpRecorder\DumpRecorder::class, + 'Facade\Ignition\ErrorPage\Renderer' => \Facade\Ignition\ErrorPage\Renderer::class, + 'Facade\Ignition\IgnitionConfig' => \Facade\Ignition\IgnitionConfig::class, + 'Facade\Ignition\LogRecorder\LogRecorder' => \Facade\Ignition\LogRecorder\LogRecorder::class, + 'Facade\Ignition\QueryRecorder\QueryRecorder' => \Facade\Ignition\QueryRecorder\QueryRecorder::class, + 'Illuminate\Broadcasting\BroadcastManager' => \Illuminate\Broadcasting\BroadcastManager::class, + 'Illuminate\Bus\Dispatcher' => \Illuminate\Bus\Dispatcher::class, + 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, + 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, + 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, + 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, + 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\LogBroadcaster::class, + 'Illuminate\Contracts\Console\Kernel' => \App\Console\Kernel::class, + 'Illuminate\Contracts\Debug\ExceptionHandler' => \NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler::class, + 'Illuminate\Contracts\Http\Kernel' => \App\Http\Kernel::class, + 'Illuminate\Contracts\Pipeline\Hub' => \Illuminate\Pipeline\Hub::class, + 'Illuminate\Contracts\Queue\EntityResolver' => \Illuminate\Database\Eloquent\QueueEntityResolver::class, + 'Illuminate\Contracts\Routing\ResponseFactory' => \Illuminate\Routing\ResponseFactory::class, + 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, + 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, + 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, + 'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class, + 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, + 'Laravel\Scout\EngineManager' => \Laravel\Scout\EngineManager::class, + 'League\OAuth2\Server\AuthorizationServer' => \League\OAuth2\Server\AuthorizationServer::class, + 'League\OAuth2\Server\ResourceServer' => \League\OAuth2\Server\ResourceServer::class, + 'NunoMaduro\Collision\Contracts\Adapters\Phpunit\Listener' => \NunoMaduro\Collision\Adapters\Phpunit\Listener::class, + 'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class, + 'Psr\Http\Message\ResponseInterface' => \Nyholm\Psr7\Response::class, + 'Psr\Http\Message\ServerRequestInterface' => \Nyholm\Psr7\ServerRequest::class, + 'Whoops\Handler\HandlerInterface' => \Facade\Ignition\ErrorPage\IgnitionWhoopsHandler::class, + 'auth' => \Illuminate\Auth\AuthManager::class, + 'auth.driver' => \Illuminate\Auth\SessionGuard::class, + 'auth.password' => \Illuminate\Auth\Passwords\PasswordBrokerManager::class, + 'auth.password.broker' => \Illuminate\Auth\Passwords\PasswordBroker::class, + 'blade.compiler' => \Illuminate\View\Compilers\BladeCompiler::class, + 'cache' => \Illuminate\Cache\CacheManager::class, + 'cache.store' => \Illuminate\Cache\Repository::class, + 'command.auth.resets.clear' => \Illuminate\Auth\Console\ClearResetsCommand::class, + 'command.cache.clear' => \Illuminate\Cache\Console\ClearCommand::class, + 'command.cache.forget' => \Illuminate\Cache\Console\ForgetCommand::class, + 'command.cache.table' => \Illuminate\Cache\Console\CacheTableCommand::class, + 'command.channel.make' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, + 'command.clear-compiled' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, + 'command.config.cache' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, + 'command.config.clear' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'command.console.make' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, + 'command.controller.make' => \Illuminate\Routing\Console\ControllerMakeCommand::class, + 'command.db.wipe' => \Illuminate\Database\Console\WipeCommand::class, + 'command.down' => \Illuminate\Foundation\Console\DownCommand::class, + 'command.environment' => \Illuminate\Foundation\Console\EnvironmentCommand::class, + 'command.event.cache' => \Illuminate\Foundation\Console\EventCacheCommand::class, + 'command.event.clear' => \Illuminate\Foundation\Console\EventClearCommand::class, + 'command.event.generate' => \Illuminate\Foundation\Console\EventGenerateCommand::class, + 'command.event.list' => \Illuminate\Foundation\Console\EventListCommand::class, + 'command.event.make' => \Illuminate\Foundation\Console\EventMakeCommand::class, + 'command.exception.make' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, + 'command.factory.make' => \Illuminate\Database\Console\Factories\FactoryMakeCommand::class, + 'command.flare:test' => \Facade\Ignition\Commands\TestCommand::class, + 'command.ide-helper.eloquent' => \Barryvdh\LaravelIdeHelper\Console\EloquentCommand::class, + 'command.ide-helper.generate' => \Barryvdh\LaravelIdeHelper\Console\GeneratorCommand::class, + 'command.ide-helper.meta' => \Barryvdh\LaravelIdeHelper\Console\MetaCommand::class, + 'command.ide-helper.models' => \Barryvdh\LaravelIdeHelper\Console\ModelsCommand::class, + 'command.job.make' => \Illuminate\Foundation\Console\JobMakeCommand::class, + 'command.key.generate' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, + 'command.listener.make' => \Illuminate\Foundation\Console\ListenerMakeCommand::class, + 'command.mail.make' => \Illuminate\Foundation\Console\MailMakeCommand::class, + 'command.make:solution' => \Facade\Ignition\Commands\SolutionMakeCommand::class, + 'command.middleware.make' => \Illuminate\Routing\Console\MiddlewareMakeCommand::class, + 'command.migrate' => \Illuminate\Database\Console\Migrations\MigrateCommand::class, + 'command.migrate.fresh' => \Illuminate\Database\Console\Migrations\FreshCommand::class, + 'command.migrate.install' => \Illuminate\Database\Console\Migrations\InstallCommand::class, + 'command.migrate.make' => \Illuminate\Database\Console\Migrations\MigrateMakeCommand::class, + 'command.migrate.refresh' => \Illuminate\Database\Console\Migrations\RefreshCommand::class, + 'command.migrate.reset' => \Illuminate\Database\Console\Migrations\ResetCommand::class, + 'command.migrate.rollback' => \Illuminate\Database\Console\Migrations\RollbackCommand::class, + 'command.migrate.status' => \Illuminate\Database\Console\Migrations\StatusCommand::class, + 'command.model.make' => \Illuminate\Foundation\Console\ModelMakeCommand::class, + 'command.notification.make' => \Illuminate\Foundation\Console\NotificationMakeCommand::class, + 'command.notification.table' => \Illuminate\Notifications\Console\NotificationTableCommand::class, + 'command.observer.make' => \Illuminate\Foundation\Console\ObserverMakeCommand::class, + 'command.optimize' => \Illuminate\Foundation\Console\OptimizeCommand::class, + 'command.optimize.clear' => \Illuminate\Foundation\Console\OptimizeClearCommand::class, + 'command.package.discover' => \Illuminate\Foundation\Console\PackageDiscoverCommand::class, + 'command.policy.make' => \Illuminate\Foundation\Console\PolicyMakeCommand::class, + 'command.preset' => \Illuminate\Foundation\Console\PresetCommand::class, + 'command.provider.make' => \Illuminate\Foundation\Console\ProviderMakeCommand::class, + 'command.queue.failed' => \Illuminate\Queue\Console\ListFailedCommand::class, + 'command.queue.failed-table' => \Illuminate\Queue\Console\FailedTableCommand::class, + 'command.queue.flush' => \Illuminate\Queue\Console\FlushFailedCommand::class, + 'command.queue.forget' => \Illuminate\Queue\Console\ForgetFailedCommand::class, + 'command.queue.listen' => \Illuminate\Queue\Console\ListenCommand::class, + 'command.queue.restart' => \Illuminate\Queue\Console\RestartCommand::class, + 'command.queue.retry' => \Illuminate\Queue\Console\RetryCommand::class, + 'command.queue.table' => \Illuminate\Queue\Console\TableCommand::class, + 'command.queue.work' => \Illuminate\Queue\Console\WorkCommand::class, + 'command.request.make' => \Illuminate\Foundation\Console\RequestMakeCommand::class, + 'command.resource.make' => \Illuminate\Foundation\Console\ResourceMakeCommand::class, + 'command.route.cache' => \Illuminate\Foundation\Console\RouteCacheCommand::class, + 'command.route.clear' => \Illuminate\Foundation\Console\RouteClearCommand::class, + 'command.route.list' => \Illuminate\Foundation\Console\RouteListCommand::class, + 'command.rule.make' => \Illuminate\Foundation\Console\RuleMakeCommand::class, + 'command.seed' => \Illuminate\Database\Console\Seeds\SeedCommand::class, + 'command.seeder.make' => \Illuminate\Database\Console\Seeds\SeederMakeCommand::class, + 'command.serve' => \Illuminate\Foundation\Console\ServeCommand::class, + 'command.session.table' => \Illuminate\Session\Console\SessionTableCommand::class, + 'command.storage.link' => \Illuminate\Foundation\Console\StorageLinkCommand::class, + 'command.test.make' => \Illuminate\Foundation\Console\TestMakeCommand::class, + 'command.tinker' => \Laravel\Tinker\Console\TinkerCommand::class, + 'command.up' => \Illuminate\Foundation\Console\UpCommand::class, + 'command.vendor.publish' => \Illuminate\Foundation\Console\VendorPublishCommand::class, + 'command.view.cache' => \Illuminate\Foundation\Console\ViewCacheCommand::class, + 'command.view.clear' => \Illuminate\Foundation\Console\ViewClearCommand::class, + 'composer' => \Illuminate\Support\Composer::class, + 'cookie' => \Illuminate\Cookie\CookieJar::class, + 'db' => \Illuminate\Database\DatabaseManager::class, + 'db.connection' => \Illuminate\Database\MySqlConnection::class, + 'db.factory' => \Illuminate\Database\Connectors\ConnectionFactory::class, + 'encrypter' => \Illuminate\Encryption\Encrypter::class, + 'events' => \Illuminate\Events\Dispatcher::class, + 'files' => \Illuminate\Filesystem\Filesystem::class, + 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, + 'filesystem.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'flare.client' => \Facade\FlareClient\Flare::class, + 'flare.http' => \Facade\FlareClient\Http\Client::class, + 'flare.logger' => \Monolog\Logger::class, + 'hash' => \Illuminate\Hashing\HashManager::class, + 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, + 'image' => \Intervention\Image\ImageManager::class, + 'log' => \Illuminate\Log\LogManager::class, + 'mailer' => \Illuminate\Mail\Mailer::class, + 'memcached.connector' => \Illuminate\Cache\MemcachedConnector::class, + 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, + 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, + 'migrator' => \Illuminate\Database\Migrations\Migrator::class, + 'queue' => \Illuminate\Queue\QueueManager::class, + 'queue.connection' => \Illuminate\Queue\SyncQueue::class, + 'queue.failer' => \Illuminate\Queue\Failed\DatabaseFailedJobProvider::class, + 'queue.listener' => \Illuminate\Queue\Listener::class, + 'queue.worker' => \Illuminate\Queue\Worker::class, + 'redirect' => \Illuminate\Routing\Redirector::class, + 'redis' => \Illuminate\Redis\RedisManager::class, + 'router' => \Illuminate\Routing\Router::class, + 'session' => \Illuminate\Session\SessionManager::class, + 'session.store' => \Illuminate\Session\Store::class, + 'swift.mailer' => \Swift_Mailer::class, + 'swift.transport' => \Illuminate\Mail\TransportManager::class, + 'translation.loader' => \Illuminate\Translation\FileLoader::class, + 'translator' => \Illuminate\Translation\Translator::class, + 'url' => \Illuminate\Routing\UrlGenerator::class, + 'validation.presence' => \Illuminate\Validation\DatabasePresenceVerifier::class, + 'view' => \Illuminate\View\Factory::class, + 'view.engine.resolver' => \Illuminate\View\Engines\EngineResolver::class, + 'view.finder' => \Illuminate\View\FileViewFinder::class, + ])); + override(\app(0), map([ + '' => '@', + 'Asm89\Stack\CorsService' => \Asm89\Stack\CorsService::class, + 'Facade\IgnitionContracts\SolutionProviderRepository' => \Facade\Ignition\SolutionProviders\SolutionProviderRepository::class, + 'Facade\Ignition\DumpRecorder\DumpRecorder' => \Facade\Ignition\DumpRecorder\DumpRecorder::class, + 'Facade\Ignition\ErrorPage\Renderer' => \Facade\Ignition\ErrorPage\Renderer::class, + 'Facade\Ignition\IgnitionConfig' => \Facade\Ignition\IgnitionConfig::class, + 'Facade\Ignition\LogRecorder\LogRecorder' => \Facade\Ignition\LogRecorder\LogRecorder::class, + 'Facade\Ignition\QueryRecorder\QueryRecorder' => \Facade\Ignition\QueryRecorder\QueryRecorder::class, + 'Illuminate\Broadcasting\BroadcastManager' => \Illuminate\Broadcasting\BroadcastManager::class, + 'Illuminate\Bus\Dispatcher' => \Illuminate\Bus\Dispatcher::class, + 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, + 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, + 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, + 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, + 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\LogBroadcaster::class, + 'Illuminate\Contracts\Console\Kernel' => \App\Console\Kernel::class, + 'Illuminate\Contracts\Debug\ExceptionHandler' => \NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler::class, + 'Illuminate\Contracts\Http\Kernel' => \App\Http\Kernel::class, + 'Illuminate\Contracts\Pipeline\Hub' => \Illuminate\Pipeline\Hub::class, + 'Illuminate\Contracts\Queue\EntityResolver' => \Illuminate\Database\Eloquent\QueueEntityResolver::class, + 'Illuminate\Contracts\Routing\ResponseFactory' => \Illuminate\Routing\ResponseFactory::class, + 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, + 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, + 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, + 'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class, + 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, + 'Laravel\Scout\EngineManager' => \Laravel\Scout\EngineManager::class, + 'League\OAuth2\Server\AuthorizationServer' => \League\OAuth2\Server\AuthorizationServer::class, + 'League\OAuth2\Server\ResourceServer' => \League\OAuth2\Server\ResourceServer::class, + 'NunoMaduro\Collision\Contracts\Adapters\Phpunit\Listener' => \NunoMaduro\Collision\Adapters\Phpunit\Listener::class, + 'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class, + 'Psr\Http\Message\ResponseInterface' => \Nyholm\Psr7\Response::class, + 'Psr\Http\Message\ServerRequestInterface' => \Nyholm\Psr7\ServerRequest::class, + 'Whoops\Handler\HandlerInterface' => \Facade\Ignition\ErrorPage\IgnitionWhoopsHandler::class, + 'auth' => \Illuminate\Auth\AuthManager::class, + 'auth.driver' => \Illuminate\Auth\SessionGuard::class, + 'auth.password' => \Illuminate\Auth\Passwords\PasswordBrokerManager::class, + 'auth.password.broker' => \Illuminate\Auth\Passwords\PasswordBroker::class, + 'blade.compiler' => \Illuminate\View\Compilers\BladeCompiler::class, + 'cache' => \Illuminate\Cache\CacheManager::class, + 'cache.store' => \Illuminate\Cache\Repository::class, + 'command.auth.resets.clear' => \Illuminate\Auth\Console\ClearResetsCommand::class, + 'command.cache.clear' => \Illuminate\Cache\Console\ClearCommand::class, + 'command.cache.forget' => \Illuminate\Cache\Console\ForgetCommand::class, + 'command.cache.table' => \Illuminate\Cache\Console\CacheTableCommand::class, + 'command.channel.make' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, + 'command.clear-compiled' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, + 'command.config.cache' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, + 'command.config.clear' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'command.console.make' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, + 'command.controller.make' => \Illuminate\Routing\Console\ControllerMakeCommand::class, + 'command.db.wipe' => \Illuminate\Database\Console\WipeCommand::class, + 'command.down' => \Illuminate\Foundation\Console\DownCommand::class, + 'command.environment' => \Illuminate\Foundation\Console\EnvironmentCommand::class, + 'command.event.cache' => \Illuminate\Foundation\Console\EventCacheCommand::class, + 'command.event.clear' => \Illuminate\Foundation\Console\EventClearCommand::class, + 'command.event.generate' => \Illuminate\Foundation\Console\EventGenerateCommand::class, + 'command.event.list' => \Illuminate\Foundation\Console\EventListCommand::class, + 'command.event.make' => \Illuminate\Foundation\Console\EventMakeCommand::class, + 'command.exception.make' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, + 'command.factory.make' => \Illuminate\Database\Console\Factories\FactoryMakeCommand::class, + 'command.flare:test' => \Facade\Ignition\Commands\TestCommand::class, + 'command.ide-helper.eloquent' => \Barryvdh\LaravelIdeHelper\Console\EloquentCommand::class, + 'command.ide-helper.generate' => \Barryvdh\LaravelIdeHelper\Console\GeneratorCommand::class, + 'command.ide-helper.meta' => \Barryvdh\LaravelIdeHelper\Console\MetaCommand::class, + 'command.ide-helper.models' => \Barryvdh\LaravelIdeHelper\Console\ModelsCommand::class, + 'command.job.make' => \Illuminate\Foundation\Console\JobMakeCommand::class, + 'command.key.generate' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, + 'command.listener.make' => \Illuminate\Foundation\Console\ListenerMakeCommand::class, + 'command.mail.make' => \Illuminate\Foundation\Console\MailMakeCommand::class, + 'command.make:solution' => \Facade\Ignition\Commands\SolutionMakeCommand::class, + 'command.middleware.make' => \Illuminate\Routing\Console\MiddlewareMakeCommand::class, + 'command.migrate' => \Illuminate\Database\Console\Migrations\MigrateCommand::class, + 'command.migrate.fresh' => \Illuminate\Database\Console\Migrations\FreshCommand::class, + 'command.migrate.install' => \Illuminate\Database\Console\Migrations\InstallCommand::class, + 'command.migrate.make' => \Illuminate\Database\Console\Migrations\MigrateMakeCommand::class, + 'command.migrate.refresh' => \Illuminate\Database\Console\Migrations\RefreshCommand::class, + 'command.migrate.reset' => \Illuminate\Database\Console\Migrations\ResetCommand::class, + 'command.migrate.rollback' => \Illuminate\Database\Console\Migrations\RollbackCommand::class, + 'command.migrate.status' => \Illuminate\Database\Console\Migrations\StatusCommand::class, + 'command.model.make' => \Illuminate\Foundation\Console\ModelMakeCommand::class, + 'command.notification.make' => \Illuminate\Foundation\Console\NotificationMakeCommand::class, + 'command.notification.table' => \Illuminate\Notifications\Console\NotificationTableCommand::class, + 'command.observer.make' => \Illuminate\Foundation\Console\ObserverMakeCommand::class, + 'command.optimize' => \Illuminate\Foundation\Console\OptimizeCommand::class, + 'command.optimize.clear' => \Illuminate\Foundation\Console\OptimizeClearCommand::class, + 'command.package.discover' => \Illuminate\Foundation\Console\PackageDiscoverCommand::class, + 'command.policy.make' => \Illuminate\Foundation\Console\PolicyMakeCommand::class, + 'command.preset' => \Illuminate\Foundation\Console\PresetCommand::class, + 'command.provider.make' => \Illuminate\Foundation\Console\ProviderMakeCommand::class, + 'command.queue.failed' => \Illuminate\Queue\Console\ListFailedCommand::class, + 'command.queue.failed-table' => \Illuminate\Queue\Console\FailedTableCommand::class, + 'command.queue.flush' => \Illuminate\Queue\Console\FlushFailedCommand::class, + 'command.queue.forget' => \Illuminate\Queue\Console\ForgetFailedCommand::class, + 'command.queue.listen' => \Illuminate\Queue\Console\ListenCommand::class, + 'command.queue.restart' => \Illuminate\Queue\Console\RestartCommand::class, + 'command.queue.retry' => \Illuminate\Queue\Console\RetryCommand::class, + 'command.queue.table' => \Illuminate\Queue\Console\TableCommand::class, + 'command.queue.work' => \Illuminate\Queue\Console\WorkCommand::class, + 'command.request.make' => \Illuminate\Foundation\Console\RequestMakeCommand::class, + 'command.resource.make' => \Illuminate\Foundation\Console\ResourceMakeCommand::class, + 'command.route.cache' => \Illuminate\Foundation\Console\RouteCacheCommand::class, + 'command.route.clear' => \Illuminate\Foundation\Console\RouteClearCommand::class, + 'command.route.list' => \Illuminate\Foundation\Console\RouteListCommand::class, + 'command.rule.make' => \Illuminate\Foundation\Console\RuleMakeCommand::class, + 'command.seed' => \Illuminate\Database\Console\Seeds\SeedCommand::class, + 'command.seeder.make' => \Illuminate\Database\Console\Seeds\SeederMakeCommand::class, + 'command.serve' => \Illuminate\Foundation\Console\ServeCommand::class, + 'command.session.table' => \Illuminate\Session\Console\SessionTableCommand::class, + 'command.storage.link' => \Illuminate\Foundation\Console\StorageLinkCommand::class, + 'command.test.make' => \Illuminate\Foundation\Console\TestMakeCommand::class, + 'command.tinker' => \Laravel\Tinker\Console\TinkerCommand::class, + 'command.up' => \Illuminate\Foundation\Console\UpCommand::class, + 'command.vendor.publish' => \Illuminate\Foundation\Console\VendorPublishCommand::class, + 'command.view.cache' => \Illuminate\Foundation\Console\ViewCacheCommand::class, + 'command.view.clear' => \Illuminate\Foundation\Console\ViewClearCommand::class, + 'composer' => \Illuminate\Support\Composer::class, + 'cookie' => \Illuminate\Cookie\CookieJar::class, + 'db' => \Illuminate\Database\DatabaseManager::class, + 'db.connection' => \Illuminate\Database\MySqlConnection::class, + 'db.factory' => \Illuminate\Database\Connectors\ConnectionFactory::class, + 'encrypter' => \Illuminate\Encryption\Encrypter::class, + 'events' => \Illuminate\Events\Dispatcher::class, + 'files' => \Illuminate\Filesystem\Filesystem::class, + 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, + 'filesystem.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'flare.client' => \Facade\FlareClient\Flare::class, + 'flare.http' => \Facade\FlareClient\Http\Client::class, + 'flare.logger' => \Monolog\Logger::class, + 'hash' => \Illuminate\Hashing\HashManager::class, + 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, + 'image' => \Intervention\Image\ImageManager::class, + 'log' => \Illuminate\Log\LogManager::class, + 'mailer' => \Illuminate\Mail\Mailer::class, + 'memcached.connector' => \Illuminate\Cache\MemcachedConnector::class, + 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, + 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, + 'migrator' => \Illuminate\Database\Migrations\Migrator::class, + 'queue' => \Illuminate\Queue\QueueManager::class, + 'queue.connection' => \Illuminate\Queue\SyncQueue::class, + 'queue.failer' => \Illuminate\Queue\Failed\DatabaseFailedJobProvider::class, + 'queue.listener' => \Illuminate\Queue\Listener::class, + 'queue.worker' => \Illuminate\Queue\Worker::class, + 'redirect' => \Illuminate\Routing\Redirector::class, + 'redis' => \Illuminate\Redis\RedisManager::class, + 'router' => \Illuminate\Routing\Router::class, + 'session' => \Illuminate\Session\SessionManager::class, + 'session.store' => \Illuminate\Session\Store::class, + 'swift.mailer' => \Swift_Mailer::class, + 'swift.transport' => \Illuminate\Mail\TransportManager::class, + 'translation.loader' => \Illuminate\Translation\FileLoader::class, + 'translator' => \Illuminate\Translation\Translator::class, + 'url' => \Illuminate\Routing\UrlGenerator::class, + 'validation.presence' => \Illuminate\Validation\DatabasePresenceVerifier::class, + 'view' => \Illuminate\View\Factory::class, + 'view.engine.resolver' => \Illuminate\View\Engines\EngineResolver::class, + 'view.finder' => \Illuminate\View\FileViewFinder::class, + ])); + override(\resolve(0), map([ + '' => '@', + 'Asm89\Stack\CorsService' => \Asm89\Stack\CorsService::class, + 'Facade\IgnitionContracts\SolutionProviderRepository' => \Facade\Ignition\SolutionProviders\SolutionProviderRepository::class, + 'Facade\Ignition\DumpRecorder\DumpRecorder' => \Facade\Ignition\DumpRecorder\DumpRecorder::class, + 'Facade\Ignition\ErrorPage\Renderer' => \Facade\Ignition\ErrorPage\Renderer::class, + 'Facade\Ignition\IgnitionConfig' => \Facade\Ignition\IgnitionConfig::class, + 'Facade\Ignition\LogRecorder\LogRecorder' => \Facade\Ignition\LogRecorder\LogRecorder::class, + 'Facade\Ignition\QueryRecorder\QueryRecorder' => \Facade\Ignition\QueryRecorder\QueryRecorder::class, + 'Illuminate\Broadcasting\BroadcastManager' => \Illuminate\Broadcasting\BroadcastManager::class, + 'Illuminate\Bus\Dispatcher' => \Illuminate\Bus\Dispatcher::class, + 'Illuminate\Console\Scheduling\Schedule' => \Illuminate\Console\Scheduling\Schedule::class, + 'Illuminate\Console\Scheduling\ScheduleFinishCommand' => \Illuminate\Console\Scheduling\ScheduleFinishCommand::class, + 'Illuminate\Console\Scheduling\ScheduleRunCommand' => \Illuminate\Console\Scheduling\ScheduleRunCommand::class, + 'Illuminate\Contracts\Auth\Access\Gate' => \Illuminate\Auth\Access\Gate::class, + 'Illuminate\Contracts\Broadcasting\Broadcaster' => \Illuminate\Broadcasting\Broadcasters\LogBroadcaster::class, + 'Illuminate\Contracts\Console\Kernel' => \App\Console\Kernel::class, + 'Illuminate\Contracts\Debug\ExceptionHandler' => \NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler::class, + 'Illuminate\Contracts\Http\Kernel' => \App\Http\Kernel::class, + 'Illuminate\Contracts\Pipeline\Hub' => \Illuminate\Pipeline\Hub::class, + 'Illuminate\Contracts\Queue\EntityResolver' => \Illuminate\Database\Eloquent\QueueEntityResolver::class, + 'Illuminate\Contracts\Routing\ResponseFactory' => \Illuminate\Routing\ResponseFactory::class, + 'Illuminate\Foundation\Mix' => \Illuminate\Foundation\Mix::class, + 'Illuminate\Mail\Markdown' => \Illuminate\Mail\Markdown::class, + 'Illuminate\Notifications\ChannelManager' => \Illuminate\Notifications\ChannelManager::class, + 'Illuminate\Routing\Contracts\ControllerDispatcher' => \Illuminate\Routing\ControllerDispatcher::class, + 'Illuminate\Session\Middleware\StartSession' => \Illuminate\Session\Middleware\StartSession::class, + 'Laravel\Scout\EngineManager' => \Laravel\Scout\EngineManager::class, + 'League\OAuth2\Server\AuthorizationServer' => \League\OAuth2\Server\AuthorizationServer::class, + 'League\OAuth2\Server\ResourceServer' => \League\OAuth2\Server\ResourceServer::class, + 'NunoMaduro\Collision\Contracts\Adapters\Phpunit\Listener' => \NunoMaduro\Collision\Adapters\Phpunit\Listener::class, + 'NunoMaduro\Collision\Contracts\Provider' => \NunoMaduro\Collision\Provider::class, + 'Psr\Http\Message\ResponseInterface' => \Nyholm\Psr7\Response::class, + 'Psr\Http\Message\ServerRequestInterface' => \Nyholm\Psr7\ServerRequest::class, + 'Whoops\Handler\HandlerInterface' => \Facade\Ignition\ErrorPage\IgnitionWhoopsHandler::class, + 'auth' => \Illuminate\Auth\AuthManager::class, + 'auth.driver' => \Illuminate\Auth\SessionGuard::class, + 'auth.password' => \Illuminate\Auth\Passwords\PasswordBrokerManager::class, + 'auth.password.broker' => \Illuminate\Auth\Passwords\PasswordBroker::class, + 'blade.compiler' => \Illuminate\View\Compilers\BladeCompiler::class, + 'cache' => \Illuminate\Cache\CacheManager::class, + 'cache.store' => \Illuminate\Cache\Repository::class, + 'command.auth.resets.clear' => \Illuminate\Auth\Console\ClearResetsCommand::class, + 'command.cache.clear' => \Illuminate\Cache\Console\ClearCommand::class, + 'command.cache.forget' => \Illuminate\Cache\Console\ForgetCommand::class, + 'command.cache.table' => \Illuminate\Cache\Console\CacheTableCommand::class, + 'command.channel.make' => \Illuminate\Foundation\Console\ChannelMakeCommand::class, + 'command.clear-compiled' => \Illuminate\Foundation\Console\ClearCompiledCommand::class, + 'command.config.cache' => \Illuminate\Foundation\Console\ConfigCacheCommand::class, + 'command.config.clear' => \Illuminate\Foundation\Console\ConfigClearCommand::class, + 'command.console.make' => \Illuminate\Foundation\Console\ConsoleMakeCommand::class, + 'command.controller.make' => \Illuminate\Routing\Console\ControllerMakeCommand::class, + 'command.db.wipe' => \Illuminate\Database\Console\WipeCommand::class, + 'command.down' => \Illuminate\Foundation\Console\DownCommand::class, + 'command.environment' => \Illuminate\Foundation\Console\EnvironmentCommand::class, + 'command.event.cache' => \Illuminate\Foundation\Console\EventCacheCommand::class, + 'command.event.clear' => \Illuminate\Foundation\Console\EventClearCommand::class, + 'command.event.generate' => \Illuminate\Foundation\Console\EventGenerateCommand::class, + 'command.event.list' => \Illuminate\Foundation\Console\EventListCommand::class, + 'command.event.make' => \Illuminate\Foundation\Console\EventMakeCommand::class, + 'command.exception.make' => \Illuminate\Foundation\Console\ExceptionMakeCommand::class, + 'command.factory.make' => \Illuminate\Database\Console\Factories\FactoryMakeCommand::class, + 'command.flare:test' => \Facade\Ignition\Commands\TestCommand::class, + 'command.ide-helper.eloquent' => \Barryvdh\LaravelIdeHelper\Console\EloquentCommand::class, + 'command.ide-helper.generate' => \Barryvdh\LaravelIdeHelper\Console\GeneratorCommand::class, + 'command.ide-helper.meta' => \Barryvdh\LaravelIdeHelper\Console\MetaCommand::class, + 'command.ide-helper.models' => \Barryvdh\LaravelIdeHelper\Console\ModelsCommand::class, + 'command.job.make' => \Illuminate\Foundation\Console\JobMakeCommand::class, + 'command.key.generate' => \Illuminate\Foundation\Console\KeyGenerateCommand::class, + 'command.listener.make' => \Illuminate\Foundation\Console\ListenerMakeCommand::class, + 'command.mail.make' => \Illuminate\Foundation\Console\MailMakeCommand::class, + 'command.make:solution' => \Facade\Ignition\Commands\SolutionMakeCommand::class, + 'command.middleware.make' => \Illuminate\Routing\Console\MiddlewareMakeCommand::class, + 'command.migrate' => \Illuminate\Database\Console\Migrations\MigrateCommand::class, + 'command.migrate.fresh' => \Illuminate\Database\Console\Migrations\FreshCommand::class, + 'command.migrate.install' => \Illuminate\Database\Console\Migrations\InstallCommand::class, + 'command.migrate.make' => \Illuminate\Database\Console\Migrations\MigrateMakeCommand::class, + 'command.migrate.refresh' => \Illuminate\Database\Console\Migrations\RefreshCommand::class, + 'command.migrate.reset' => \Illuminate\Database\Console\Migrations\ResetCommand::class, + 'command.migrate.rollback' => \Illuminate\Database\Console\Migrations\RollbackCommand::class, + 'command.migrate.status' => \Illuminate\Database\Console\Migrations\StatusCommand::class, + 'command.model.make' => \Illuminate\Foundation\Console\ModelMakeCommand::class, + 'command.notification.make' => \Illuminate\Foundation\Console\NotificationMakeCommand::class, + 'command.notification.table' => \Illuminate\Notifications\Console\NotificationTableCommand::class, + 'command.observer.make' => \Illuminate\Foundation\Console\ObserverMakeCommand::class, + 'command.optimize' => \Illuminate\Foundation\Console\OptimizeCommand::class, + 'command.optimize.clear' => \Illuminate\Foundation\Console\OptimizeClearCommand::class, + 'command.package.discover' => \Illuminate\Foundation\Console\PackageDiscoverCommand::class, + 'command.policy.make' => \Illuminate\Foundation\Console\PolicyMakeCommand::class, + 'command.preset' => \Illuminate\Foundation\Console\PresetCommand::class, + 'command.provider.make' => \Illuminate\Foundation\Console\ProviderMakeCommand::class, + 'command.queue.failed' => \Illuminate\Queue\Console\ListFailedCommand::class, + 'command.queue.failed-table' => \Illuminate\Queue\Console\FailedTableCommand::class, + 'command.queue.flush' => \Illuminate\Queue\Console\FlushFailedCommand::class, + 'command.queue.forget' => \Illuminate\Queue\Console\ForgetFailedCommand::class, + 'command.queue.listen' => \Illuminate\Queue\Console\ListenCommand::class, + 'command.queue.restart' => \Illuminate\Queue\Console\RestartCommand::class, + 'command.queue.retry' => \Illuminate\Queue\Console\RetryCommand::class, + 'command.queue.table' => \Illuminate\Queue\Console\TableCommand::class, + 'command.queue.work' => \Illuminate\Queue\Console\WorkCommand::class, + 'command.request.make' => \Illuminate\Foundation\Console\RequestMakeCommand::class, + 'command.resource.make' => \Illuminate\Foundation\Console\ResourceMakeCommand::class, + 'command.route.cache' => \Illuminate\Foundation\Console\RouteCacheCommand::class, + 'command.route.clear' => \Illuminate\Foundation\Console\RouteClearCommand::class, + 'command.route.list' => \Illuminate\Foundation\Console\RouteListCommand::class, + 'command.rule.make' => \Illuminate\Foundation\Console\RuleMakeCommand::class, + 'command.seed' => \Illuminate\Database\Console\Seeds\SeedCommand::class, + 'command.seeder.make' => \Illuminate\Database\Console\Seeds\SeederMakeCommand::class, + 'command.serve' => \Illuminate\Foundation\Console\ServeCommand::class, + 'command.session.table' => \Illuminate\Session\Console\SessionTableCommand::class, + 'command.storage.link' => \Illuminate\Foundation\Console\StorageLinkCommand::class, + 'command.test.make' => \Illuminate\Foundation\Console\TestMakeCommand::class, + 'command.tinker' => \Laravel\Tinker\Console\TinkerCommand::class, + 'command.up' => \Illuminate\Foundation\Console\UpCommand::class, + 'command.vendor.publish' => \Illuminate\Foundation\Console\VendorPublishCommand::class, + 'command.view.cache' => \Illuminate\Foundation\Console\ViewCacheCommand::class, + 'command.view.clear' => \Illuminate\Foundation\Console\ViewClearCommand::class, + 'composer' => \Illuminate\Support\Composer::class, + 'cookie' => \Illuminate\Cookie\CookieJar::class, + 'db' => \Illuminate\Database\DatabaseManager::class, + 'db.connection' => \Illuminate\Database\MySqlConnection::class, + 'db.factory' => \Illuminate\Database\Connectors\ConnectionFactory::class, + 'encrypter' => \Illuminate\Encryption\Encrypter::class, + 'events' => \Illuminate\Events\Dispatcher::class, + 'files' => \Illuminate\Filesystem\Filesystem::class, + 'filesystem' => \Illuminate\Filesystem\FilesystemManager::class, + 'filesystem.disk' => \Illuminate\Filesystem\FilesystemAdapter::class, + 'flare.client' => \Facade\FlareClient\Flare::class, + 'flare.http' => \Facade\FlareClient\Http\Client::class, + 'flare.logger' => \Monolog\Logger::class, + 'hash' => \Illuminate\Hashing\HashManager::class, + 'hash.driver' => \Illuminate\Hashing\BcryptHasher::class, + 'image' => \Intervention\Image\ImageManager::class, + 'log' => \Illuminate\Log\LogManager::class, + 'mailer' => \Illuminate\Mail\Mailer::class, + 'memcached.connector' => \Illuminate\Cache\MemcachedConnector::class, + 'migration.creator' => \Illuminate\Database\Migrations\MigrationCreator::class, + 'migration.repository' => \Illuminate\Database\Migrations\DatabaseMigrationRepository::class, + 'migrator' => \Illuminate\Database\Migrations\Migrator::class, + 'queue' => \Illuminate\Queue\QueueManager::class, + 'queue.connection' => \Illuminate\Queue\SyncQueue::class, + 'queue.failer' => \Illuminate\Queue\Failed\DatabaseFailedJobProvider::class, + 'queue.listener' => \Illuminate\Queue\Listener::class, + 'queue.worker' => \Illuminate\Queue\Worker::class, + 'redirect' => \Illuminate\Routing\Redirector::class, + 'redis' => \Illuminate\Redis\RedisManager::class, + 'router' => \Illuminate\Routing\Router::class, + 'session' => \Illuminate\Session\SessionManager::class, + 'session.store' => \Illuminate\Session\Store::class, + 'swift.mailer' => \Swift_Mailer::class, + 'swift.transport' => \Illuminate\Mail\TransportManager::class, + 'translation.loader' => \Illuminate\Translation\FileLoader::class, + 'translator' => \Illuminate\Translation\Translator::class, + 'url' => \Illuminate\Routing\UrlGenerator::class, + 'validation.presence' => \Illuminate\Validation\DatabasePresenceVerifier::class, + 'view' => \Illuminate\View\Factory::class, + 'view.engine.resolver' => \Illuminate\View\Engines\EngineResolver::class, + 'view.finder' => \Illuminate\View\FileViewFinder::class, + ])); + + + override(\Illuminate\Support\Arr::add(0), type(0)); + override(\Illuminate\Support\Arr::except(0), type(0)); + override(\Illuminate\Support\Arr::first(0), elementType(0)); + override(\Illuminate\Support\Arr::last(0), elementType(0)); + override(\Illuminate\Support\Arr::get(0), elementType(0)); + override(\Illuminate\Support\Arr::only(0), type(0)); + override(\Illuminate\Support\Arr::prepend(0), type(0)); + override(\Illuminate\Support\Arr::pull(0), elementType(0)); + override(\Illuminate\Support\Arr::set(0), type(0)); + override(\Illuminate\Support\Arr::shuffle(0), type(0)); + override(\Illuminate\Support\Arr::sort(0), type(0)); + override(\Illuminate\Support\Arr::sortRecursive(0), type(0)); + override(\Illuminate\Support\Arr::where(0), type(0)); + override(\array_add(0), type(0)); + override(\array_except(0), type(0)); + override(\array_first(0), elementType(0)); + override(\array_last(0), elementType(0)); + override(\array_get(0), elementType(0)); + override(\array_only(0), type(0)); + override(\array_prepend(0), type(0)); + override(\array_pull(0), elementType(0)); + override(\array_set(0), type(0)); + override(\array_sort(0), type(0)); + override(\array_sort_recursive(0), type(0)); + override(\array_where(0), type(0)); + override(\head(0), elementType(0)); + override(\last(0), elementType(0)); + override(\with(0), type(0)); + override(\tap(0), type(0)); + +} diff --git a/.rnd b/.rnd index f59618e2..21b3d578 100644 Binary files a/.rnd and b/.rnd differ diff --git a/README.md b/README.md index 3317f3ca..52f56e2b 100644 --- a/README.md +++ b/README.md @@ -1,50 +1,45 @@ -## VueFileManager - Make your own Private Cloud with VueFileManager client powered by Laravel and Vue -For installation, please read [Online Documentation](https://vuefilemanager.hi5ve.digital/docs/). -![VueFileManager](https://vuefilemanager.hi5ve.digital/assets/images/vue-file-manager-in-devices-dark.png) +### Installation setup -**Features:** +Run these commands to install vendors: +``` +composer install +``` +``` +npm install +``` -### Drag & Drop -Reorder your files easily, just drag your folder or file and drop to another folder. +Setup your database in .env and run this command: +``` +php artisan setup:prod +``` -### List & Grid Preview -You can change from two types of file and folder previews. Show your items in list or grid preview. +It automatically: +* Migrate database +* Generate Application key +* Create Passport Encryption keys +* Create Password grant client +* Create Personal access client -### Background Uploading -Your files is uploaded in the background, so nothing will stop you from working with the files. +Then, copy generated password grant client `Client ID`, `Client secret` and paste it to .env files here: +``` +PASSPORT_CLIENT_ID= +PASSPORT_CLIENT_SECRET= +``` +For sending forgoten password request via email, fill your mail driver in .env -### File & Folder searching -Search your items quickly, from anywhere in the app you are. +### Run Application +To start server on your localhost, run this command +``` +php artisan serve +``` -### Custom Context Menu -Quick actions next to your file on your right click. +To compiles and hot-reloads for development, run this command +``` +npm run hot +``` -### File Details -Get preview of your files quickli in right panel next to your files. - -### Improved Mobile User Experience -Need to quickly upload or get your files on your smartphone? It’s not problem. - -### Laravel PHP Framework -You don't have to create your own API for VueFileManager. You can use our pre-build backend in Laravel PHP Framework. - -### Vue.js -Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web. We ❤️ Vue. - -### Online Documentation -Don’t worry, we will explain all things you should know to successfully start your VueFileManager instance. - -### Night Mode -We add native support for dark mode. Now, it’s easy for your eyes to work with your files at night. - -### User Login & Registration -Let user create their own account with own storage. All these accounts is protected by user login. - -### Integrated Trash -Did you delete something by accident or do you want your deleted files back? Restore your files from trash. - -### Navigation Sidebar -Navigate through your files easily. Add you favourites folder or look on your latest uploads. - -### Storage Limits -Set storage limits to your user account to sure, you never exceed your storage limits. \ No newline at end of file +To compiles for production, run this command +``` +npm run prod +``` +That's all, happy coding! :tada: :tada: :tada: \ No newline at end of file diff --git a/_ide_helper.php b/_ide_helper.php new file mode 100644 index 00000000..099bb772 --- /dev/null +++ b/_ide_helper.php @@ -0,0 +1,18211 @@ + + * @see https://github.com/barryvdh/laravel-ide-helper + */ + +namespace Illuminate\Support\Facades { + + /** + * + * + * @see \Illuminate\Contracts\Foundation\Application + */ + class App { + + /** + * Get the version number of the application. + * + * @return string + * @static + */ + public static function version() + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->version(); + } + + /** + * Run the given array of bootstrap classes. + * + * @param string[] $bootstrappers + * @return void + * @static + */ + public static function bootstrapWith($bootstrappers) + { + /** @var \Illuminate\Foundation\Application $instance */ + $instance->bootstrapWith($bootstrappers); + } + + /** + * Register a callback to run after loading the environment. + * + * @param \Closure $callback + * @return void + * @static + */ + public static function afterLoadingEnvironment($callback) + { + /** @var \Illuminate\Foundation\Application $instance */ + $instance->afterLoadingEnvironment($callback); + } + + /** + * Register a callback to run before a bootstrapper. + * + * @param string $bootstrapper + * @param \Closure $callback + * @return void + * @static + */ + public static function beforeBootstrapping($bootstrapper, $callback) + { + /** @var \Illuminate\Foundation\Application $instance */ + $instance->beforeBootstrapping($bootstrapper, $callback); + } + + /** + * Register a callback to run after a bootstrapper. + * + * @param string $bootstrapper + * @param \Closure $callback + * @return void + * @static + */ + public static function afterBootstrapping($bootstrapper, $callback) + { + /** @var \Illuminate\Foundation\Application $instance */ + $instance->afterBootstrapping($bootstrapper, $callback); + } + + /** + * Determine if the application has been bootstrapped before. + * + * @return bool + * @static + */ + public static function hasBeenBootstrapped() + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->hasBeenBootstrapped(); + } + + /** + * Set the base path for the application. + * + * @param string $basePath + * @return \Illuminate\Foundation\Application + * @static + */ + public static function setBasePath($basePath) + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->setBasePath($basePath); + } + + /** + * Get the path to the application "app" directory. + * + * @param string $path + * @return string + * @static + */ + public static function path($path = '') + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->path($path); + } + + /** + * Set the application directory. + * + * @param string $path + * @return \Illuminate\Foundation\Application + * @static + */ + public static function useAppPath($path) + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->useAppPath($path); + } + + /** + * Get the base path of the Laravel installation. + * + * @param string $path Optionally, a path to append to the base path + * @return string + * @static + */ + public static function basePath($path = '') + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->basePath($path); + } + + /** + * Get the path to the bootstrap directory. + * + * @param string $path Optionally, a path to append to the bootstrap path + * @return string + * @static + */ + public static function bootstrapPath($path = '') + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->bootstrapPath($path); + } + + /** + * Get the path to the application configuration files. + * + * @param string $path Optionally, a path to append to the config path + * @return string + * @static + */ + public static function configPath($path = '') + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->configPath($path); + } + + /** + * Get the path to the database directory. + * + * @param string $path Optionally, a path to append to the database path + * @return string + * @static + */ + public static function databasePath($path = '') + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->databasePath($path); + } + + /** + * Set the database directory. + * + * @param string $path + * @return \Illuminate\Foundation\Application + * @static + */ + public static function useDatabasePath($path) + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->useDatabasePath($path); + } + + /** + * Get the path to the language files. + * + * @return string + * @static + */ + public static function langPath() + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->langPath(); + } + + /** + * Get the path to the public / web directory. + * + * @return string + * @static + */ + public static function publicPath() + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->publicPath(); + } + + /** + * Get the path to the storage directory. + * + * @return string + * @static + */ + public static function storagePath() + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->storagePath(); + } + + /** + * Set the storage directory. + * + * @param string $path + * @return \Illuminate\Foundation\Application + * @static + */ + public static function useStoragePath($path) + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->useStoragePath($path); + } + + /** + * Get the path to the resources directory. + * + * @param string $path + * @return string + * @static + */ + public static function resourcePath($path = '') + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->resourcePath($path); + } + + /** + * Get the path to the environment file directory. + * + * @return string + * @static + */ + public static function environmentPath() + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->environmentPath(); + } + + /** + * Set the directory for the environment file. + * + * @param string $path + * @return \Illuminate\Foundation\Application + * @static + */ + public static function useEnvironmentPath($path) + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->useEnvironmentPath($path); + } + + /** + * Set the environment file to be loaded during bootstrapping. + * + * @param string $file + * @return \Illuminate\Foundation\Application + * @static + */ + public static function loadEnvironmentFrom($file) + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->loadEnvironmentFrom($file); + } + + /** + * Get the environment file the application is using. + * + * @return string + * @static + */ + public static function environmentFile() + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->environmentFile(); + } + + /** + * Get the fully qualified path to the environment file. + * + * @return string + * @static + */ + public static function environmentFilePath() + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->environmentFilePath(); + } + + /** + * Get or check the current application environment. + * + * @param string|array $environments + * @return string|bool + * @static + */ + public static function environment(...$environments) + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->environment(...$environments); + } + + /** + * Determine if application is in local environment. + * + * @return bool + * @static + */ + public static function isLocal() + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->isLocal(); + } + + /** + * Determine if application is in production environment. + * + * @return bool + * @static + */ + public static function isProduction() + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->isProduction(); + } + + /** + * Detect the application's current environment. + * + * @param \Closure $callback + * @return string + * @static + */ + public static function detectEnvironment($callback) + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->detectEnvironment($callback); + } + + /** + * Determine if the application is running in the console. + * + * @return bool + * @static + */ + public static function runningInConsole() + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->runningInConsole(); + } + + /** + * Determine if the application is running unit tests. + * + * @return bool + * @static + */ + public static function runningUnitTests() + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->runningUnitTests(); + } + + /** + * Register all of the configured providers. + * + * @return void + * @static + */ + public static function registerConfiguredProviders() + { + /** @var \Illuminate\Foundation\Application $instance */ + $instance->registerConfiguredProviders(); + } + + /** + * Register a service provider with the application. + * + * @param \Illuminate\Support\ServiceProvider|string $provider + * @param bool $force + * @return \Illuminate\Support\ServiceProvider + * @static + */ + public static function register($provider, $force = false) + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->register($provider, $force); + } + + /** + * Get the registered service provider instance if it exists. + * + * @param \Illuminate\Support\ServiceProvider|string $provider + * @return \Illuminate\Support\ServiceProvider|null + * @static + */ + public static function getProvider($provider) + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->getProvider($provider); + } + + /** + * Get the registered service provider instances if any exist. + * + * @param \Illuminate\Support\ServiceProvider|string $provider + * @return array + * @static + */ + public static function getProviders($provider) + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->getProviders($provider); + } + + /** + * Resolve a service provider instance from the class name. + * + * @param string $provider + * @return \Illuminate\Support\ServiceProvider + * @static + */ + public static function resolveProvider($provider) + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->resolveProvider($provider); + } + + /** + * Load and boot all of the remaining deferred providers. + * + * @return void + * @static + */ + public static function loadDeferredProviders() + { + /** @var \Illuminate\Foundation\Application $instance */ + $instance->loadDeferredProviders(); + } + + /** + * Load the provider for a deferred service. + * + * @param string $service + * @return void + * @static + */ + public static function loadDeferredProvider($service) + { + /** @var \Illuminate\Foundation\Application $instance */ + $instance->loadDeferredProvider($service); + } + + /** + * Register a deferred provider and service. + * + * @param string $provider + * @param string|null $service + * @return void + * @static + */ + public static function registerDeferredProvider($provider, $service = null) + { + /** @var \Illuminate\Foundation\Application $instance */ + $instance->registerDeferredProvider($provider, $service); + } + + /** + * Resolve the given type from the container. + * + * @param string $abstract + * @param array $parameters + * @return mixed + * @static + */ + public static function make($abstract, $parameters = []) + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->make($abstract, $parameters); + } + + /** + * Determine if the given abstract type has been bound. + * + * @param string $abstract + * @return bool + * @static + */ + public static function bound($abstract) + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->bound($abstract); + } + + /** + * Determine if the application has booted. + * + * @return bool + * @static + */ + public static function isBooted() + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->isBooted(); + } + + /** + * Boot the application's service providers. + * + * @return void + * @static + */ + public static function boot() + { + /** @var \Illuminate\Foundation\Application $instance */ + $instance->boot(); + } + + /** + * Register a new boot listener. + * + * @param callable $callback + * @return void + * @static + */ + public static function booting($callback) + { + /** @var \Illuminate\Foundation\Application $instance */ + $instance->booting($callback); + } + + /** + * Register a new "booted" listener. + * + * @param callable $callback + * @return void + * @static + */ + public static function booted($callback) + { + /** @var \Illuminate\Foundation\Application $instance */ + $instance->booted($callback); + } + + /** + * {@inheritdoc} + * + * @static + */ + public static function handle($request, $type = 1, $catch = true) + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->handle($request, $type, $catch); + } + + /** + * Determine if middleware has been disabled for the application. + * + * @return bool + * @static + */ + public static function shouldSkipMiddleware() + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->shouldSkipMiddleware(); + } + + /** + * Get the path to the cached services.php file. + * + * @return string + * @static + */ + public static function getCachedServicesPath() + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->getCachedServicesPath(); + } + + /** + * Get the path to the cached packages.php file. + * + * @return string + * @static + */ + public static function getCachedPackagesPath() + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->getCachedPackagesPath(); + } + + /** + * Determine if the application configuration is cached. + * + * @return bool + * @static + */ + public static function configurationIsCached() + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->configurationIsCached(); + } + + /** + * Get the path to the configuration cache file. + * + * @return string + * @static + */ + public static function getCachedConfigPath() + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->getCachedConfigPath(); + } + + /** + * Determine if the application routes are cached. + * + * @return bool + * @static + */ + public static function routesAreCached() + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->routesAreCached(); + } + + /** + * Get the path to the routes cache file. + * + * @return string + * @static + */ + public static function getCachedRoutesPath() + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->getCachedRoutesPath(); + } + + /** + * Determine if the application events are cached. + * + * @return bool + * @static + */ + public static function eventsAreCached() + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->eventsAreCached(); + } + + /** + * Get the path to the events cache file. + * + * @return string + * @static + */ + public static function getCachedEventsPath() + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->getCachedEventsPath(); + } + + /** + * Determine if the application is currently down for maintenance. + * + * @return bool + * @static + */ + public static function isDownForMaintenance() + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->isDownForMaintenance(); + } + + /** + * Throw an HttpException with the given data. + * + * @param int $code + * @param string $message + * @param array $headers + * @return void + * @throws \Symfony\Component\HttpKernel\Exception\HttpException + * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException + * @static + */ + public static function abort($code, $message = '', $headers = []) + { + /** @var \Illuminate\Foundation\Application $instance */ + $instance->abort($code, $message, $headers); + } + + /** + * Register a terminating callback with the application. + * + * @param callable|string $callback + * @return \Illuminate\Foundation\Application + * @static + */ + public static function terminating($callback) + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->terminating($callback); + } + + /** + * Terminate the application. + * + * @return void + * @static + */ + public static function terminate() + { + /** @var \Illuminate\Foundation\Application $instance */ + $instance->terminate(); + } + + /** + * Get the service providers that have been loaded. + * + * @return array + * @static + */ + public static function getLoadedProviders() + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->getLoadedProviders(); + } + + /** + * Get the application's deferred services. + * + * @return array + * @static + */ + public static function getDeferredServices() + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->getDeferredServices(); + } + + /** + * Set the application's deferred services. + * + * @param array $services + * @return void + * @static + */ + public static function setDeferredServices($services) + { + /** @var \Illuminate\Foundation\Application $instance */ + $instance->setDeferredServices($services); + } + + /** + * Add an array of services to the application's deferred services. + * + * @param array $services + * @return void + * @static + */ + public static function addDeferredServices($services) + { + /** @var \Illuminate\Foundation\Application $instance */ + $instance->addDeferredServices($services); + } + + /** + * Determine if the given service is a deferred service. + * + * @param string $service + * @return bool + * @static + */ + public static function isDeferredService($service) + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->isDeferredService($service); + } + + /** + * Configure the real-time facade namespace. + * + * @param string $namespace + * @return void + * @static + */ + public static function provideFacades($namespace) + { + /** @var \Illuminate\Foundation\Application $instance */ + $instance->provideFacades($namespace); + } + + /** + * Get the current application locale. + * + * @return string + * @static + */ + public static function getLocale() + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->getLocale(); + } + + /** + * Set the current application locale. + * + * @param string $locale + * @return void + * @static + */ + public static function setLocale($locale) + { + /** @var \Illuminate\Foundation\Application $instance */ + $instance->setLocale($locale); + } + + /** + * Determine if application locale is the given locale. + * + * @param string $locale + * @return bool + * @static + */ + public static function isLocale($locale) + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->isLocale($locale); + } + + /** + * Register the core class aliases in the container. + * + * @return void + * @static + */ + public static function registerCoreContainerAliases() + { + /** @var \Illuminate\Foundation\Application $instance */ + $instance->registerCoreContainerAliases(); + } + + /** + * Flush the container of all bindings and resolved instances. + * + * @return void + * @static + */ + public static function flush() + { + /** @var \Illuminate\Foundation\Application $instance */ + $instance->flush(); + } + + /** + * Get the application namespace. + * + * @return string + * @throws \RuntimeException + * @static + */ + public static function getNamespace() + { + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->getNamespace(); + } + + /** + * Define a contextual binding. + * + * @param array|string $concrete + * @return \Illuminate\Contracts\Container\ContextualBindingBuilder + * @static + */ + public static function when($concrete) + { + //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->when($concrete); + } + + /** + * Returns true if the container can return an entry for the given identifier. + * + * Returns false otherwise. + * + * `has($id)` returning true does not mean that `get($id)` will not throw an exception. + * It does however mean that `get($id)` will not throw a `NotFoundExceptionInterface`. + * + * @param string $id Identifier of the entry to look for. + * @return bool + * @static + */ + public static function has($id) + { + //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->has($id); + } + + /** + * Determine if the given abstract type has been resolved. + * + * @param string $abstract + * @return bool + * @static + */ + public static function resolved($abstract) + { + //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->resolved($abstract); + } + + /** + * Determine if a given type is shared. + * + * @param string $abstract + * @return bool + * @static + */ + public static function isShared($abstract) + { + //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->isShared($abstract); + } + + /** + * Determine if a given string is an alias. + * + * @param string $name + * @return bool + * @static + */ + public static function isAlias($name) + { + //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->isAlias($name); + } + + /** + * Register a binding with the container. + * + * @param string $abstract + * @param \Closure|string|null $concrete + * @param bool $shared + * @return void + * @static + */ + public static function bind($abstract, $concrete = null, $shared = false) + { + //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + $instance->bind($abstract, $concrete, $shared); + } + + /** + * Determine if the container has a method binding. + * + * @param string $method + * @return bool + * @static + */ + public static function hasMethodBinding($method) + { + //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->hasMethodBinding($method); + } + + /** + * Bind a callback to resolve with Container::call. + * + * @param array|string $method + * @param \Closure $callback + * @return void + * @static + */ + public static function bindMethod($method, $callback) + { + //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + $instance->bindMethod($method, $callback); + } + + /** + * Get the method binding for the given method. + * + * @param string $method + * @param mixed $instance + * @return mixed + * @static + */ + public static function callMethodBinding($method, $instance) + { + //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->callMethodBinding($method, $instance); + } + + /** + * Add a contextual binding to the container. + * + * @param string $concrete + * @param string $abstract + * @param \Closure|string $implementation + * @return void + * @static + */ + public static function addContextualBinding($concrete, $abstract, $implementation) + { + //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + $instance->addContextualBinding($concrete, $abstract, $implementation); + } + + /** + * Register a binding if it hasn't already been registered. + * + * @param string $abstract + * @param \Closure|string|null $concrete + * @param bool $shared + * @return void + * @static + */ + public static function bindIf($abstract, $concrete = null, $shared = false) + { + //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + $instance->bindIf($abstract, $concrete, $shared); + } + + /** + * Register a shared binding in the container. + * + * @param string $abstract + * @param \Closure|string|null $concrete + * @return void + * @static + */ + public static function singleton($abstract, $concrete = null) + { + //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + $instance->singleton($abstract, $concrete); + } + + /** + * Register a shared binding if it hasn't already been registered. + * + * @param string $abstract + * @param \Closure|string|null $concrete + * @return void + * @static + */ + public static function singletonIf($abstract, $concrete = null) + { + //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + $instance->singletonIf($abstract, $concrete); + } + + /** + * "Extend" an abstract type in the container. + * + * @param string $abstract + * @param \Closure $closure + * @return void + * @throws \InvalidArgumentException + * @static + */ + public static function extend($abstract, $closure) + { + //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + $instance->extend($abstract, $closure); + } + + /** + * Register an existing instance as shared in the container. + * + * @param string $abstract + * @param mixed $instance + * @return mixed + * @static + */ + public static function instance($abstract, $instance) + { + //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->instance($abstract, $instance); + } + + /** + * Assign a set of tags to a given binding. + * + * @param array|string $abstracts + * @param array|mixed $tags + * @return void + * @static + */ + public static function tag($abstracts, $tags) + { + //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + $instance->tag($abstracts, $tags); + } + + /** + * Resolve all of the bindings for a given tag. + * + * @param string $tag + * @return \Illuminate\Container\iterable + * @static + */ + public static function tagged($tag) + { + //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->tagged($tag); + } + + /** + * Alias a type to a different name. + * + * @param string $abstract + * @param string $alias + * @return void + * @throws \LogicException + * @static + */ + public static function alias($abstract, $alias) + { + //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + $instance->alias($abstract, $alias); + } + + /** + * Bind a new callback to an abstract's rebind event. + * + * @param string $abstract + * @param \Closure $callback + * @return mixed + * @static + */ + public static function rebinding($abstract, $callback) + { + //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->rebinding($abstract, $callback); + } + + /** + * Refresh an instance on the given target and method. + * + * @param string $abstract + * @param mixed $target + * @param string $method + * @return mixed + * @static + */ + public static function refresh($abstract, $target, $method) + { + //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->refresh($abstract, $target, $method); + } + + /** + * Wrap the given closure such that its dependencies will be injected when executed. + * + * @param \Closure $callback + * @param array $parameters + * @return \Closure + * @static + */ + public static function wrap($callback, $parameters = []) + { + //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->wrap($callback, $parameters); + } + + /** + * Call the given Closure / class@method and inject its dependencies. + * + * @param callable|string $callback + * @param array $parameters + * @param string|null $defaultMethod + * @return mixed + * @static + */ + public static function call($callback, $parameters = [], $defaultMethod = null) + { + //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->call($callback, $parameters, $defaultMethod); + } + + /** + * Get a closure to resolve the given type from the container. + * + * @param string $abstract + * @return \Closure + * @static + */ + public static function factory($abstract) + { + //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->factory($abstract); + } + + /** + * An alias function name for make(). + * + * @param string $abstract + * @param array $parameters + * @return mixed + * @static + */ + public static function makeWith($abstract, $parameters = []) + { + //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->makeWith($abstract, $parameters); + } + + /** + * Finds an entry of the container by its identifier and returns it. + * + * @param string $id Identifier of the entry to look for. + * @throws NotFoundExceptionInterface No entry was found for **this** identifier. + * @throws ContainerExceptionInterface Error while retrieving the entry. + * @return mixed Entry. + * @static + */ + public static function get($id) + { + //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->get($id); + } + + /** + * Instantiate a concrete instance of the given type. + * + * @param string $concrete + * @return mixed + * @throws \Illuminate\Contracts\Container\BindingResolutionException + * @static + */ + public static function build($concrete) + { + //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->build($concrete); + } + + /** + * Register a new resolving callback. + * + * @param \Closure|string $abstract + * @param \Closure|null $callback + * @return void + * @static + */ + public static function resolving($abstract, $callback = null) + { + //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + $instance->resolving($abstract, $callback); + } + + /** + * Register a new after resolving callback for all types. + * + * @param \Closure|string $abstract + * @param \Closure|null $callback + * @return void + * @static + */ + public static function afterResolving($abstract, $callback = null) + { + //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + $instance->afterResolving($abstract, $callback); + } + + /** + * Get the container's bindings. + * + * @return array + * @static + */ + public static function getBindings() + { + //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->getBindings(); + } + + /** + * Get the alias for an abstract if available. + * + * @param string $abstract + * @return string + * @static + */ + public static function getAlias($abstract) + { + //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->getAlias($abstract); + } + + /** + * Remove all of the extender callbacks for a given type. + * + * @param string $abstract + * @return void + * @static + */ + public static function forgetExtenders($abstract) + { + //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + $instance->forgetExtenders($abstract); + } + + /** + * Remove a resolved instance from the instance cache. + * + * @param string $abstract + * @return void + * @static + */ + public static function forgetInstance($abstract) + { + //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + $instance->forgetInstance($abstract); + } + + /** + * Clear all of the instances from the container. + * + * @return void + * @static + */ + public static function forgetInstances() + { + //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + $instance->forgetInstances(); + } + + /** + * Get the globally available instance of the container. + * + * @return static + * @static + */ + public static function getInstance() + { + //Method inherited from \Illuminate\Container\Container + return \Illuminate\Foundation\Application::getInstance(); + } + + /** + * Set the shared instance of the container. + * + * @param \Illuminate\Contracts\Container\Container|null $container + * @return \Illuminate\Contracts\Container\Container|static + * @static + */ + public static function setInstance($container = null) + { + //Method inherited from \Illuminate\Container\Container + return \Illuminate\Foundation\Application::setInstance($container); + } + + /** + * Determine if a given offset exists. + * + * @param string $key + * @return bool + * @static + */ + public static function offsetExists($key) + { + //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->offsetExists($key); + } + + /** + * Get the value at a given offset. + * + * @param string $key + * @return mixed + * @static + */ + public static function offsetGet($key) + { + //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + return $instance->offsetGet($key); + } + + /** + * Set the value at a given offset. + * + * @param string $key + * @param mixed $value + * @return void + * @static + */ + public static function offsetSet($key, $value) + { + //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + $instance->offsetSet($key, $value); + } + + /** + * Unset the value at a given offset. + * + * @param string $key + * @return void + * @static + */ + public static function offsetUnset($key) + { + //Method inherited from \Illuminate\Container\Container + /** @var \Illuminate\Foundation\Application $instance */ + $instance->offsetUnset($key); + } + + } + + /** + * + * + * @see \Illuminate\Contracts\Console\Kernel + */ + class Artisan { + + /** + * Run the console application. + * + * @param \Symfony\Component\Console\Input\InputInterface $input + * @param \Symfony\Component\Console\Output\OutputInterface|null $output + * @return int + * @static + */ + public static function handle($input, $output = null) + { + //Method inherited from \Illuminate\Foundation\Console\Kernel + /** @var \App\Console\Kernel $instance */ + return $instance->handle($input, $output); + } + + /** + * Terminate the application. + * + * @param \Symfony\Component\Console\Input\InputInterface $input + * @param int $status + * @return void + * @static + */ + public static function terminate($input, $status) + { + //Method inherited from \Illuminate\Foundation\Console\Kernel + /** @var \App\Console\Kernel $instance */ + $instance->terminate($input, $status); + } + + /** + * Register a Closure based command with the application. + * + * @param string $signature + * @param \Closure $callback + * @return \Illuminate\Foundation\Console\ClosureCommand + * @static + */ + public static function command($signature, $callback) + { + //Method inherited from \Illuminate\Foundation\Console\Kernel + /** @var \App\Console\Kernel $instance */ + return $instance->command($signature, $callback); + } + + /** + * Register the given command with the console application. + * + * @param \Symfony\Component\Console\Command\Command $command + * @return void + * @static + */ + public static function registerCommand($command) + { + //Method inherited from \Illuminate\Foundation\Console\Kernel + /** @var \App\Console\Kernel $instance */ + $instance->registerCommand($command); + } + + /** + * Run an Artisan console command by name. + * + * @param string $command + * @param array $parameters + * @param \Symfony\Component\Console\Output\OutputInterface|null $outputBuffer + * @return int + * @throws \Symfony\Component\Console\Exception\CommandNotFoundException + * @static + */ + public static function call($command, $parameters = [], $outputBuffer = null) + { + //Method inherited from \Illuminate\Foundation\Console\Kernel + /** @var \App\Console\Kernel $instance */ + return $instance->call($command, $parameters, $outputBuffer); + } + + /** + * Queue the given console command. + * + * @param string $command + * @param array $parameters + * @return \Illuminate\Foundation\Bus\PendingDispatch + * @static + */ + public static function queue($command, $parameters = []) + { + //Method inherited from \Illuminate\Foundation\Console\Kernel + /** @var \App\Console\Kernel $instance */ + return $instance->queue($command, $parameters); + } + + /** + * Get all of the commands registered with the console. + * + * @return array + * @static + */ + public static function all() + { + //Method inherited from \Illuminate\Foundation\Console\Kernel + /** @var \App\Console\Kernel $instance */ + return $instance->all(); + } + + /** + * Get the output for the last run command. + * + * @return string + * @static + */ + public static function output() + { + //Method inherited from \Illuminate\Foundation\Console\Kernel + /** @var \App\Console\Kernel $instance */ + return $instance->output(); + } + + /** + * Bootstrap the application for artisan commands. + * + * @return void + * @static + */ + public static function bootstrap() + { + //Method inherited from \Illuminate\Foundation\Console\Kernel + /** @var \App\Console\Kernel $instance */ + $instance->bootstrap(); + } + + /** + * Set the Artisan application instance. + * + * @param \Illuminate\Console\Application $artisan + * @return void + * @static + */ + public static function setArtisan($artisan) + { + //Method inherited from \Illuminate\Foundation\Console\Kernel + /** @var \App\Console\Kernel $instance */ + $instance->setArtisan($artisan); + } + + } + + /** + * + * + * @see \Illuminate\Auth\AuthManager + * @see \Illuminate\Contracts\Auth\Factory + * @see \Illuminate\Contracts\Auth\Guard + * @see \Illuminate\Contracts\Auth\StatefulGuard + */ + class Auth { + + /** + * Attempt to get the guard from the local cache. + * + * @param string|null $name + * @return \Illuminate\Contracts\Auth\Guard|\Illuminate\Contracts\Auth\StatefulGuard + * @static + */ + public static function guard($name = null) + { + /** @var \Illuminate\Auth\AuthManager $instance */ + return $instance->guard($name); + } + + /** + * Create a session based authentication guard. + * + * @param string $name + * @param array $config + * @return \Illuminate\Auth\SessionGuard + * @static + */ + public static function createSessionDriver($name, $config) + { + /** @var \Illuminate\Auth\AuthManager $instance */ + return $instance->createSessionDriver($name, $config); + } + + /** + * Create a token based authentication guard. + * + * @param string $name + * @param array $config + * @return \Illuminate\Auth\TokenGuard + * @static + */ + public static function createTokenDriver($name, $config) + { + /** @var \Illuminate\Auth\AuthManager $instance */ + return $instance->createTokenDriver($name, $config); + } + + /** + * Get the default authentication driver name. + * + * @return string + * @static + */ + public static function getDefaultDriver() + { + /** @var \Illuminate\Auth\AuthManager $instance */ + return $instance->getDefaultDriver(); + } + + /** + * Set the default guard driver the factory should serve. + * + * @param string $name + * @return void + * @static + */ + public static function shouldUse($name) + { + /** @var \Illuminate\Auth\AuthManager $instance */ + $instance->shouldUse($name); + } + + /** + * Set the default authentication driver name. + * + * @param string $name + * @return void + * @static + */ + public static function setDefaultDriver($name) + { + /** @var \Illuminate\Auth\AuthManager $instance */ + $instance->setDefaultDriver($name); + } + + /** + * Register a new callback based request guard. + * + * @param string $driver + * @param callable $callback + * @return \Illuminate\Auth\AuthManager + * @static + */ + public static function viaRequest($driver, $callback) + { + /** @var \Illuminate\Auth\AuthManager $instance */ + return $instance->viaRequest($driver, $callback); + } + + /** + * Get the user resolver callback. + * + * @return \Closure + * @static + */ + public static function userResolver() + { + /** @var \Illuminate\Auth\AuthManager $instance */ + return $instance->userResolver(); + } + + /** + * Set the callback to be used to resolve users. + * + * @param \Closure $userResolver + * @return \Illuminate\Auth\AuthManager + * @static + */ + public static function resolveUsersUsing($userResolver) + { + /** @var \Illuminate\Auth\AuthManager $instance */ + return $instance->resolveUsersUsing($userResolver); + } + + /** + * Register a custom driver creator Closure. + * + * @param string $driver + * @param \Closure $callback + * @return \Illuminate\Auth\AuthManager + * @static + */ + public static function extend($driver, $callback) + { + /** @var \Illuminate\Auth\AuthManager $instance */ + return $instance->extend($driver, $callback); + } + + /** + * Register a custom provider creator Closure. + * + * @param string $name + * @param \Closure $callback + * @return \Illuminate\Auth\AuthManager + * @static + */ + public static function provider($name, $callback) + { + /** @var \Illuminate\Auth\AuthManager $instance */ + return $instance->provider($name, $callback); + } + + /** + * Determines if any guards have already been resolved. + * + * @return bool + * @static + */ + public static function hasResolvedGuards() + { + /** @var \Illuminate\Auth\AuthManager $instance */ + return $instance->hasResolvedGuards(); + } + + /** + * Create the user provider implementation for the driver. + * + * @param string|null $provider + * @return \Illuminate\Contracts\Auth\UserProvider|null + * @throws \InvalidArgumentException + * @static + */ + public static function createUserProvider($provider = null) + { + /** @var \Illuminate\Auth\AuthManager $instance */ + return $instance->createUserProvider($provider); + } + + /** + * Get the default user provider name. + * + * @return string + * @static + */ + public static function getDefaultUserProvider() + { + /** @var \Illuminate\Auth\AuthManager $instance */ + return $instance->getDefaultUserProvider(); + } + + /** + * Get the currently authenticated user. + * + * @return \App\User|null + * @static + */ + public static function user() + { + /** @var \Illuminate\Auth\SessionGuard $instance */ + return $instance->user(); + } + + /** + * Get the ID for the currently authenticated user. + * + * @return int|null + * @static + */ + public static function id() + { + /** @var \Illuminate\Auth\SessionGuard $instance */ + return $instance->id(); + } + + /** + * Log a user into the application without sessions or cookies. + * + * @param array $credentials + * @return bool + * @static + */ + public static function once($credentials = []) + { + /** @var \Illuminate\Auth\SessionGuard $instance */ + return $instance->once($credentials); + } + + /** + * Log the given user ID into the application without sessions or cookies. + * + * @param mixed $id + * @return \App\User|false + * @static + */ + public static function onceUsingId($id) + { + /** @var \Illuminate\Auth\SessionGuard $instance */ + return $instance->onceUsingId($id); + } + + /** + * Validate a user's credentials. + * + * @param array $credentials + * @return bool + * @static + */ + public static function validate($credentials = []) + { + /** @var \Illuminate\Auth\SessionGuard $instance */ + return $instance->validate($credentials); + } + + /** + * Attempt to authenticate using HTTP Basic Auth. + * + * @param string $field + * @param array $extraConditions + * @return \Symfony\Component\HttpFoundation\Response|null + * @static + */ + public static function basic($field = 'email', $extraConditions = []) + { + /** @var \Illuminate\Auth\SessionGuard $instance */ + return $instance->basic($field, $extraConditions); + } + + /** + * Perform a stateless HTTP Basic login attempt. + * + * @param string $field + * @param array $extraConditions + * @return \Symfony\Component\HttpFoundation\Response|null + * @static + */ + public static function onceBasic($field = 'email', $extraConditions = []) + { + /** @var \Illuminate\Auth\SessionGuard $instance */ + return $instance->onceBasic($field, $extraConditions); + } + + /** + * Attempt to authenticate a user using the given credentials. + * + * @param array $credentials + * @param bool $remember + * @return bool + * @static + */ + public static function attempt($credentials = [], $remember = false) + { + /** @var \Illuminate\Auth\SessionGuard $instance */ + return $instance->attempt($credentials, $remember); + } + + /** + * Log the given user ID into the application. + * + * @param mixed $id + * @param bool $remember + * @return \App\User|false + * @static + */ + public static function loginUsingId($id, $remember = false) + { + /** @var \Illuminate\Auth\SessionGuard $instance */ + return $instance->loginUsingId($id, $remember); + } + + /** + * Log a user into the application. + * + * @param \Illuminate\Contracts\Auth\Authenticatable $user + * @param bool $remember + * @return void + * @static + */ + public static function login($user, $remember = false) + { + /** @var \Illuminate\Auth\SessionGuard $instance */ + $instance->login($user, $remember); + } + + /** + * Log the user out of the application. + * + * @return void + * @static + */ + public static function logout() + { + /** @var \Illuminate\Auth\SessionGuard $instance */ + $instance->logout(); + } + + /** + * Log the user out of the application on their current device only. + * + * @return void + * @static + */ + public static function logoutCurrentDevice() + { + /** @var \Illuminate\Auth\SessionGuard $instance */ + $instance->logoutCurrentDevice(); + } + + /** + * Invalidate other sessions for the current user. + * + * The application must be using the AuthenticateSession middleware. + * + * @param string $password + * @param string $attribute + * @return bool|null + * @static + */ + public static function logoutOtherDevices($password, $attribute = 'password') + { + /** @var \Illuminate\Auth\SessionGuard $instance */ + return $instance->logoutOtherDevices($password, $attribute); + } + + /** + * Register an authentication attempt event listener. + * + * @param mixed $callback + * @return void + * @static + */ + public static function attempting($callback) + { + /** @var \Illuminate\Auth\SessionGuard $instance */ + $instance->attempting($callback); + } + + /** + * Get the last user we attempted to authenticate. + * + * @return \App\User + * @static + */ + public static function getLastAttempted() + { + /** @var \Illuminate\Auth\SessionGuard $instance */ + return $instance->getLastAttempted(); + } + + /** + * Get a unique identifier for the auth session value. + * + * @return string + * @static + */ + public static function getName() + { + /** @var \Illuminate\Auth\SessionGuard $instance */ + return $instance->getName(); + } + + /** + * Get the name of the cookie used to store the "recaller". + * + * @return string + * @static + */ + public static function getRecallerName() + { + /** @var \Illuminate\Auth\SessionGuard $instance */ + return $instance->getRecallerName(); + } + + /** + * Determine if the user was authenticated via "remember me" cookie. + * + * @return bool + * @static + */ + public static function viaRemember() + { + /** @var \Illuminate\Auth\SessionGuard $instance */ + return $instance->viaRemember(); + } + + /** + * Get the cookie creator instance used by the guard. + * + * @return \Illuminate\Contracts\Cookie\QueueingFactory + * @throws \RuntimeException + * @static + */ + public static function getCookieJar() + { + /** @var \Illuminate\Auth\SessionGuard $instance */ + return $instance->getCookieJar(); + } + + /** + * Set the cookie creator instance used by the guard. + * + * @param \Illuminate\Contracts\Cookie\QueueingFactory $cookie + * @return void + * @static + */ + public static function setCookieJar($cookie) + { + /** @var \Illuminate\Auth\SessionGuard $instance */ + $instance->setCookieJar($cookie); + } + + /** + * Get the event dispatcher instance. + * + * @return \Illuminate\Contracts\Events\Dispatcher + * @static + */ + public static function getDispatcher() + { + /** @var \Illuminate\Auth\SessionGuard $instance */ + return $instance->getDispatcher(); + } + + /** + * Set the event dispatcher instance. + * + * @param \Illuminate\Contracts\Events\Dispatcher $events + * @return void + * @static + */ + public static function setDispatcher($events) + { + /** @var \Illuminate\Auth\SessionGuard $instance */ + $instance->setDispatcher($events); + } + + /** + * Get the session store used by the guard. + * + * @return \Illuminate\Contracts\Session\Session + * @static + */ + public static function getSession() + { + /** @var \Illuminate\Auth\SessionGuard $instance */ + return $instance->getSession(); + } + + /** + * Return the currently cached user. + * + * @return \App\User|null + * @static + */ + public static function getUser() + { + /** @var \Illuminate\Auth\SessionGuard $instance */ + return $instance->getUser(); + } + + /** + * Set the current user. + * + * @param \Illuminate\Contracts\Auth\Authenticatable $user + * @return \Illuminate\Auth\SessionGuard + * @static + */ + public static function setUser($user) + { + /** @var \Illuminate\Auth\SessionGuard $instance */ + return $instance->setUser($user); + } + + /** + * Get the current request instance. + * + * @return \Symfony\Component\HttpFoundation\Request + * @static + */ + public static function getRequest() + { + /** @var \Illuminate\Auth\SessionGuard $instance */ + return $instance->getRequest(); + } + + /** + * Set the current request instance. + * + * @param \Symfony\Component\HttpFoundation\Request $request + * @return \Illuminate\Auth\SessionGuard + * @static + */ + public static function setRequest($request) + { + /** @var \Illuminate\Auth\SessionGuard $instance */ + return $instance->setRequest($request); + } + + /** + * Determine if current user is authenticated. If not, throw an exception. + * + * @return \App\User + * @throws \Illuminate\Auth\AuthenticationException + * @static + */ + public static function authenticate() + { + /** @var \Illuminate\Auth\SessionGuard $instance */ + return $instance->authenticate(); + } + + /** + * Determine if the guard has a user instance. + * + * @return bool + * @static + */ + public static function hasUser() + { + /** @var \Illuminate\Auth\SessionGuard $instance */ + return $instance->hasUser(); + } + + /** + * Determine if the current user is authenticated. + * + * @return bool + * @static + */ + public static function check() + { + /** @var \Illuminate\Auth\SessionGuard $instance */ + return $instance->check(); + } + + /** + * Determine if the current user is a guest. + * + * @return bool + * @static + */ + public static function guest() + { + /** @var \Illuminate\Auth\SessionGuard $instance */ + return $instance->guest(); + } + + /** + * Get the user provider used by the guard. + * + * @return \Illuminate\Contracts\Auth\UserProvider + * @static + */ + public static function getProvider() + { + /** @var \Illuminate\Auth\SessionGuard $instance */ + return $instance->getProvider(); + } + + /** + * Set the user provider used by the guard. + * + * @param \Illuminate\Contracts\Auth\UserProvider $provider + * @return void + * @static + */ + public static function setProvider($provider) + { + /** @var \Illuminate\Auth\SessionGuard $instance */ + $instance->setProvider($provider); + } + + /** + * Register a custom macro. + * + * @param string $name + * @param object|callable $macro + * @return void + * @static + */ + public static function macro($name, $macro) + { + \Illuminate\Auth\SessionGuard::macro($name, $macro); + } + + /** + * Mix another object into the class. + * + * @param object $mixin + * @param bool $replace + * @return void + * @throws \ReflectionException + * @static + */ + public static function mixin($mixin, $replace = true) + { + \Illuminate\Auth\SessionGuard::mixin($mixin, $replace); + } + + /** + * Checks if macro is registered. + * + * @param string $name + * @return bool + * @static + */ + public static function hasMacro($name) + { + return \Illuminate\Auth\SessionGuard::hasMacro($name); + } + + } + + /** + * + * + * @see \Illuminate\View\Compilers\BladeCompiler + */ + class Blade { + + /** + * Compile the view at the given path. + * + * @param string|null $path + * @return void + * @static + */ + public static function compile($path = null) + { + /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ + $instance->compile($path); + } + + /** + * Get the path currently being compiled. + * + * @return string + * @static + */ + public static function getPath() + { + /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ + return $instance->getPath(); + } + + /** + * Set the path currently being compiled. + * + * @param string $path + * @return void + * @static + */ + public static function setPath($path) + { + /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ + $instance->setPath($path); + } + + /** + * Compile the given Blade template contents. + * + * @param string $value + * @return string + * @static + */ + public static function compileString($value) + { + /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ + return $instance->compileString($value); + } + + /** + * Strip the parentheses from the given expression. + * + * @param string $expression + * @return string + * @static + */ + public static function stripParentheses($expression) + { + /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ + return $instance->stripParentheses($expression); + } + + /** + * Register a custom Blade compiler. + * + * @param callable $compiler + * @return void + * @static + */ + public static function extend($compiler) + { + /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ + $instance->extend($compiler); + } + + /** + * Get the extensions used by the compiler. + * + * @return array + * @static + */ + public static function getExtensions() + { + /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ + return $instance->getExtensions(); + } + + /** + * Register an "if" statement directive. + * + * @param string $name + * @param callable $callback + * @return void + * @static + */ + public static function if($name, $callback) + { + /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ + $instance->if($name, $callback); + } + + /** + * Check the result of a condition. + * + * @param string $name + * @param array $parameters + * @return bool + * @static + */ + public static function check($name, ...$parameters) + { + /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ + return $instance->check($name, ...$parameters); + } + + /** + * Register a component alias directive. + * + * @param string $path + * @param string|null $alias + * @return void + * @static + */ + public static function component($path, $alias = null) + { + /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ + $instance->component($path, $alias); + } + + /** + * Register an include alias directive. + * + * @param string $path + * @param string|null $alias + * @return void + * @static + */ + public static function include($path, $alias = null) + { + /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ + $instance->include($path, $alias); + } + + /** + * Register a handler for custom directives. + * + * @param string $name + * @param callable $handler + * @return void + * @throws \InvalidArgumentException + * @static + */ + public static function directive($name, $handler) + { + /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ + $instance->directive($name, $handler); + } + + /** + * Get the list of custom directives. + * + * @return array + * @static + */ + public static function getCustomDirectives() + { + /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ + return $instance->getCustomDirectives(); + } + + /** + * Set the echo format to be used by the compiler. + * + * @param string $format + * @return void + * @static + */ + public static function setEchoFormat($format) + { + /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ + $instance->setEchoFormat($format); + } + + /** + * Set the "echo" format to double encode entities. + * + * @return void + * @static + */ + public static function withDoubleEncoding() + { + /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ + $instance->withDoubleEncoding(); + } + + /** + * Set the "echo" format to not double encode entities. + * + * @return void + * @static + */ + public static function withoutDoubleEncoding() + { + /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ + $instance->withoutDoubleEncoding(); + } + + /** + * Get the path to the compiled version of a view. + * + * @param string $path + * @return string + * @static + */ + public static function getCompiledPath($path) + { + //Method inherited from \Illuminate\View\Compilers\Compiler + /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ + return $instance->getCompiledPath($path); + } + + /** + * Determine if the view at the given path is expired. + * + * @param string $path + * @return bool + * @static + */ + public static function isExpired($path) + { + //Method inherited from \Illuminate\View\Compilers\Compiler + /** @var \Illuminate\View\Compilers\BladeCompiler $instance */ + return $instance->isExpired($path); + } + + } + + /** + * + * + * @method static \Illuminate\Broadcasting\Broadcasters\Broadcaster channel(string $channel, callable|string $callback, array $options = []) + * @method static mixed auth(\Illuminate\Http\Request $request) + * @see \Illuminate\Contracts\Broadcasting\Factory + */ + class Broadcast { + + /** + * Register the routes for handling broadcast authentication and sockets. + * + * @param array|null $attributes + * @return void + * @static + */ + public static function routes($attributes = null) + { + /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ + $instance->routes($attributes); + } + + /** + * Get the socket ID for the given request. + * + * @param \Illuminate\Http\Request|null $request + * @return string|null + * @static + */ + public static function socket($request = null) + { + /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ + return $instance->socket($request); + } + + /** + * Begin broadcasting an event. + * + * @param mixed|null $event + * @return \Illuminate\Broadcasting\PendingBroadcast|void + * @static + */ + public static function event($event = null) + { + /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ + return $instance->event($event); + } + + /** + * Queue the given event for broadcast. + * + * @param mixed $event + * @return void + * @static + */ + public static function queue($event) + { + /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ + $instance->queue($event); + } + + /** + * Get a driver instance. + * + * @param string|null $driver + * @return mixed + * @static + */ + public static function connection($driver = null) + { + /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ + return $instance->connection($driver); + } + + /** + * Get a driver instance. + * + * @param string|null $name + * @return mixed + * @static + */ + public static function driver($name = null) + { + /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ + return $instance->driver($name); + } + + /** + * Get the default driver name. + * + * @return string + * @static + */ + public static function getDefaultDriver() + { + /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ + return $instance->getDefaultDriver(); + } + + /** + * Set the default driver name. + * + * @param string $name + * @return void + * @static + */ + public static function setDefaultDriver($name) + { + /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ + $instance->setDefaultDriver($name); + } + + /** + * Register a custom driver creator Closure. + * + * @param string $driver + * @param \Closure $callback + * @return \Illuminate\Broadcasting\BroadcastManager + * @static + */ + public static function extend($driver, $callback) + { + /** @var \Illuminate\Broadcasting\BroadcastManager $instance */ + return $instance->extend($driver, $callback); + } + + } + + /** + * + * + * @see \Illuminate\Contracts\Bus\Dispatcher + */ + class Bus { + + /** + * Dispatch a command to its appropriate handler. + * + * @param mixed $command + * @return mixed + * @static + */ + public static function dispatch($command) + { + /** @var \Illuminate\Bus\Dispatcher $instance */ + return $instance->dispatch($command); + } + + /** + * Dispatch a command to its appropriate handler in the current process. + * + * @param mixed $command + * @param mixed $handler + * @return mixed + * @static + */ + public static function dispatchNow($command, $handler = null) + { + /** @var \Illuminate\Bus\Dispatcher $instance */ + return $instance->dispatchNow($command, $handler); + } + + /** + * Determine if the given command has a handler. + * + * @param mixed $command + * @return bool + * @static + */ + public static function hasCommandHandler($command) + { + /** @var \Illuminate\Bus\Dispatcher $instance */ + return $instance->hasCommandHandler($command); + } + + /** + * Retrieve the handler for a command. + * + * @param mixed $command + * @return bool|mixed + * @static + */ + public static function getCommandHandler($command) + { + /** @var \Illuminate\Bus\Dispatcher $instance */ + return $instance->getCommandHandler($command); + } + + /** + * Dispatch a command to its appropriate handler behind a queue. + * + * @param mixed $command + * @return mixed + * @static + */ + public static function dispatchToQueue($command) + { + /** @var \Illuminate\Bus\Dispatcher $instance */ + return $instance->dispatchToQueue($command); + } + + /** + * Dispatch a command to its appropriate handler after the current process. + * + * @param mixed $command + * @param mixed $handler + * @return void + * @static + */ + public static function dispatchAfterResponse($command, $handler = null) + { + /** @var \Illuminate\Bus\Dispatcher $instance */ + $instance->dispatchAfterResponse($command, $handler); + } + + /** + * Set the pipes through which commands should be piped before dispatching. + * + * @param array $pipes + * @return \Illuminate\Bus\Dispatcher + * @static + */ + public static function pipeThrough($pipes) + { + /** @var \Illuminate\Bus\Dispatcher $instance */ + return $instance->pipeThrough($pipes); + } + + /** + * Map a command to a handler. + * + * @param array $map + * @return \Illuminate\Bus\Dispatcher + * @static + */ + public static function map($map) + { + /** @var \Illuminate\Bus\Dispatcher $instance */ + return $instance->map($map); + } + + /** + * Assert if a job was dispatched based on a truth-test callback. + * + * @param string $command + * @param callable|int|null $callback + * @return void + * @static + */ + public static function assertDispatched($command, $callback = null) + { + /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ + $instance->assertDispatched($command, $callback); + } + + /** + * Assert if a job was pushed a number of times. + * + * @param string $command + * @param int $times + * @return void + * @static + */ + public static function assertDispatchedTimes($command, $times = 1) + { + /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ + $instance->assertDispatchedTimes($command, $times); + } + + /** + * Determine if a job was dispatched based on a truth-test callback. + * + * @param string $command + * @param callable|null $callback + * @return void + * @static + */ + public static function assertNotDispatched($command, $callback = null) + { + /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ + $instance->assertNotDispatched($command, $callback); + } + + /** + * Assert if a job was dispatched after the response was sent based on a truth-test callback. + * + * @param string $command + * @param callable|int|null $callback + * @return void + * @static + */ + public static function assertDispatchedAfterResponse($command, $callback = null) + { + /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ + $instance->assertDispatchedAfterResponse($command, $callback); + } + + /** + * Assert if a job was pushed after the response was sent a number of times. + * + * @param string $command + * @param int $times + * @return void + * @static + */ + public static function assertDispatchedAfterResponseTimes($command, $times = 1) + { + /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ + $instance->assertDispatchedAfterResponseTimes($command, $times); + } + + /** + * Determine if a job was dispatched based on a truth-test callback. + * + * @param string $command + * @param callable|null $callback + * @return void + * @static + */ + public static function assertNotDispatchedAfterResponse($command, $callback = null) + { + /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ + $instance->assertNotDispatchedAfterResponse($command, $callback); + } + + /** + * Get all of the jobs matching a truth-test callback. + * + * @param string $command + * @param callable|null $callback + * @return \Illuminate\Support\Collection + * @static + */ + public static function dispatched($command, $callback = null) + { + /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ + return $instance->dispatched($command, $callback); + } + + /** + * Get all of the jobs dispatched after the response was sent matching a truth-test callback. + * + * @param string $command + * @param callable|null $callback + * @return \Illuminate\Support\Collection + * @static + */ + public static function dispatchedAfterResponse($command, $callback = null) + { + /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ + return $instance->dispatchedAfterResponse($command, $callback); + } + + /** + * Determine if there are any stored commands for a given class. + * + * @param string $command + * @return bool + * @static + */ + public static function hasDispatched($command) + { + /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ + return $instance->hasDispatched($command); + } + + /** + * Determine if there are any stored commands for a given class. + * + * @param string $command + * @return bool + * @static + */ + public static function hasDispatchedAfterResponse($command) + { + /** @var \Illuminate\Support\Testing\Fakes\BusFake $instance */ + return $instance->hasDispatchedAfterResponse($command); + } + + } + + /** + * + * + * @see \Illuminate\Cache\CacheManager + * @see \Illuminate\Cache\Repository + */ + class Cache { + + /** + * Get a cache store instance by name, wrapped in a repository. + * + * @param string|null $name + * @return \Illuminate\Contracts\Cache\Repository + * @static + */ + public static function store($name = null) + { + /** @var \Illuminate\Cache\CacheManager $instance */ + return $instance->store($name); + } + + /** + * Get a cache driver instance. + * + * @param string|null $driver + * @return \Illuminate\Contracts\Cache\Repository + * @static + */ + public static function driver($driver = null) + { + /** @var \Illuminate\Cache\CacheManager $instance */ + return $instance->driver($driver); + } + + /** + * Create a new cache repository with the given implementation. + * + * @param \Illuminate\Contracts\Cache\Store $store + * @return \Illuminate\Cache\Repository + * @static + */ + public static function repository($store) + { + /** @var \Illuminate\Cache\CacheManager $instance */ + return $instance->repository($store); + } + + /** + * Re-set the event dispatcher on all resolved cache repositories. + * + * @return void + * @static + */ + public static function refreshEventDispatcher() + { + /** @var \Illuminate\Cache\CacheManager $instance */ + $instance->refreshEventDispatcher(); + } + + /** + * Get the default cache driver name. + * + * @return string + * @static + */ + public static function getDefaultDriver() + { + /** @var \Illuminate\Cache\CacheManager $instance */ + return $instance->getDefaultDriver(); + } + + /** + * Set the default cache driver name. + * + * @param string $name + * @return void + * @static + */ + public static function setDefaultDriver($name) + { + /** @var \Illuminate\Cache\CacheManager $instance */ + $instance->setDefaultDriver($name); + } + + /** + * Unset the given driver instances. + * + * @param array|string|null $name + * @return \Illuminate\Cache\CacheManager + * @static + */ + public static function forgetDriver($name = null) + { + /** @var \Illuminate\Cache\CacheManager $instance */ + return $instance->forgetDriver($name); + } + + /** + * Register a custom driver creator Closure. + * + * @param string $driver + * @param \Closure $callback + * @return \Illuminate\Cache\CacheManager + * @static + */ + public static function extend($driver, $callback) + { + /** @var \Illuminate\Cache\CacheManager $instance */ + return $instance->extend($driver, $callback); + } + + /** + * Determine if an item exists in the cache. + * + * @param string $key + * @return bool + * @static + */ + public static function has($key) + { + /** @var \Illuminate\Cache\Repository $instance */ + return $instance->has($key); + } + + /** + * Determine if an item doesn't exist in the cache. + * + * @param string $key + * @return bool + * @static + */ + public static function missing($key) + { + /** @var \Illuminate\Cache\Repository $instance */ + return $instance->missing($key); + } + + /** + * Retrieve an item from the cache by key. + * + * @param string $key + * @param mixed $default + * @return mixed + * @static + */ + public static function get($key, $default = null) + { + /** @var \Illuminate\Cache\Repository $instance */ + return $instance->get($key, $default); + } + + /** + * Retrieve multiple items from the cache by key. + * + * Items not found in the cache will have a null value. + * + * @param array $keys + * @return array + * @static + */ + public static function many($keys) + { + /** @var \Illuminate\Cache\Repository $instance */ + return $instance->many($keys); + } + + /** + * Obtains multiple cache items by their unique keys. + * + * @param \Psr\SimpleCache\iterable $keys A list of keys that can obtained in a single operation. + * @param mixed $default Default value to return for keys that do not exist. + * @return \Psr\SimpleCache\iterable A list of key => value pairs. Cache keys that do not exist or are stale will have $default as value. + * @throws \Psr\SimpleCache\InvalidArgumentException + * MUST be thrown if $keys is neither an array nor a Traversable, + * or if any of the $keys are not a legal value. + * @static + */ + public static function getMultiple($keys, $default = null) + { + /** @var \Illuminate\Cache\Repository $instance */ + return $instance->getMultiple($keys, $default); + } + + /** + * Retrieve an item from the cache and delete it. + * + * @param string $key + * @param mixed $default + * @return mixed + * @static + */ + public static function pull($key, $default = null) + { + /** @var \Illuminate\Cache\Repository $instance */ + return $instance->pull($key, $default); + } + + /** + * Store an item in the cache. + * + * @param string $key + * @param mixed $value + * @param \DateTimeInterface|\DateInterval|int|null $ttl + * @return bool + * @static + */ + public static function put($key, $value, $ttl = null) + { + /** @var \Illuminate\Cache\Repository $instance */ + return $instance->put($key, $value, $ttl); + } + + /** + * Persists data in the cache, uniquely referenced by a key with an optional expiration TTL time. + * + * @param string $key The key of the item to store. + * @param mixed $value The value of the item to store, must be serializable. + * @param null|int|\DateInterval $ttl Optional. The TTL value of this item. If no value is sent and + * the driver supports TTL then the library may set a default value + * for it or let the driver take care of that. + * @return bool True on success and false on failure. + * @throws \Psr\SimpleCache\InvalidArgumentException + * MUST be thrown if the $key string is not a legal value. + * @static + */ + public static function set($key, $value, $ttl = null) + { + /** @var \Illuminate\Cache\Repository $instance */ + return $instance->set($key, $value, $ttl); + } + + /** + * Store multiple items in the cache for a given number of seconds. + * + * @param array $values + * @param \DateTimeInterface|\DateInterval|int|null $ttl + * @return bool + * @static + */ + public static function putMany($values, $ttl = null) + { + /** @var \Illuminate\Cache\Repository $instance */ + return $instance->putMany($values, $ttl); + } + + /** + * Persists a set of key => value pairs in the cache, with an optional TTL. + * + * @param \Psr\SimpleCache\iterable $values A list of key => value pairs for a multiple-set operation. + * @param null|int|\DateInterval $ttl Optional. The TTL value of this item. If no value is sent and + * the driver supports TTL then the library may set a default value + * for it or let the driver take care of that. + * @return bool True on success and false on failure. + * @throws \Psr\SimpleCache\InvalidArgumentException + * MUST be thrown if $values is neither an array nor a Traversable, + * or if any of the $values are not a legal value. + * @static + */ + public static function setMultiple($values, $ttl = null) + { + /** @var \Illuminate\Cache\Repository $instance */ + return $instance->setMultiple($values, $ttl); + } + + /** + * Store an item in the cache if the key does not exist. + * + * @param string $key + * @param mixed $value + * @param \DateTimeInterface|\DateInterval|int|null $ttl + * @return bool + * @static + */ + public static function add($key, $value, $ttl = null) + { + /** @var \Illuminate\Cache\Repository $instance */ + return $instance->add($key, $value, $ttl); + } + + /** + * Increment the value of an item in the cache. + * + * @param string $key + * @param mixed $value + * @return int|bool + * @static + */ + public static function increment($key, $value = 1) + { + /** @var \Illuminate\Cache\Repository $instance */ + return $instance->increment($key, $value); + } + + /** + * Decrement the value of an item in the cache. + * + * @param string $key + * @param mixed $value + * @return int|bool + * @static + */ + public static function decrement($key, $value = 1) + { + /** @var \Illuminate\Cache\Repository $instance */ + return $instance->decrement($key, $value); + } + + /** + * Store an item in the cache indefinitely. + * + * @param string $key + * @param mixed $value + * @return bool + * @static + */ + public static function forever($key, $value) + { + /** @var \Illuminate\Cache\Repository $instance */ + return $instance->forever($key, $value); + } + + /** + * Get an item from the cache, or execute the given Closure and store the result. + * + * @param string $key + * @param \DateTimeInterface|\DateInterval|int|null $ttl + * @param \Closure $callback + * @return mixed + * @static + */ + public static function remember($key, $ttl, $callback) + { + /** @var \Illuminate\Cache\Repository $instance */ + return $instance->remember($key, $ttl, $callback); + } + + /** + * Get an item from the cache, or execute the given Closure and store the result forever. + * + * @param string $key + * @param \Closure $callback + * @return mixed + * @static + */ + public static function sear($key, $callback) + { + /** @var \Illuminate\Cache\Repository $instance */ + return $instance->sear($key, $callback); + } + + /** + * Get an item from the cache, or execute the given Closure and store the result forever. + * + * @param string $key + * @param \Closure $callback + * @return mixed + * @static + */ + public static function rememberForever($key, $callback) + { + /** @var \Illuminate\Cache\Repository $instance */ + return $instance->rememberForever($key, $callback); + } + + /** + * Remove an item from the cache. + * + * @param string $key + * @return bool + * @static + */ + public static function forget($key) + { + /** @var \Illuminate\Cache\Repository $instance */ + return $instance->forget($key); + } + + /** + * Delete an item from the cache by its unique key. + * + * @param string $key The unique cache key of the item to delete. + * @return bool True if the item was successfully removed. False if there was an error. + * @throws \Psr\SimpleCache\InvalidArgumentException + * MUST be thrown if the $key string is not a legal value. + * @static + */ + public static function delete($key) + { + /** @var \Illuminate\Cache\Repository $instance */ + return $instance->delete($key); + } + + /** + * Deletes multiple cache items in a single operation. + * + * @param \Psr\SimpleCache\iterable $keys A list of string-based keys to be deleted. + * @return bool True if the items were successfully removed. False if there was an error. + * @throws \Psr\SimpleCache\InvalidArgumentException + * MUST be thrown if $keys is neither an array nor a Traversable, + * or if any of the $keys are not a legal value. + * @static + */ + public static function deleteMultiple($keys) + { + /** @var \Illuminate\Cache\Repository $instance */ + return $instance->deleteMultiple($keys); + } + + /** + * Wipes clean the entire cache's keys. + * + * @return bool True on success and false on failure. + * @static + */ + public static function clear() + { + /** @var \Illuminate\Cache\Repository $instance */ + return $instance->clear(); + } + + /** + * Begin executing a new tags operation if the store supports it. + * + * @param array|mixed $names + * @return \Illuminate\Cache\TaggedCache + * @throws \BadMethodCallException + * @static + */ + public static function tags($names) + { + /** @var \Illuminate\Cache\Repository $instance */ + return $instance->tags($names); + } + + /** + * Get the default cache time. + * + * @return int|null + * @static + */ + public static function getDefaultCacheTime() + { + /** @var \Illuminate\Cache\Repository $instance */ + return $instance->getDefaultCacheTime(); + } + + /** + * Set the default cache time in seconds. + * + * @param int|null $seconds + * @return \Illuminate\Cache\Repository + * @static + */ + public static function setDefaultCacheTime($seconds) + { + /** @var \Illuminate\Cache\Repository $instance */ + return $instance->setDefaultCacheTime($seconds); + } + + /** + * Get the cache store implementation. + * + * @return \Illuminate\Contracts\Cache\Store + * @static + */ + public static function getStore() + { + /** @var \Illuminate\Cache\Repository $instance */ + return $instance->getStore(); + } + + /** + * Get the event dispatcher instance. + * + * @return \Illuminate\Contracts\Events\Dispatcher + * @static + */ + public static function getEventDispatcher() + { + /** @var \Illuminate\Cache\Repository $instance */ + return $instance->getEventDispatcher(); + } + + /** + * Set the event dispatcher instance. + * + * @param \Illuminate\Contracts\Events\Dispatcher $events + * @return void + * @static + */ + public static function setEventDispatcher($events) + { + /** @var \Illuminate\Cache\Repository $instance */ + $instance->setEventDispatcher($events); + } + + /** + * Determine if a cached value exists. + * + * @param string $key + * @return bool + * @static + */ + public static function offsetExists($key) + { + /** @var \Illuminate\Cache\Repository $instance */ + return $instance->offsetExists($key); + } + + /** + * Retrieve an item from the cache by key. + * + * @param string $key + * @return mixed + * @static + */ + public static function offsetGet($key) + { + /** @var \Illuminate\Cache\Repository $instance */ + return $instance->offsetGet($key); + } + + /** + * Store an item in the cache for the default time. + * + * @param string $key + * @param mixed $value + * @return void + * @static + */ + public static function offsetSet($key, $value) + { + /** @var \Illuminate\Cache\Repository $instance */ + $instance->offsetSet($key, $value); + } + + /** + * Remove an item from the cache. + * + * @param string $key + * @return void + * @static + */ + public static function offsetUnset($key) + { + /** @var \Illuminate\Cache\Repository $instance */ + $instance->offsetUnset($key); + } + + /** + * Register a custom macro. + * + * @param string $name + * @param object|callable $macro + * @return void + * @static + */ + public static function macro($name, $macro) + { + \Illuminate\Cache\Repository::macro($name, $macro); + } + + /** + * Mix another object into the class. + * + * @param object $mixin + * @param bool $replace + * @return void + * @throws \ReflectionException + * @static + */ + public static function mixin($mixin, $replace = true) + { + \Illuminate\Cache\Repository::mixin($mixin, $replace); + } + + /** + * Checks if macro is registered. + * + * @param string $name + * @return bool + * @static + */ + public static function hasMacro($name) + { + return \Illuminate\Cache\Repository::hasMacro($name); + } + + /** + * Dynamically handle calls to the class. + * + * @param string $method + * @param array $parameters + * @return mixed + * @throws \BadMethodCallException + * @static + */ + public static function macroCall($method, $parameters) + { + /** @var \Illuminate\Cache\Repository $instance */ + return $instance->macroCall($method, $parameters); + } + + /** + * Remove all items from the cache. + * + * @return bool + * @static + */ + public static function flush() + { + /** @var \Illuminate\Cache\FileStore $instance */ + return $instance->flush(); + } + + /** + * Get the Filesystem instance. + * + * @return \Illuminate\Filesystem\Filesystem + * @static + */ + public static function getFilesystem() + { + /** @var \Illuminate\Cache\FileStore $instance */ + return $instance->getFilesystem(); + } + + /** + * Get the working directory of the cache. + * + * @return string + * @static + */ + public static function getDirectory() + { + /** @var \Illuminate\Cache\FileStore $instance */ + return $instance->getDirectory(); + } + + /** + * Get the cache key prefix. + * + * @return string + * @static + */ + public static function getPrefix() + { + /** @var \Illuminate\Cache\FileStore $instance */ + return $instance->getPrefix(); + } + + } + + /** + * + * + * @see \Illuminate\Config\Repository + */ + class Config { + + /** + * Determine if the given configuration value exists. + * + * @param string $key + * @return bool + * @static + */ + public static function has($key) + { + /** @var \Illuminate\Config\Repository $instance */ + return $instance->has($key); + } + + /** + * Get the specified configuration value. + * + * @param array|string $key + * @param mixed $default + * @return mixed + * @static + */ + public static function get($key, $default = null) + { + /** @var \Illuminate\Config\Repository $instance */ + return $instance->get($key, $default); + } + + /** + * Get many configuration values. + * + * @param array $keys + * @return array + * @static + */ + public static function getMany($keys) + { + /** @var \Illuminate\Config\Repository $instance */ + return $instance->getMany($keys); + } + + /** + * Set a given configuration value. + * + * @param array|string $key + * @param mixed $value + * @return void + * @static + */ + public static function set($key, $value = null) + { + /** @var \Illuminate\Config\Repository $instance */ + $instance->set($key, $value); + } + + /** + * Prepend a value onto an array configuration value. + * + * @param string $key + * @param mixed $value + * @return void + * @static + */ + public static function prepend($key, $value) + { + /** @var \Illuminate\Config\Repository $instance */ + $instance->prepend($key, $value); + } + + /** + * Push a value onto an array configuration value. + * + * @param string $key + * @param mixed $value + * @return void + * @static + */ + public static function push($key, $value) + { + /** @var \Illuminate\Config\Repository $instance */ + $instance->push($key, $value); + } + + /** + * Get all of the configuration items for the application. + * + * @return array + * @static + */ + public static function all() + { + /** @var \Illuminate\Config\Repository $instance */ + return $instance->all(); + } + + /** + * Determine if the given configuration option exists. + * + * @param string $key + * @return bool + * @static + */ + public static function offsetExists($key) + { + /** @var \Illuminate\Config\Repository $instance */ + return $instance->offsetExists($key); + } + + /** + * Get a configuration option. + * + * @param string $key + * @return mixed + * @static + */ + public static function offsetGet($key) + { + /** @var \Illuminate\Config\Repository $instance */ + return $instance->offsetGet($key); + } + + /** + * Set a configuration option. + * + * @param string $key + * @param mixed $value + * @return void + * @static + */ + public static function offsetSet($key, $value) + { + /** @var \Illuminate\Config\Repository $instance */ + $instance->offsetSet($key, $value); + } + + /** + * Unset a configuration option. + * + * @param string $key + * @return void + * @static + */ + public static function offsetUnset($key) + { + /** @var \Illuminate\Config\Repository $instance */ + $instance->offsetUnset($key); + } + + } + + /** + * + * + * @see \Illuminate\Cookie\CookieJar + */ + class Cookie { + + /** + * Create a new cookie instance. + * + * @param string $name + * @param string $value + * @param int $minutes + * @param string|null $path + * @param string|null $domain + * @param bool|null $secure + * @param bool $httpOnly + * @param bool $raw + * @param string|null $sameSite + * @return \Symfony\Component\HttpFoundation\Cookie + * @static + */ + public static function make($name, $value, $minutes = 0, $path = null, $domain = null, $secure = null, $httpOnly = true, $raw = false, $sameSite = null) + { + /** @var \Illuminate\Cookie\CookieJar $instance */ + return $instance->make($name, $value, $minutes, $path, $domain, $secure, $httpOnly, $raw, $sameSite); + } + + /** + * Create a cookie that lasts "forever" (five years). + * + * @param string $name + * @param string $value + * @param string|null $path + * @param string|null $domain + * @param bool|null $secure + * @param bool $httpOnly + * @param bool $raw + * @param string|null $sameSite + * @return \Symfony\Component\HttpFoundation\Cookie + * @static + */ + public static function forever($name, $value, $path = null, $domain = null, $secure = null, $httpOnly = true, $raw = false, $sameSite = null) + { + /** @var \Illuminate\Cookie\CookieJar $instance */ + return $instance->forever($name, $value, $path, $domain, $secure, $httpOnly, $raw, $sameSite); + } + + /** + * Expire the given cookie. + * + * @param string $name + * @param string|null $path + * @param string|null $domain + * @return \Symfony\Component\HttpFoundation\Cookie + * @static + */ + public static function forget($name, $path = null, $domain = null) + { + /** @var \Illuminate\Cookie\CookieJar $instance */ + return $instance->forget($name, $path, $domain); + } + + /** + * Determine if a cookie has been queued. + * + * @param string $key + * @param string|null $path + * @return bool + * @static + */ + public static function hasQueued($key, $path = null) + { + /** @var \Illuminate\Cookie\CookieJar $instance */ + return $instance->hasQueued($key, $path); + } + + /** + * Get a queued cookie instance. + * + * @param string $key + * @param mixed $default + * @param string|null $path + * @return \Symfony\Component\HttpFoundation\Cookie + * @static + */ + public static function queued($key, $default = null, $path = null) + { + /** @var \Illuminate\Cookie\CookieJar $instance */ + return $instance->queued($key, $default, $path); + } + + /** + * Queue a cookie to send with the next response. + * + * @param array $parameters + * @return void + * @static + */ + public static function queue(...$parameters) + { + /** @var \Illuminate\Cookie\CookieJar $instance */ + $instance->queue(...$parameters); + } + + /** + * Remove a cookie from the queue. + * + * @param string $name + * @param string|null $path + * @return void + * @static + */ + public static function unqueue($name, $path = null) + { + /** @var \Illuminate\Cookie\CookieJar $instance */ + $instance->unqueue($name, $path); + } + + /** + * Set the default path and domain for the jar. + * + * @param string $path + * @param string $domain + * @param bool $secure + * @param string|null $sameSite + * @return \Illuminate\Cookie\CookieJar + * @static + */ + public static function setDefaultPathAndDomain($path, $domain, $secure = false, $sameSite = null) + { + /** @var \Illuminate\Cookie\CookieJar $instance */ + return $instance->setDefaultPathAndDomain($path, $domain, $secure, $sameSite); + } + + /** + * Get the cookies which have been queued for the next request. + * + * @return \Symfony\Component\HttpFoundation\Cookie[] + * @static + */ + public static function getQueuedCookies() + { + /** @var \Illuminate\Cookie\CookieJar $instance */ + return $instance->getQueuedCookies(); + } + + /** + * Register a custom macro. + * + * @param string $name + * @param object|callable $macro + * @return void + * @static + */ + public static function macro($name, $macro) + { + \Illuminate\Cookie\CookieJar::macro($name, $macro); + } + + /** + * Mix another object into the class. + * + * @param object $mixin + * @param bool $replace + * @return void + * @throws \ReflectionException + * @static + */ + public static function mixin($mixin, $replace = true) + { + \Illuminate\Cookie\CookieJar::mixin($mixin, $replace); + } + + /** + * Checks if macro is registered. + * + * @param string $name + * @return bool + * @static + */ + public static function hasMacro($name) + { + return \Illuminate\Cookie\CookieJar::hasMacro($name); + } + + } + + /** + * + * + * @see \Illuminate\Encryption\Encrypter + */ + class Crypt { + + /** + * Determine if the given key and cipher combination is valid. + * + * @param string $key + * @param string $cipher + * @return bool + * @static + */ + public static function supported($key, $cipher) + { + return \Illuminate\Encryption\Encrypter::supported($key, $cipher); + } + + /** + * Create a new encryption key for the given cipher. + * + * @param string $cipher + * @return string + * @static + */ + public static function generateKey($cipher) + { + return \Illuminate\Encryption\Encrypter::generateKey($cipher); + } + + /** + * Encrypt the given value. + * + * @param mixed $value + * @param bool $serialize + * @return string + * @throws \Illuminate\Contracts\Encryption\EncryptException + * @static + */ + public static function encrypt($value, $serialize = true) + { + /** @var \Illuminate\Encryption\Encrypter $instance */ + return $instance->encrypt($value, $serialize); + } + + /** + * Encrypt a string without serialization. + * + * @param string $value + * @return string + * @throws \Illuminate\Contracts\Encryption\EncryptException + * @static + */ + public static function encryptString($value) + { + /** @var \Illuminate\Encryption\Encrypter $instance */ + return $instance->encryptString($value); + } + + /** + * Decrypt the given value. + * + * @param string $payload + * @param bool $unserialize + * @return mixed + * @throws \Illuminate\Contracts\Encryption\DecryptException + * @static + */ + public static function decrypt($payload, $unserialize = true) + { + /** @var \Illuminate\Encryption\Encrypter $instance */ + return $instance->decrypt($payload, $unserialize); + } + + /** + * Decrypt the given string without unserialization. + * + * @param string $payload + * @return string + * @throws \Illuminate\Contracts\Encryption\DecryptException + * @static + */ + public static function decryptString($payload) + { + /** @var \Illuminate\Encryption\Encrypter $instance */ + return $instance->decryptString($payload); + } + + /** + * Get the encryption key. + * + * @return string + * @static + */ + public static function getKey() + { + /** @var \Illuminate\Encryption\Encrypter $instance */ + return $instance->getKey(); + } + + } + + /** + * + * + * @see \Illuminate\Database\DatabaseManager + * @see \Illuminate\Database\Connection + */ + class DB { + + /** + * Get a database connection instance. + * + * @param string|null $name + * @return \Illuminate\Database\Connection + * @static + */ + public static function connection($name = null) + { + /** @var \Illuminate\Database\DatabaseManager $instance */ + return $instance->connection($name); + } + + /** + * Disconnect from the given database and remove from local cache. + * + * @param string|null $name + * @return void + * @static + */ + public static function purge($name = null) + { + /** @var \Illuminate\Database\DatabaseManager $instance */ + $instance->purge($name); + } + + /** + * Disconnect from the given database. + * + * @param string|null $name + * @return void + * @static + */ + public static function disconnect($name = null) + { + /** @var \Illuminate\Database\DatabaseManager $instance */ + $instance->disconnect($name); + } + + /** + * Reconnect to the given database. + * + * @param string|null $name + * @return \Illuminate\Database\Connection + * @static + */ + public static function reconnect($name = null) + { + /** @var \Illuminate\Database\DatabaseManager $instance */ + return $instance->reconnect($name); + } + + /** + * Get the default connection name. + * + * @return string + * @static + */ + public static function getDefaultConnection() + { + /** @var \Illuminate\Database\DatabaseManager $instance */ + return $instance->getDefaultConnection(); + } + + /** + * Set the default connection name. + * + * @param string $name + * @return void + * @static + */ + public static function setDefaultConnection($name) + { + /** @var \Illuminate\Database\DatabaseManager $instance */ + $instance->setDefaultConnection($name); + } + + /** + * Get all of the support drivers. + * + * @return array + * @static + */ + public static function supportedDrivers() + { + /** @var \Illuminate\Database\DatabaseManager $instance */ + return $instance->supportedDrivers(); + } + + /** + * Get all of the drivers that are actually available. + * + * @return array + * @static + */ + public static function availableDrivers() + { + /** @var \Illuminate\Database\DatabaseManager $instance */ + return $instance->availableDrivers(); + } + + /** + * Register an extension connection resolver. + * + * @param string $name + * @param callable $resolver + * @return void + * @static + */ + public static function extend($name, $resolver) + { + /** @var \Illuminate\Database\DatabaseManager $instance */ + $instance->extend($name, $resolver); + } + + /** + * Return all of the created connections. + * + * @return array + * @static + */ + public static function getConnections() + { + /** @var \Illuminate\Database\DatabaseManager $instance */ + return $instance->getConnections(); + } + + /** + * Set the database reconnector callback. + * + * @param callable $reconnector + * @return void + * @static + */ + public static function setReconnector($reconnector) + { + /** @var \Illuminate\Database\DatabaseManager $instance */ + $instance->setReconnector($reconnector); + } + + /** + * Get a schema builder instance for the connection. + * + * @return \Illuminate\Database\Schema\MySqlBuilder + * @static + */ + public static function getSchemaBuilder() + { + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->getSchemaBuilder(); + } + + /** + * Set the query grammar to the default implementation. + * + * @return void + * @static + */ + public static function useDefaultQueryGrammar() + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + $instance->useDefaultQueryGrammar(); + } + + /** + * Set the schema grammar to the default implementation. + * + * @return void + * @static + */ + public static function useDefaultSchemaGrammar() + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + $instance->useDefaultSchemaGrammar(); + } + + /** + * Set the query post processor to the default implementation. + * + * @return void + * @static + */ + public static function useDefaultPostProcessor() + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + $instance->useDefaultPostProcessor(); + } + + /** + * Begin a fluent query against a database table. + * + * @param \Closure|\Illuminate\Database\Query\Builder|string $table + * @param string|null $as + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function table($table, $as = null) + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->table($table, $as); + } + + /** + * Get a new query builder instance. + * + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function query() + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->query(); + } + + /** + * Run a select statement and return a single result. + * + * @param string $query + * @param array $bindings + * @param bool $useReadPdo + * @return mixed + * @static + */ + public static function selectOne($query, $bindings = [], $useReadPdo = true) + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->selectOne($query, $bindings, $useReadPdo); + } + + /** + * Run a select statement against the database. + * + * @param string $query + * @param array $bindings + * @return array + * @static + */ + public static function selectFromWriteConnection($query, $bindings = []) + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->selectFromWriteConnection($query, $bindings); + } + + /** + * Run a select statement against the database. + * + * @param string $query + * @param array $bindings + * @param bool $useReadPdo + * @return array + * @static + */ + public static function select($query, $bindings = [], $useReadPdo = true) + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->select($query, $bindings, $useReadPdo); + } + + /** + * Run a select statement against the database and returns a generator. + * + * @param string $query + * @param array $bindings + * @param bool $useReadPdo + * @return \Generator + * @static + */ + public static function cursor($query, $bindings = [], $useReadPdo = true) + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->cursor($query, $bindings, $useReadPdo); + } + + /** + * Run an insert statement against the database. + * + * @param string $query + * @param array $bindings + * @return bool + * @static + */ + public static function insert($query, $bindings = []) + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->insert($query, $bindings); + } + + /** + * Run an update statement against the database. + * + * @param string $query + * @param array $bindings + * @return int + * @static + */ + public static function update($query, $bindings = []) + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->update($query, $bindings); + } + + /** + * Run a delete statement against the database. + * + * @param string $query + * @param array $bindings + * @return int + * @static + */ + public static function delete($query, $bindings = []) + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->delete($query, $bindings); + } + + /** + * Execute an SQL statement and return the boolean result. + * + * @param string $query + * @param array $bindings + * @return bool + * @static + */ + public static function statement($query, $bindings = []) + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->statement($query, $bindings); + } + + /** + * Run an SQL statement and get the number of rows affected. + * + * @param string $query + * @param array $bindings + * @return int + * @static + */ + public static function affectingStatement($query, $bindings = []) + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->affectingStatement($query, $bindings); + } + + /** + * Run a raw, unprepared query against the PDO connection. + * + * @param string $query + * @return bool + * @static + */ + public static function unprepared($query) + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->unprepared($query); + } + + /** + * Execute the given callback in "dry run" mode. + * + * @param \Closure $callback + * @return array + * @static + */ + public static function pretend($callback) + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->pretend($callback); + } + + /** + * Bind values to their parameters in the given statement. + * + * @param \PDOStatement $statement + * @param array $bindings + * @return void + * @static + */ + public static function bindValues($statement, $bindings) + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + $instance->bindValues($statement, $bindings); + } + + /** + * Prepare the query bindings for execution. + * + * @param array $bindings + * @return array + * @static + */ + public static function prepareBindings($bindings) + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->prepareBindings($bindings); + } + + /** + * Log a query in the connection's query log. + * + * @param string $query + * @param array $bindings + * @param float|null $time + * @return void + * @static + */ + public static function logQuery($query, $bindings, $time = null) + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + $instance->logQuery($query, $bindings, $time); + } + + /** + * Register a database query listener with the connection. + * + * @param \Closure $callback + * @return void + * @static + */ + public static function listen($callback) + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + $instance->listen($callback); + } + + /** + * Get a new raw query expression. + * + * @param mixed $value + * @return \Illuminate\Database\Query\Expression + * @static + */ + public static function raw($value) + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->raw($value); + } + + /** + * Indicate if any records have been modified. + * + * @param bool $value + * @return void + * @static + */ + public static function recordsHaveBeenModified($value = true) + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + $instance->recordsHaveBeenModified($value); + } + + /** + * Is Doctrine available? + * + * @return bool + * @static + */ + public static function isDoctrineAvailable() + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->isDoctrineAvailable(); + } + + /** + * Get a Doctrine Schema Column instance. + * + * @param string $table + * @param string $column + * @return \Doctrine\DBAL\Schema\Column + * @static + */ + public static function getDoctrineColumn($table, $column) + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->getDoctrineColumn($table, $column); + } + + /** + * Get the Doctrine DBAL schema manager for the connection. + * + * @return \Doctrine\DBAL\Schema\AbstractSchemaManager + * @static + */ + public static function getDoctrineSchemaManager() + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->getDoctrineSchemaManager(); + } + + /** + * Get the Doctrine DBAL database connection instance. + * + * @return \Doctrine\DBAL\Connection + * @static + */ + public static function getDoctrineConnection() + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->getDoctrineConnection(); + } + + /** + * Get the current PDO connection. + * + * @return \PDO + * @static + */ + public static function getPdo() + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->getPdo(); + } + + /** + * Get the current PDO connection parameter without executing any reconnect logic. + * + * @return \PDO|\Closure|null + * @static + */ + public static function getRawPdo() + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->getRawPdo(); + } + + /** + * Get the current PDO connection used for reading. + * + * @return \PDO + * @static + */ + public static function getReadPdo() + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->getReadPdo(); + } + + /** + * Get the current read PDO connection parameter without executing any reconnect logic. + * + * @return \PDO|\Closure|null + * @static + */ + public static function getRawReadPdo() + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->getRawReadPdo(); + } + + /** + * Set the PDO connection. + * + * @param \PDO|\Closure|null $pdo + * @return \Illuminate\Database\MySqlConnection + * @static + */ + public static function setPdo($pdo) + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->setPdo($pdo); + } + + /** + * Set the PDO connection used for reading. + * + * @param \PDO|\Closure|null $pdo + * @return \Illuminate\Database\MySqlConnection + * @static + */ + public static function setReadPdo($pdo) + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->setReadPdo($pdo); + } + + /** + * Get the database connection name. + * + * @return string|null + * @static + */ + public static function getName() + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->getName(); + } + + /** + * Get an option from the configuration options. + * + * @param string|null $option + * @return mixed + * @static + */ + public static function getConfig($option = null) + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->getConfig($option); + } + + /** + * Get the PDO driver name. + * + * @return string + * @static + */ + public static function getDriverName() + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->getDriverName(); + } + + /** + * Get the query grammar used by the connection. + * + * @return \Illuminate\Database\Query\Grammars\Grammar + * @static + */ + public static function getQueryGrammar() + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->getQueryGrammar(); + } + + /** + * Set the query grammar used by the connection. + * + * @param \Illuminate\Database\Query\Grammars\Grammar $grammar + * @return \Illuminate\Database\MySqlConnection + * @static + */ + public static function setQueryGrammar($grammar) + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->setQueryGrammar($grammar); + } + + /** + * Get the schema grammar used by the connection. + * + * @return \Illuminate\Database\Schema\Grammars\Grammar + * @static + */ + public static function getSchemaGrammar() + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->getSchemaGrammar(); + } + + /** + * Set the schema grammar used by the connection. + * + * @param \Illuminate\Database\Schema\Grammars\Grammar $grammar + * @return \Illuminate\Database\MySqlConnection + * @static + */ + public static function setSchemaGrammar($grammar) + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->setSchemaGrammar($grammar); + } + + /** + * Get the query post processor used by the connection. + * + * @return \Illuminate\Database\Query\Processors\Processor + * @static + */ + public static function getPostProcessor() + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->getPostProcessor(); + } + + /** + * Set the query post processor used by the connection. + * + * @param \Illuminate\Database\Query\Processors\Processor $processor + * @return \Illuminate\Database\MySqlConnection + * @static + */ + public static function setPostProcessor($processor) + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->setPostProcessor($processor); + } + + /** + * Get the event dispatcher used by the connection. + * + * @return \Illuminate\Contracts\Events\Dispatcher + * @static + */ + public static function getEventDispatcher() + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->getEventDispatcher(); + } + + /** + * Set the event dispatcher instance on the connection. + * + * @param \Illuminate\Contracts\Events\Dispatcher $events + * @return \Illuminate\Database\MySqlConnection + * @static + */ + public static function setEventDispatcher($events) + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->setEventDispatcher($events); + } + + /** + * Unset the event dispatcher for this connection. + * + * @return void + * @static + */ + public static function unsetEventDispatcher() + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + $instance->unsetEventDispatcher(); + } + + /** + * Determine if the connection is in a "dry run". + * + * @return bool + * @static + */ + public static function pretending() + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->pretending(); + } + + /** + * Get the connection query log. + * + * @return array + * @static + */ + public static function getQueryLog() + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->getQueryLog(); + } + + /** + * Clear the query log. + * + * @return void + * @static + */ + public static function flushQueryLog() + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + $instance->flushQueryLog(); + } + + /** + * Enable the query log on the connection. + * + * @return void + * @static + */ + public static function enableQueryLog() + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + $instance->enableQueryLog(); + } + + /** + * Disable the query log on the connection. + * + * @return void + * @static + */ + public static function disableQueryLog() + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + $instance->disableQueryLog(); + } + + /** + * Determine whether we're logging queries. + * + * @return bool + * @static + */ + public static function logging() + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->logging(); + } + + /** + * Get the name of the connected database. + * + * @return string + * @static + */ + public static function getDatabaseName() + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->getDatabaseName(); + } + + /** + * Set the name of the connected database. + * + * @param string $database + * @return \Illuminate\Database\MySqlConnection + * @static + */ + public static function setDatabaseName($database) + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->setDatabaseName($database); + } + + /** + * Get the table prefix for the connection. + * + * @return string + * @static + */ + public static function getTablePrefix() + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->getTablePrefix(); + } + + /** + * Set the table prefix in use by the connection. + * + * @param string $prefix + * @return \Illuminate\Database\MySqlConnection + * @static + */ + public static function setTablePrefix($prefix) + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->setTablePrefix($prefix); + } + + /** + * Set the table prefix and return the grammar. + * + * @param \Illuminate\Database\Grammar $grammar + * @return \Illuminate\Database\Grammar + * @static + */ + public static function withTablePrefix($grammar) + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->withTablePrefix($grammar); + } + + /** + * Register a connection resolver. + * + * @param string $driver + * @param \Closure $callback + * @return void + * @static + */ + public static function resolverFor($driver, $callback) + { + //Method inherited from \Illuminate\Database\Connection + \Illuminate\Database\MySqlConnection::resolverFor($driver, $callback); + } + + /** + * Get the connection resolver for the given driver. + * + * @param string $driver + * @return mixed + * @static + */ + public static function getResolver($driver) + { + //Method inherited from \Illuminate\Database\Connection + return \Illuminate\Database\MySqlConnection::getResolver($driver); + } + + /** + * Execute a Closure within a transaction. + * + * @param \Closure $callback + * @param int $attempts + * @return mixed + * @throws \Exception|\Throwable + * @static + */ + public static function transaction($callback, $attempts = 1) + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->transaction($callback, $attempts); + } + + /** + * Start a new database transaction. + * + * @return void + * @throws \Exception + * @static + */ + public static function beginTransaction() + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + $instance->beginTransaction(); + } + + /** + * Commit the active database transaction. + * + * @return void + * @static + */ + public static function commit() + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + $instance->commit(); + } + + /** + * Rollback the active database transaction. + * + * @param int|null $toLevel + * @return void + * @throws \Exception + * @static + */ + public static function rollBack($toLevel = null) + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + $instance->rollBack($toLevel); + } + + /** + * Get the number of active transactions. + * + * @return int + * @static + */ + public static function transactionLevel() + { + //Method inherited from \Illuminate\Database\Connection + /** @var \Illuminate\Database\MySqlConnection $instance */ + return $instance->transactionLevel(); + } + + } + + /** + * + * + * @see \Illuminate\Events\Dispatcher + */ + class Event { + + /** + * Register an event listener with the dispatcher. + * + * @param string|array $events + * @param \Closure|string $listener + * @return void + * @static + */ + public static function listen($events, $listener) + { + /** @var \Illuminate\Events\Dispatcher $instance */ + $instance->listen($events, $listener); + } + + /** + * Determine if a given event has listeners. + * + * @param string $eventName + * @return bool + * @static + */ + public static function hasListeners($eventName) + { + /** @var \Illuminate\Events\Dispatcher $instance */ + return $instance->hasListeners($eventName); + } + + /** + * Determine if the given event has any wildcard listeners. + * + * @param string $eventName + * @return bool + * @static + */ + public static function hasWildcardListeners($eventName) + { + /** @var \Illuminate\Events\Dispatcher $instance */ + return $instance->hasWildcardListeners($eventName); + } + + /** + * Register an event and payload to be fired later. + * + * @param string $event + * @param array $payload + * @return void + * @static + */ + public static function push($event, $payload = []) + { + /** @var \Illuminate\Events\Dispatcher $instance */ + $instance->push($event, $payload); + } + + /** + * Flush a set of pushed events. + * + * @param string $event + * @return void + * @static + */ + public static function flush($event) + { + /** @var \Illuminate\Events\Dispatcher $instance */ + $instance->flush($event); + } + + /** + * Register an event subscriber with the dispatcher. + * + * @param object|string $subscriber + * @return void + * @static + */ + public static function subscribe($subscriber) + { + /** @var \Illuminate\Events\Dispatcher $instance */ + $instance->subscribe($subscriber); + } + + /** + * Fire an event until the first non-null response is returned. + * + * @param string|object $event + * @param mixed $payload + * @return array|null + * @static + */ + public static function until($event, $payload = []) + { + /** @var \Illuminate\Events\Dispatcher $instance */ + return $instance->until($event, $payload); + } + + /** + * Fire an event and call the listeners. + * + * @param string|object $event + * @param mixed $payload + * @param bool $halt + * @return array|null + * @static + */ + public static function dispatch($event, $payload = [], $halt = false) + { + /** @var \Illuminate\Events\Dispatcher $instance */ + return $instance->dispatch($event, $payload, $halt); + } + + /** + * Get all of the listeners for a given event name. + * + * @param string $eventName + * @return array + * @static + */ + public static function getListeners($eventName) + { + /** @var \Illuminate\Events\Dispatcher $instance */ + return $instance->getListeners($eventName); + } + + /** + * Register an event listener with the dispatcher. + * + * @param \Closure|string $listener + * @param bool $wildcard + * @return \Closure + * @static + */ + public static function makeListener($listener, $wildcard = false) + { + /** @var \Illuminate\Events\Dispatcher $instance */ + return $instance->makeListener($listener, $wildcard); + } + + /** + * Create a class based listener using the IoC container. + * + * @param string $listener + * @param bool $wildcard + * @return \Closure + * @static + */ + public static function createClassListener($listener, $wildcard = false) + { + /** @var \Illuminate\Events\Dispatcher $instance */ + return $instance->createClassListener($listener, $wildcard); + } + + /** + * Remove a set of listeners from the dispatcher. + * + * @param string $event + * @return void + * @static + */ + public static function forget($event) + { + /** @var \Illuminate\Events\Dispatcher $instance */ + $instance->forget($event); + } + + /** + * Forget all of the pushed listeners. + * + * @return void + * @static + */ + public static function forgetPushed() + { + /** @var \Illuminate\Events\Dispatcher $instance */ + $instance->forgetPushed(); + } + + /** + * Set the queue resolver implementation. + * + * @param callable $resolver + * @return \Illuminate\Events\Dispatcher + * @static + */ + public static function setQueueResolver($resolver) + { + /** @var \Illuminate\Events\Dispatcher $instance */ + return $instance->setQueueResolver($resolver); + } + + /** + * Register a custom macro. + * + * @param string $name + * @param object|callable $macro + * @return void + * @static + */ + public static function macro($name, $macro) + { + \Illuminate\Events\Dispatcher::macro($name, $macro); + } + + /** + * Mix another object into the class. + * + * @param object $mixin + * @param bool $replace + * @return void + * @throws \ReflectionException + * @static + */ + public static function mixin($mixin, $replace = true) + { + \Illuminate\Events\Dispatcher::mixin($mixin, $replace); + } + + /** + * Checks if macro is registered. + * + * @param string $name + * @return bool + * @static + */ + public static function hasMacro($name) + { + return \Illuminate\Events\Dispatcher::hasMacro($name); + } + + /** + * Assert if an event was dispatched based on a truth-test callback. + * + * @param string $event + * @param callable|int|null $callback + * @return void + * @static + */ + public static function assertDispatched($event, $callback = null) + { + /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ + $instance->assertDispatched($event, $callback); + } + + /** + * Assert if a event was dispatched a number of times. + * + * @param string $event + * @param int $times + * @return void + * @static + */ + public static function assertDispatchedTimes($event, $times = 1) + { + /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ + $instance->assertDispatchedTimes($event, $times); + } + + /** + * Determine if an event was dispatched based on a truth-test callback. + * + * @param string $event + * @param callable|null $callback + * @return void + * @static + */ + public static function assertNotDispatched($event, $callback = null) + { + /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ + $instance->assertNotDispatched($event, $callback); + } + + /** + * Get all of the events matching a truth-test callback. + * + * @param string $event + * @param callable|null $callback + * @return \Illuminate\Support\Collection + * @static + */ + public static function dispatched($event, $callback = null) + { + /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ + return $instance->dispatched($event, $callback); + } + + /** + * Determine if the given event has been dispatched. + * + * @param string $event + * @return bool + * @static + */ + public static function hasDispatched($event) + { + /** @var \Illuminate\Support\Testing\Fakes\EventFake $instance */ + return $instance->hasDispatched($event); + } + + } + + /** + * + * + * @see \Illuminate\Filesystem\Filesystem + */ + class File { + + /** + * Determine if a file or directory exists. + * + * @param string $path + * @return bool + * @static + */ + public static function exists($path) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->exists($path); + } + + /** + * Determine if a file or directory is missing. + * + * @param string $path + * @return bool + * @static + */ + public static function missing($path) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->missing($path); + } + + /** + * Get the contents of a file. + * + * @param string $path + * @param bool $lock + * @return string + * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException + * @static + */ + public static function get($path, $lock = false) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->get($path, $lock); + } + + /** + * Get contents of a file with shared access. + * + * @param string $path + * @return string + * @static + */ + public static function sharedGet($path) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->sharedGet($path); + } + + /** + * Get the returned value of a file. + * + * @param string $path + * @return mixed + * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException + * @static + */ + public static function getRequire($path) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->getRequire($path); + } + + /** + * Require the given file once. + * + * @param string $file + * @return mixed + * @static + */ + public static function requireOnce($file) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->requireOnce($file); + } + + /** + * Get the MD5 hash of the file at the given path. + * + * @param string $path + * @return string + * @static + */ + public static function hash($path) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->hash($path); + } + + /** + * Write the contents of a file. + * + * @param string $path + * @param string $contents + * @param bool $lock + * @return int|bool + * @static + */ + public static function put($path, $contents, $lock = false) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->put($path, $contents, $lock); + } + + /** + * Write the contents of a file, replacing it atomically if it already exists. + * + * @param string $path + * @param string $content + * @return void + * @static + */ + public static function replace($path, $content) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + $instance->replace($path, $content); + } + + /** + * Prepend to a file. + * + * @param string $path + * @param string $data + * @return int + * @static + */ + public static function prepend($path, $data) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->prepend($path, $data); + } + + /** + * Append to a file. + * + * @param string $path + * @param string $data + * @return int + * @static + */ + public static function append($path, $data) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->append($path, $data); + } + + /** + * Get or set UNIX mode of a file or directory. + * + * @param string $path + * @param int|null $mode + * @return mixed + * @static + */ + public static function chmod($path, $mode = null) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->chmod($path, $mode); + } + + /** + * Delete the file at a given path. + * + * @param string|array $paths + * @return bool + * @static + */ + public static function delete($paths) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->delete($paths); + } + + /** + * Move a file to a new location. + * + * @param string $path + * @param string $target + * @return bool + * @static + */ + public static function move($path, $target) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->move($path, $target); + } + + /** + * Copy a file to a new location. + * + * @param string $path + * @param string $target + * @return bool + * @static + */ + public static function copy($path, $target) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->copy($path, $target); + } + + /** + * Create a symlink to the target file or directory. On Windows, a hard link is created if the target is a file. + * + * @param string $target + * @param string $link + * @return void + * @static + */ + public static function link($target, $link) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + $instance->link($target, $link); + } + + /** + * Extract the file name from a file path. + * + * @param string $path + * @return string + * @static + */ + public static function name($path) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->name($path); + } + + /** + * Extract the trailing name component from a file path. + * + * @param string $path + * @return string + * @static + */ + public static function basename($path) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->basename($path); + } + + /** + * Extract the parent directory from a file path. + * + * @param string $path + * @return string + * @static + */ + public static function dirname($path) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->dirname($path); + } + + /** + * Extract the file extension from a file path. + * + * @param string $path + * @return string + * @static + */ + public static function extension($path) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->extension($path); + } + + /** + * Get the file type of a given file. + * + * @param string $path + * @return string + * @static + */ + public static function type($path) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->type($path); + } + + /** + * Get the mime-type of a given file. + * + * @param string $path + * @return string|false + * @static + */ + public static function mimeType($path) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->mimeType($path); + } + + /** + * Get the file size of a given file. + * + * @param string $path + * @return int + * @static + */ + public static function size($path) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->size($path); + } + + /** + * Get the file's last modification time. + * + * @param string $path + * @return int + * @static + */ + public static function lastModified($path) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->lastModified($path); + } + + /** + * Determine if the given path is a directory. + * + * @param string $directory + * @return bool + * @static + */ + public static function isDirectory($directory) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->isDirectory($directory); + } + + /** + * Determine if the given path is readable. + * + * @param string $path + * @return bool + * @static + */ + public static function isReadable($path) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->isReadable($path); + } + + /** + * Determine if the given path is writable. + * + * @param string $path + * @return bool + * @static + */ + public static function isWritable($path) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->isWritable($path); + } + + /** + * Determine if the given path is a file. + * + * @param string $file + * @return bool + * @static + */ + public static function isFile($file) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->isFile($file); + } + + /** + * Find path names matching a given pattern. + * + * @param string $pattern + * @param int $flags + * @return array + * @static + */ + public static function glob($pattern, $flags = 0) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->glob($pattern, $flags); + } + + /** + * Get an array of all files in a directory. + * + * @param string $directory + * @param bool $hidden + * @return \Symfony\Component\Finder\SplFileInfo[] + * @static + */ + public static function files($directory, $hidden = false) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->files($directory, $hidden); + } + + /** + * Get all of the files from the given directory (recursive). + * + * @param string $directory + * @param bool $hidden + * @return \Symfony\Component\Finder\SplFileInfo[] + * @static + */ + public static function allFiles($directory, $hidden = false) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->allFiles($directory, $hidden); + } + + /** + * Get all of the directories within a given directory. + * + * @param string $directory + * @return array + * @static + */ + public static function directories($directory) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->directories($directory); + } + + /** + * Ensure a directory exists. + * + * @param string $path + * @param int $mode + * @param bool $recursive + * @return void + * @static + */ + public static function ensureDirectoryExists($path, $mode = 493, $recursive = true) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + $instance->ensureDirectoryExists($path, $mode, $recursive); + } + + /** + * Create a directory. + * + * @param string $path + * @param int $mode + * @param bool $recursive + * @param bool $force + * @return bool + * @static + */ + public static function makeDirectory($path, $mode = 493, $recursive = false, $force = false) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->makeDirectory($path, $mode, $recursive, $force); + } + + /** + * Move a directory. + * + * @param string $from + * @param string $to + * @param bool $overwrite + * @return bool + * @static + */ + public static function moveDirectory($from, $to, $overwrite = false) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->moveDirectory($from, $to, $overwrite); + } + + /** + * Copy a directory from one location to another. + * + * @param string $directory + * @param string $destination + * @param int|null $options + * @return bool + * @static + */ + public static function copyDirectory($directory, $destination, $options = null) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->copyDirectory($directory, $destination, $options); + } + + /** + * Recursively delete a directory. + * + * The directory itself may be optionally preserved. + * + * @param string $directory + * @param bool $preserve + * @return bool + * @static + */ + public static function deleteDirectory($directory, $preserve = false) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->deleteDirectory($directory, $preserve); + } + + /** + * Remove all of the directories within a given directory. + * + * @param string $directory + * @return bool + * @static + */ + public static function deleteDirectories($directory) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->deleteDirectories($directory); + } + + /** + * Empty the specified directory of all files and folders. + * + * @param string $directory + * @return bool + * @static + */ + public static function cleanDirectory($directory) + { + /** @var \Illuminate\Filesystem\Filesystem $instance */ + return $instance->cleanDirectory($directory); + } + + /** + * Register a custom macro. + * + * @param string $name + * @param object|callable $macro + * @return void + * @static + */ + public static function macro($name, $macro) + { + \Illuminate\Filesystem\Filesystem::macro($name, $macro); + } + + /** + * Mix another object into the class. + * + * @param object $mixin + * @param bool $replace + * @return void + * @throws \ReflectionException + * @static + */ + public static function mixin($mixin, $replace = true) + { + \Illuminate\Filesystem\Filesystem::mixin($mixin, $replace); + } + + /** + * Checks if macro is registered. + * + * @param string $name + * @return bool + * @static + */ + public static function hasMacro($name) + { + return \Illuminate\Filesystem\Filesystem::hasMacro($name); + } + + } + + /** + * + * + * @see \Illuminate\Contracts\Auth\Access\Gate + */ + class Gate { + + /** + * Determine if a given ability has been defined. + * + * @param string|array $ability + * @return bool + * @static + */ + public static function has($ability) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->has($ability); + } + + /** + * Define a new ability. + * + * @param string $ability + * @param callable|string $callback + * @return \Illuminate\Auth\Access\Gate + * @throws \InvalidArgumentException + * @static + */ + public static function define($ability, $callback) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->define($ability, $callback); + } + + /** + * Define abilities for a resource. + * + * @param string $name + * @param string $class + * @param array|null $abilities + * @return \Illuminate\Auth\Access\Gate + * @static + */ + public static function resource($name, $class, $abilities = null) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->resource($name, $class, $abilities); + } + + /** + * Define a policy class for a given class type. + * + * @param string $class + * @param string $policy + * @return \Illuminate\Auth\Access\Gate + * @static + */ + public static function policy($class, $policy) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->policy($class, $policy); + } + + /** + * Register a callback to run before all Gate checks. + * + * @param callable $callback + * @return \Illuminate\Auth\Access\Gate + * @static + */ + public static function before($callback) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->before($callback); + } + + /** + * Register a callback to run after all Gate checks. + * + * @param callable $callback + * @return \Illuminate\Auth\Access\Gate + * @static + */ + public static function after($callback) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->after($callback); + } + + /** + * Determine if the given ability should be granted for the current user. + * + * @param string $ability + * @param array|mixed $arguments + * @return bool + * @static + */ + public static function allows($ability, $arguments = []) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->allows($ability, $arguments); + } + + /** + * Determine if the given ability should be denied for the current user. + * + * @param string $ability + * @param array|mixed $arguments + * @return bool + * @static + */ + public static function denies($ability, $arguments = []) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->denies($ability, $arguments); + } + + /** + * Determine if all of the given abilities should be granted for the current user. + * + * @param \Illuminate\Auth\Access\iterable|string $abilities + * @param array|mixed $arguments + * @return bool + * @static + */ + public static function check($abilities, $arguments = []) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->check($abilities, $arguments); + } + + /** + * Determine if any one of the given abilities should be granted for the current user. + * + * @param \Illuminate\Auth\Access\iterable|string $abilities + * @param array|mixed $arguments + * @return bool + * @static + */ + public static function any($abilities, $arguments = []) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->any($abilities, $arguments); + } + + /** + * Determine if all of the given abilities should be denied for the current user. + * + * @param \Illuminate\Auth\Access\iterable|string $abilities + * @param array|mixed $arguments + * @return bool + * @static + */ + public static function none($abilities, $arguments = []) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->none($abilities, $arguments); + } + + /** + * Determine if the given ability should be granted for the current user. + * + * @param string $ability + * @param array|mixed $arguments + * @return \Illuminate\Auth\Access\Response + * @throws \Illuminate\Auth\Access\AuthorizationException + * @static + */ + public static function authorize($ability, $arguments = []) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->authorize($ability, $arguments); + } + + /** + * Inspect the user for the given ability. + * + * @param string $ability + * @param array|mixed $arguments + * @return \Illuminate\Auth\Access\Response + * @static + */ + public static function inspect($ability, $arguments = []) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->inspect($ability, $arguments); + } + + /** + * Get the raw result from the authorization callback. + * + * @param string $ability + * @param array|mixed $arguments + * @return mixed + * @throws \Illuminate\Auth\Access\AuthorizationException + * @static + */ + public static function raw($ability, $arguments = []) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->raw($ability, $arguments); + } + + /** + * Get a policy instance for a given class. + * + * @param object|string $class + * @return mixed + * @static + */ + public static function getPolicyFor($class) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->getPolicyFor($class); + } + + /** + * Specify a callback to be used to guess policy names. + * + * @param callable $callback + * @return \Illuminate\Auth\Access\Gate + * @static + */ + public static function guessPolicyNamesUsing($callback) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->guessPolicyNamesUsing($callback); + } + + /** + * Build a policy class instance of the given type. + * + * @param object|string $class + * @return mixed + * @throws \Illuminate\Contracts\Container\BindingResolutionException + * @static + */ + public static function resolvePolicy($class) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->resolvePolicy($class); + } + + /** + * Get a gate instance for the given user. + * + * @param \Illuminate\Contracts\Auth\Authenticatable|mixed $user + * @return static + * @static + */ + public static function forUser($user) + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->forUser($user); + } + + /** + * Get all of the defined abilities. + * + * @return array + * @static + */ + public static function abilities() + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->abilities(); + } + + /** + * Get all of the defined policies. + * + * @return array + * @static + */ + public static function policies() + { + /** @var \Illuminate\Auth\Access\Gate $instance */ + return $instance->policies(); + } + + } + + /** + * + * + * @see \Illuminate\Hashing\HashManager + */ + class Hash { + + /** + * Create an instance of the Bcrypt hash Driver. + * + * @return \Illuminate\Hashing\BcryptHasher + * @static + */ + public static function createBcryptDriver() + { + /** @var \Illuminate\Hashing\HashManager $instance */ + return $instance->createBcryptDriver(); + } + + /** + * Create an instance of the Argon2i hash Driver. + * + * @return \Illuminate\Hashing\ArgonHasher + * @static + */ + public static function createArgonDriver() + { + /** @var \Illuminate\Hashing\HashManager $instance */ + return $instance->createArgonDriver(); + } + + /** + * Create an instance of the Argon2id hash Driver. + * + * @return \Illuminate\Hashing\Argon2IdHasher + * @static + */ + public static function createArgon2idDriver() + { + /** @var \Illuminate\Hashing\HashManager $instance */ + return $instance->createArgon2idDriver(); + } + + /** + * Get information about the given hashed value. + * + * @param string $hashedValue + * @return array + * @static + */ + public static function info($hashedValue) + { + /** @var \Illuminate\Hashing\HashManager $instance */ + return $instance->info($hashedValue); + } + + /** + * Hash the given value. + * + * @param string $value + * @param array $options + * @return string + * @static + */ + public static function make($value, $options = []) + { + /** @var \Illuminate\Hashing\HashManager $instance */ + return $instance->make($value, $options); + } + + /** + * Check the given plain value against a hash. + * + * @param string $value + * @param string $hashedValue + * @param array $options + * @return bool + * @static + */ + public static function check($value, $hashedValue, $options = []) + { + /** @var \Illuminate\Hashing\HashManager $instance */ + return $instance->check($value, $hashedValue, $options); + } + + /** + * Check if the given hash has been hashed using the given options. + * + * @param string $hashedValue + * @param array $options + * @return bool + * @static + */ + public static function needsRehash($hashedValue, $options = []) + { + /** @var \Illuminate\Hashing\HashManager $instance */ + return $instance->needsRehash($hashedValue, $options); + } + + /** + * Get the default driver name. + * + * @return string + * @static + */ + public static function getDefaultDriver() + { + /** @var \Illuminate\Hashing\HashManager $instance */ + return $instance->getDefaultDriver(); + } + + /** + * Get a driver instance. + * + * @param string $driver + * @return mixed + * @throws \InvalidArgumentException + * @static + */ + public static function driver($driver = null) + { + //Method inherited from \Illuminate\Support\Manager + /** @var \Illuminate\Hashing\HashManager $instance */ + return $instance->driver($driver); + } + + /** + * Register a custom driver creator Closure. + * + * @param string $driver + * @param \Closure $callback + * @return \Illuminate\Hashing\HashManager + * @static + */ + public static function extend($driver, $callback) + { + //Method inherited from \Illuminate\Support\Manager + /** @var \Illuminate\Hashing\HashManager $instance */ + return $instance->extend($driver, $callback); + } + + /** + * Get all of the created "drivers". + * + * @return array + * @static + */ + public static function getDrivers() + { + //Method inherited from \Illuminate\Support\Manager + /** @var \Illuminate\Hashing\HashManager $instance */ + return $instance->getDrivers(); + } + + } + + /** + * + * + * @see \Illuminate\Translation\Translator + */ + class Lang { + + /** + * Determine if a translation exists for a given locale. + * + * @param string $key + * @param string|null $locale + * @return bool + * @static + */ + public static function hasForLocale($key, $locale = null) + { + /** @var \Illuminate\Translation\Translator $instance */ + return $instance->hasForLocale($key, $locale); + } + + /** + * Determine if a translation exists. + * + * @param string $key + * @param string|null $locale + * @param bool $fallback + * @return bool + * @static + */ + public static function has($key, $locale = null, $fallback = true) + { + /** @var \Illuminate\Translation\Translator $instance */ + return $instance->has($key, $locale, $fallback); + } + + /** + * Get the translation for the given key. + * + * @param string $key + * @param array $replace + * @param string|null $locale + * @param bool $fallback + * @return string|array + * @static + */ + public static function get($key, $replace = [], $locale = null, $fallback = true) + { + /** @var \Illuminate\Translation\Translator $instance */ + return $instance->get($key, $replace, $locale, $fallback); + } + + /** + * Get a translation according to an integer value. + * + * @param string $key + * @param \Countable|int|array $number + * @param array $replace + * @param string|null $locale + * @return string + * @static + */ + public static function choice($key, $number, $replace = [], $locale = null) + { + /** @var \Illuminate\Translation\Translator $instance */ + return $instance->choice($key, $number, $replace, $locale); + } + + /** + * Add translation lines to the given locale. + * + * @param array $lines + * @param string $locale + * @param string $namespace + * @return void + * @static + */ + public static function addLines($lines, $locale, $namespace = '*') + { + /** @var \Illuminate\Translation\Translator $instance */ + $instance->addLines($lines, $locale, $namespace); + } + + /** + * Load the specified language group. + * + * @param string $namespace + * @param string $group + * @param string $locale + * @return void + * @static + */ + public static function load($namespace, $group, $locale) + { + /** @var \Illuminate\Translation\Translator $instance */ + $instance->load($namespace, $group, $locale); + } + + /** + * Add a new namespace to the loader. + * + * @param string $namespace + * @param string $hint + * @return void + * @static + */ + public static function addNamespace($namespace, $hint) + { + /** @var \Illuminate\Translation\Translator $instance */ + $instance->addNamespace($namespace, $hint); + } + + /** + * Add a new JSON path to the loader. + * + * @param string $path + * @return void + * @static + */ + public static function addJsonPath($path) + { + /** @var \Illuminate\Translation\Translator $instance */ + $instance->addJsonPath($path); + } + + /** + * Parse a key into namespace, group, and item. + * + * @param string $key + * @return array + * @static + */ + public static function parseKey($key) + { + /** @var \Illuminate\Translation\Translator $instance */ + return $instance->parseKey($key); + } + + /** + * Get the message selector instance. + * + * @return \Illuminate\Translation\MessageSelector + * @static + */ + public static function getSelector() + { + /** @var \Illuminate\Translation\Translator $instance */ + return $instance->getSelector(); + } + + /** + * Set the message selector instance. + * + * @param \Illuminate\Translation\MessageSelector $selector + * @return void + * @static + */ + public static function setSelector($selector) + { + /** @var \Illuminate\Translation\Translator $instance */ + $instance->setSelector($selector); + } + + /** + * Get the language line loader implementation. + * + * @return \Illuminate\Contracts\Translation\Loader + * @static + */ + public static function getLoader() + { + /** @var \Illuminate\Translation\Translator $instance */ + return $instance->getLoader(); + } + + /** + * Get the default locale being used. + * + * @return string + * @static + */ + public static function locale() + { + /** @var \Illuminate\Translation\Translator $instance */ + return $instance->locale(); + } + + /** + * Get the default locale being used. + * + * @return string + * @static + */ + public static function getLocale() + { + /** @var \Illuminate\Translation\Translator $instance */ + return $instance->getLocale(); + } + + /** + * Set the default locale. + * + * @param string $locale + * @return void + * @static + */ + public static function setLocale($locale) + { + /** @var \Illuminate\Translation\Translator $instance */ + $instance->setLocale($locale); + } + + /** + * Get the fallback locale being used. + * + * @return string + * @static + */ + public static function getFallback() + { + /** @var \Illuminate\Translation\Translator $instance */ + return $instance->getFallback(); + } + + /** + * Set the fallback locale being used. + * + * @param string $fallback + * @return void + * @static + */ + public static function setFallback($fallback) + { + /** @var \Illuminate\Translation\Translator $instance */ + $instance->setFallback($fallback); + } + + /** + * Set the loaded translation groups. + * + * @param array $loaded + * @return void + * @static + */ + public static function setLoaded($loaded) + { + /** @var \Illuminate\Translation\Translator $instance */ + $instance->setLoaded($loaded); + } + + /** + * Set the parsed value of a key. + * + * @param string $key + * @param array $parsed + * @return void + * @static + */ + public static function setParsedKey($key, $parsed) + { + //Method inherited from \Illuminate\Support\NamespacedItemResolver + /** @var \Illuminate\Translation\Translator $instance */ + $instance->setParsedKey($key, $parsed); + } + + /** + * Register a custom macro. + * + * @param string $name + * @param object|callable $macro + * @return void + * @static + */ + public static function macro($name, $macro) + { + \Illuminate\Translation\Translator::macro($name, $macro); + } + + /** + * Mix another object into the class. + * + * @param object $mixin + * @param bool $replace + * @return void + * @throws \ReflectionException + * @static + */ + public static function mixin($mixin, $replace = true) + { + \Illuminate\Translation\Translator::mixin($mixin, $replace); + } + + /** + * Checks if macro is registered. + * + * @param string $name + * @return bool + * @static + */ + public static function hasMacro($name) + { + return \Illuminate\Translation\Translator::hasMacro($name); + } + + } + + /** + * + * + * @see \Illuminate\Log\Logger + */ + class Log { + + /** + * Create a new, on-demand aggregate logger instance. + * + * @param array $channels + * @param string|null $channel + * @return \Psr\Log\LoggerInterface + * @static + */ + public static function stack($channels, $channel = null) + { + /** @var \Illuminate\Log\LogManager $instance */ + return $instance->stack($channels, $channel); + } + + /** + * Get a log channel instance. + * + * @param string|null $channel + * @return \Psr\Log\LoggerInterface + * @static + */ + public static function channel($channel = null) + { + /** @var \Illuminate\Log\LogManager $instance */ + return $instance->channel($channel); + } + + /** + * Get a log driver instance. + * + * @param string|null $driver + * @return \Psr\Log\LoggerInterface + * @static + */ + public static function driver($driver = null) + { + /** @var \Illuminate\Log\LogManager $instance */ + return $instance->driver($driver); + } + + /** + * + * + * @return array + * @static + */ + public static function getChannels() + { + /** @var \Illuminate\Log\LogManager $instance */ + return $instance->getChannels(); + } + + /** + * Get the default log driver name. + * + * @return string + * @static + */ + public static function getDefaultDriver() + { + /** @var \Illuminate\Log\LogManager $instance */ + return $instance->getDefaultDriver(); + } + + /** + * Set the default log driver name. + * + * @param string $name + * @return void + * @static + */ + public static function setDefaultDriver($name) + { + /** @var \Illuminate\Log\LogManager $instance */ + $instance->setDefaultDriver($name); + } + + /** + * Register a custom driver creator Closure. + * + * @param string $driver + * @param \Closure $callback + * @return \Illuminate\Log\LogManager + * @static + */ + public static function extend($driver, $callback) + { + /** @var \Illuminate\Log\LogManager $instance */ + return $instance->extend($driver, $callback); + } + + /** + * Unset the given channel instance. + * + * @param string|null $name + * @return \Illuminate\Log\LogManager + * @static + */ + public static function forgetChannel($driver = null) + { + /** @var \Illuminate\Log\LogManager $instance */ + return $instance->forgetChannel($driver); + } + + /** + * System is unusable. + * + * @param string $message + * @param array $context + * @return void + * @static + */ + public static function emergency($message, $context = []) + { + /** @var \Illuminate\Log\LogManager $instance */ + $instance->emergency($message, $context); + } + + /** + * Action must be taken immediately. + * + * Example: Entire website down, database unavailable, etc. This should + * trigger the SMS alerts and wake you up. + * + * @param string $message + * @param array $context + * @return void + * @static + */ + public static function alert($message, $context = []) + { + /** @var \Illuminate\Log\LogManager $instance */ + $instance->alert($message, $context); + } + + /** + * Critical conditions. + * + * Example: Application component unavailable, unexpected exception. + * + * @param string $message + * @param array $context + * @return void + * @static + */ + public static function critical($message, $context = []) + { + /** @var \Illuminate\Log\LogManager $instance */ + $instance->critical($message, $context); + } + + /** + * Runtime errors that do not require immediate action but should typically + * be logged and monitored. + * + * @param string $message + * @param array $context + * @return void + * @static + */ + public static function error($message, $context = []) + { + /** @var \Illuminate\Log\LogManager $instance */ + $instance->error($message, $context); + } + + /** + * Exceptional occurrences that are not errors. + * + * Example: Use of deprecated APIs, poor use of an API, undesirable things + * that are not necessarily wrong. + * + * @param string $message + * @param array $context + * @return void + * @static + */ + public static function warning($message, $context = []) + { + /** @var \Illuminate\Log\LogManager $instance */ + $instance->warning($message, $context); + } + + /** + * Normal but significant events. + * + * @param string $message + * @param array $context + * @return void + * @static + */ + public static function notice($message, $context = []) + { + /** @var \Illuminate\Log\LogManager $instance */ + $instance->notice($message, $context); + } + + /** + * Interesting events. + * + * Example: User logs in, SQL logs. + * + * @param string $message + * @param array $context + * @return void + * @static + */ + public static function info($message, $context = []) + { + /** @var \Illuminate\Log\LogManager $instance */ + $instance->info($message, $context); + } + + /** + * Detailed debug information. + * + * @param string $message + * @param array $context + * @return void + * @static + */ + public static function debug($message, $context = []) + { + /** @var \Illuminate\Log\LogManager $instance */ + $instance->debug($message, $context); + } + + /** + * Logs with an arbitrary level. + * + * @param mixed $level + * @param string $message + * @param array $context + * @return void + * @static + */ + public static function log($level, $message, $context = []) + { + /** @var \Illuminate\Log\LogManager $instance */ + $instance->log($level, $message, $context); + } + + } + + /** + * + * + * @see \Illuminate\Mail\Mailer + * @see \Illuminate\Support\Testing\Fakes\MailFake + */ + class Mail { + + /** + * Set the global from address and name. + * + * @param string $address + * @param string|null $name + * @return void + * @static + */ + public static function alwaysFrom($address, $name = null) + { + /** @var \Illuminate\Mail\Mailer $instance */ + $instance->alwaysFrom($address, $name); + } + + /** + * Set the global reply-to address and name. + * + * @param string $address + * @param string|null $name + * @return void + * @static + */ + public static function alwaysReplyTo($address, $name = null) + { + /** @var \Illuminate\Mail\Mailer $instance */ + $instance->alwaysReplyTo($address, $name); + } + + /** + * Set the global to address and name. + * + * @param string $address + * @param string|null $name + * @return void + * @static + */ + public static function alwaysTo($address, $name = null) + { + /** @var \Illuminate\Mail\Mailer $instance */ + $instance->alwaysTo($address, $name); + } + + /** + * Begin the process of mailing a mailable class instance. + * + * @param mixed $users + * @return \Illuminate\Mail\PendingMail + * @static + */ + public static function to($users) + { + /** @var \Illuminate\Mail\Mailer $instance */ + return $instance->to($users); + } + + /** + * Begin the process of mailing a mailable class instance. + * + * @param mixed $users + * @return \Illuminate\Mail\PendingMail + * @static + */ + public static function cc($users) + { + /** @var \Illuminate\Mail\Mailer $instance */ + return $instance->cc($users); + } + + /** + * Begin the process of mailing a mailable class instance. + * + * @param mixed $users + * @return \Illuminate\Mail\PendingMail + * @static + */ + public static function bcc($users) + { + /** @var \Illuminate\Mail\Mailer $instance */ + return $instance->bcc($users); + } + + /** + * Send a new message with only an HTML part. + * + * @param string $html + * @param mixed $callback + * @return void + * @static + */ + public static function html($html, $callback) + { + /** @var \Illuminate\Mail\Mailer $instance */ + $instance->html($html, $callback); + } + + /** + * Send a new message with only a raw text part. + * + * @param string $text + * @param mixed $callback + * @return void + * @static + */ + public static function raw($text, $callback) + { + /** @var \Illuminate\Mail\Mailer $instance */ + $instance->raw($text, $callback); + } + + /** + * Send a new message with only a plain part. + * + * @param string $view + * @param array $data + * @param mixed $callback + * @return void + * @static + */ + public static function plain($view, $data, $callback) + { + /** @var \Illuminate\Mail\Mailer $instance */ + $instance->plain($view, $data, $callback); + } + + /** + * Render the given message as a view. + * + * @param string|array $view + * @param array $data + * @return string + * @static + */ + public static function render($view, $data = []) + { + /** @var \Illuminate\Mail\Mailer $instance */ + return $instance->render($view, $data); + } + + /** + * Send a new message using a view. + * + * @param \Illuminate\Contracts\Mail\Mailable|string|array $view + * @param array $data + * @param \Closure|string|null $callback + * @return void + * @static + */ + public static function send($view, $data = [], $callback = null) + { + /** @var \Illuminate\Mail\Mailer $instance */ + $instance->send($view, $data, $callback); + } + + /** + * Queue a new e-mail message for sending. + * + * @param \Illuminate\Contracts\Mail\Mailable $view + * @param string|null $queue + * @return mixed + * @throws \InvalidArgumentException + * @static + */ + public static function queue($view, $queue = null) + { + /** @var \Illuminate\Mail\Mailer $instance */ + return $instance->queue($view, $queue); + } + + /** + * Queue a new e-mail message for sending on the given queue. + * + * @param string $queue + * @param \Illuminate\Contracts\Mail\Mailable $view + * @return mixed + * @static + */ + public static function onQueue($queue, $view) + { + /** @var \Illuminate\Mail\Mailer $instance */ + return $instance->onQueue($queue, $view); + } + + /** + * Queue a new e-mail message for sending on the given queue. + * + * This method didn't match rest of framework's "onQueue" phrasing. Added "onQueue". + * + * @param string $queue + * @param \Illuminate\Contracts\Mail\Mailable $view + * @return mixed + * @static + */ + public static function queueOn($queue, $view) + { + /** @var \Illuminate\Mail\Mailer $instance */ + return $instance->queueOn($queue, $view); + } + + /** + * Queue a new e-mail message for sending after (n) seconds. + * + * @param \DateTimeInterface|\DateInterval|int $delay + * @param \Illuminate\Contracts\Mail\Mailable $view + * @param string|null $queue + * @return mixed + * @throws \InvalidArgumentException + * @static + */ + public static function later($delay, $view, $queue = null) + { + /** @var \Illuminate\Mail\Mailer $instance */ + return $instance->later($delay, $view, $queue); + } + + /** + * Queue a new e-mail message for sending after (n) seconds on the given queue. + * + * @param string $queue + * @param \DateTimeInterface|\DateInterval|int $delay + * @param \Illuminate\Contracts\Mail\Mailable $view + * @return mixed + * @static + */ + public static function laterOn($queue, $delay, $view) + { + /** @var \Illuminate\Mail\Mailer $instance */ + return $instance->laterOn($queue, $delay, $view); + } + + /** + * Get the array of failed recipients. + * + * @return array + * @static + */ + public static function failures() + { + /** @var \Illuminate\Mail\Mailer $instance */ + return $instance->failures(); + } + + /** + * Get the Swift Mailer instance. + * + * @return \Swift_Mailer + * @static + */ + public static function getSwiftMailer() + { + /** @var \Illuminate\Mail\Mailer $instance */ + return $instance->getSwiftMailer(); + } + + /** + * Get the view factory instance. + * + * @return \Illuminate\Contracts\View\Factory + * @static + */ + public static function getViewFactory() + { + /** @var \Illuminate\Mail\Mailer $instance */ + return $instance->getViewFactory(); + } + + /** + * Set the Swift Mailer instance. + * + * @param \Swift_Mailer $swift + * @return void + * @static + */ + public static function setSwiftMailer($swift) + { + /** @var \Illuminate\Mail\Mailer $instance */ + $instance->setSwiftMailer($swift); + } + + /** + * Set the queue manager instance. + * + * @param \Illuminate\Contracts\Queue\Factory $queue + * @return \Illuminate\Mail\Mailer + * @static + */ + public static function setQueue($queue) + { + /** @var \Illuminate\Mail\Mailer $instance */ + return $instance->setQueue($queue); + } + + /** + * Register a custom macro. + * + * @param string $name + * @param object|callable $macro + * @return void + * @static + */ + public static function macro($name, $macro) + { + \Illuminate\Mail\Mailer::macro($name, $macro); + } + + /** + * Mix another object into the class. + * + * @param object $mixin + * @param bool $replace + * @return void + * @throws \ReflectionException + * @static + */ + public static function mixin($mixin, $replace = true) + { + \Illuminate\Mail\Mailer::mixin($mixin, $replace); + } + + /** + * Checks if macro is registered. + * + * @param string $name + * @return bool + * @static + */ + public static function hasMacro($name) + { + return \Illuminate\Mail\Mailer::hasMacro($name); + } + + /** + * Assert if a mailable was sent based on a truth-test callback. + * + * @param string $mailable + * @param callable|int|null $callback + * @return void + * @static + */ + public static function assertSent($mailable, $callback = null) + { + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + $instance->assertSent($mailable, $callback); + } + + /** + * Determine if a mailable was not sent based on a truth-test callback. + * + * @param string $mailable + * @param callable|null $callback + * @return void + * @static + */ + public static function assertNotSent($mailable, $callback = null) + { + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + $instance->assertNotSent($mailable, $callback); + } + + /** + * Assert that no mailables were sent. + * + * @return void + * @static + */ + public static function assertNothingSent() + { + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + $instance->assertNothingSent(); + } + + /** + * Assert if a mailable was queued based on a truth-test callback. + * + * @param string $mailable + * @param callable|int|null $callback + * @return void + * @static + */ + public static function assertQueued($mailable, $callback = null) + { + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + $instance->assertQueued($mailable, $callback); + } + + /** + * Determine if a mailable was not queued based on a truth-test callback. + * + * @param string $mailable + * @param callable|null $callback + * @return void + * @static + */ + public static function assertNotQueued($mailable, $callback = null) + { + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + $instance->assertNotQueued($mailable, $callback); + } + + /** + * Assert that no mailables were queued. + * + * @return void + * @static + */ + public static function assertNothingQueued() + { + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + $instance->assertNothingQueued(); + } + + /** + * Get all of the mailables matching a truth-test callback. + * + * @param string $mailable + * @param callable|null $callback + * @return \Illuminate\Support\Collection + * @static + */ + public static function sent($mailable, $callback = null) + { + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + return $instance->sent($mailable, $callback); + } + + /** + * Determine if the given mailable has been sent. + * + * @param string $mailable + * @return bool + * @static + */ + public static function hasSent($mailable) + { + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + return $instance->hasSent($mailable); + } + + /** + * Get all of the queued mailables matching a truth-test callback. + * + * @param string $mailable + * @param callable|null $callback + * @return \Illuminate\Support\Collection + * @static + */ + public static function queued($mailable, $callback = null) + { + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + return $instance->queued($mailable, $callback); + } + + /** + * Determine if the given mailable has been queued. + * + * @param string $mailable + * @return bool + * @static + */ + public static function hasQueued($mailable) + { + /** @var \Illuminate\Support\Testing\Fakes\MailFake $instance */ + return $instance->hasQueued($mailable); + } + + } + + /** + * + * + * @see \Illuminate\Notifications\ChannelManager + */ + class Notification { + + /** + * Send the given notification to the given notifiable entities. + * + * @param \Illuminate\Support\Collection|array|mixed $notifiables + * @param mixed $notification + * @return void + * @static + */ + public static function send($notifiables, $notification) + { + /** @var \Illuminate\Notifications\ChannelManager $instance */ + $instance->send($notifiables, $notification); + } + + /** + * Send the given notification immediately. + * + * @param \Illuminate\Support\Collection|array|mixed $notifiables + * @param mixed $notification + * @param array|null $channels + * @return void + * @static + */ + public static function sendNow($notifiables, $notification, $channels = null) + { + /** @var \Illuminate\Notifications\ChannelManager $instance */ + $instance->sendNow($notifiables, $notification, $channels); + } + + /** + * Get a channel instance. + * + * @param string|null $name + * @return mixed + * @static + */ + public static function channel($name = null) + { + /** @var \Illuminate\Notifications\ChannelManager $instance */ + return $instance->channel($name); + } + + /** + * Get the default channel driver name. + * + * @return string + * @static + */ + public static function getDefaultDriver() + { + /** @var \Illuminate\Notifications\ChannelManager $instance */ + return $instance->getDefaultDriver(); + } + + /** + * Get the default channel driver name. + * + * @return string + * @static + */ + public static function deliversVia() + { + /** @var \Illuminate\Notifications\ChannelManager $instance */ + return $instance->deliversVia(); + } + + /** + * Set the default channel driver name. + * + * @param string $channel + * @return void + * @static + */ + public static function deliverVia($channel) + { + /** @var \Illuminate\Notifications\ChannelManager $instance */ + $instance->deliverVia($channel); + } + + /** + * Set the locale of notifications. + * + * @param string $locale + * @return \Illuminate\Notifications\ChannelManager + * @static + */ + public static function locale($locale) + { + /** @var \Illuminate\Notifications\ChannelManager $instance */ + return $instance->locale($locale); + } + + /** + * Get a driver instance. + * + * @param string $driver + * @return mixed + * @throws \InvalidArgumentException + * @static + */ + public static function driver($driver = null) + { + //Method inherited from \Illuminate\Support\Manager + /** @var \Illuminate\Notifications\ChannelManager $instance */ + return $instance->driver($driver); + } + + /** + * Register a custom driver creator Closure. + * + * @param string $driver + * @param \Closure $callback + * @return \Illuminate\Notifications\ChannelManager + * @static + */ + public static function extend($driver, $callback) + { + //Method inherited from \Illuminate\Support\Manager + /** @var \Illuminate\Notifications\ChannelManager $instance */ + return $instance->extend($driver, $callback); + } + + /** + * Get all of the created "drivers". + * + * @return array + * @static + */ + public static function getDrivers() + { + //Method inherited from \Illuminate\Support\Manager + /** @var \Illuminate\Notifications\ChannelManager $instance */ + return $instance->getDrivers(); + } + + /** + * Assert if a notification was sent based on a truth-test callback. + * + * @param mixed $notifiable + * @param string $notification + * @param callable|null $callback + * @return void + * @throws \Exception + * @static + */ + public static function assertSentTo($notifiable, $notification, $callback = null) + { + /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ + $instance->assertSentTo($notifiable, $notification, $callback); + } + + /** + * Assert if a notification was sent a number of times. + * + * @param mixed $notifiable + * @param string $notification + * @param int $times + * @return void + * @static + */ + public static function assertSentToTimes($notifiable, $notification, $times = 1) + { + /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ + $instance->assertSentToTimes($notifiable, $notification, $times); + } + + /** + * Determine if a notification was sent based on a truth-test callback. + * + * @param mixed $notifiable + * @param string $notification + * @param callable|null $callback + * @return void + * @throws \Exception + * @static + */ + public static function assertNotSentTo($notifiable, $notification, $callback = null) + { + /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ + $instance->assertNotSentTo($notifiable, $notification, $callback); + } + + /** + * Assert that no notifications were sent. + * + * @return void + * @static + */ + public static function assertNothingSent() + { + /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ + $instance->assertNothingSent(); + } + + /** + * Assert the total amount of times a notification was sent. + * + * @param int $expectedCount + * @param string $notification + * @return void + * @static + */ + public static function assertTimesSent($expectedCount, $notification) + { + /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ + $instance->assertTimesSent($expectedCount, $notification); + } + + /** + * Get all of the notifications matching a truth-test callback. + * + * @param mixed $notifiable + * @param string $notification + * @param callable|null $callback + * @return \Illuminate\Support\Collection + * @static + */ + public static function sent($notifiable, $notification, $callback = null) + { + /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ + return $instance->sent($notifiable, $notification, $callback); + } + + /** + * Determine if there are more notifications left to inspect. + * + * @param mixed $notifiable + * @param string $notification + * @return bool + * @static + */ + public static function hasSent($notifiable, $notification) + { + /** @var \Illuminate\Support\Testing\Fakes\NotificationFake $instance */ + return $instance->hasSent($notifiable, $notification); + } + + /** + * Register a custom macro. + * + * @param string $name + * @param object|callable $macro + * @return void + * @static + */ + public static function macro($name, $macro) + { + \Illuminate\Support\Testing\Fakes\NotificationFake::macro($name, $macro); + } + + /** + * Mix another object into the class. + * + * @param object $mixin + * @param bool $replace + * @return void + * @throws \ReflectionException + * @static + */ + public static function mixin($mixin, $replace = true) + { + \Illuminate\Support\Testing\Fakes\NotificationFake::mixin($mixin, $replace); + } + + /** + * Checks if macro is registered. + * + * @param string $name + * @return bool + * @static + */ + public static function hasMacro($name) + { + return \Illuminate\Support\Testing\Fakes\NotificationFake::hasMacro($name); + } + + } + + /** + * + * + * @method static string sendResetLink(array $credentials) + * @method static mixed reset(array $credentials, \Closure $callback) + * @see \Illuminate\Auth\Passwords\PasswordBroker + */ + class Password { + + /** + * Attempt to get the broker from the local cache. + * + * @param string|null $name + * @return \Illuminate\Contracts\Auth\PasswordBroker + * @static + */ + public static function broker($name = null) + { + /** @var \Illuminate\Auth\Passwords\PasswordBrokerManager $instance */ + return $instance->broker($name); + } + + /** + * Get the default password broker name. + * + * @return string + * @static + */ + public static function getDefaultDriver() + { + /** @var \Illuminate\Auth\Passwords\PasswordBrokerManager $instance */ + return $instance->getDefaultDriver(); + } + + /** + * Set the default password broker name. + * + * @param string $name + * @return void + * @static + */ + public static function setDefaultDriver($name) + { + /** @var \Illuminate\Auth\Passwords\PasswordBrokerManager $instance */ + $instance->setDefaultDriver($name); + } + + } + + /** + * + * + * @see \Illuminate\Queue\QueueManager + * @see \Illuminate\Queue\Queue + */ + class Queue { + + /** + * Register an event listener for the before job event. + * + * @param mixed $callback + * @return void + * @static + */ + public static function before($callback) + { + /** @var \Illuminate\Queue\QueueManager $instance */ + $instance->before($callback); + } + + /** + * Register an event listener for the after job event. + * + * @param mixed $callback + * @return void + * @static + */ + public static function after($callback) + { + /** @var \Illuminate\Queue\QueueManager $instance */ + $instance->after($callback); + } + + /** + * Register an event listener for the exception occurred job event. + * + * @param mixed $callback + * @return void + * @static + */ + public static function exceptionOccurred($callback) + { + /** @var \Illuminate\Queue\QueueManager $instance */ + $instance->exceptionOccurred($callback); + } + + /** + * Register an event listener for the daemon queue loop. + * + * @param mixed $callback + * @return void + * @static + */ + public static function looping($callback) + { + /** @var \Illuminate\Queue\QueueManager $instance */ + $instance->looping($callback); + } + + /** + * Register an event listener for the failed job event. + * + * @param mixed $callback + * @return void + * @static + */ + public static function failing($callback) + { + /** @var \Illuminate\Queue\QueueManager $instance */ + $instance->failing($callback); + } + + /** + * Register an event listener for the daemon queue stopping. + * + * @param mixed $callback + * @return void + * @static + */ + public static function stopping($callback) + { + /** @var \Illuminate\Queue\QueueManager $instance */ + $instance->stopping($callback); + } + + /** + * Determine if the driver is connected. + * + * @param string|null $name + * @return bool + * @static + */ + public static function connected($name = null) + { + /** @var \Illuminate\Queue\QueueManager $instance */ + return $instance->connected($name); + } + + /** + * Resolve a queue connection instance. + * + * @param string|null $name + * @return \Illuminate\Contracts\Queue\Queue + * @static + */ + public static function connection($name = null) + { + /** @var \Illuminate\Queue\QueueManager $instance */ + return $instance->connection($name); + } + + /** + * Add a queue connection resolver. + * + * @param string $driver + * @param \Closure $resolver + * @return void + * @static + */ + public static function extend($driver, $resolver) + { + /** @var \Illuminate\Queue\QueueManager $instance */ + $instance->extend($driver, $resolver); + } + + /** + * Add a queue connection resolver. + * + * @param string $driver + * @param \Closure $resolver + * @return void + * @static + */ + public static function addConnector($driver, $resolver) + { + /** @var \Illuminate\Queue\QueueManager $instance */ + $instance->addConnector($driver, $resolver); + } + + /** + * Get the name of the default queue connection. + * + * @return string + * @static + */ + public static function getDefaultDriver() + { + /** @var \Illuminate\Queue\QueueManager $instance */ + return $instance->getDefaultDriver(); + } + + /** + * Set the name of the default queue connection. + * + * @param string $name + * @return void + * @static + */ + public static function setDefaultDriver($name) + { + /** @var \Illuminate\Queue\QueueManager $instance */ + $instance->setDefaultDriver($name); + } + + /** + * Get the full name for the given connection. + * + * @param string|null $connection + * @return string + * @static + */ + public static function getName($connection = null) + { + /** @var \Illuminate\Queue\QueueManager $instance */ + return $instance->getName($connection); + } + + /** + * Assert if a job was pushed based on a truth-test callback. + * + * @param string $job + * @param callable|int|null $callback + * @return void + * @static + */ + public static function assertPushed($job, $callback = null) + { + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + $instance->assertPushed($job, $callback); + } + + /** + * Assert if a job was pushed based on a truth-test callback. + * + * @param string $queue + * @param string $job + * @param callable|null $callback + * @return void + * @static + */ + public static function assertPushedOn($queue, $job, $callback = null) + { + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + $instance->assertPushedOn($queue, $job, $callback); + } + + /** + * Assert if a job was pushed with chained jobs based on a truth-test callback. + * + * @param string $job + * @param array $expectedChain + * @param callable|null $callback + * @return void + * @static + */ + public static function assertPushedWithChain($job, $expectedChain = [], $callback = null) + { + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + $instance->assertPushedWithChain($job, $expectedChain, $callback); + } + + /** + * Assert if a job was pushed with an empty chain based on a truth-test callback. + * + * @param string $job + * @param callable|null $callback + * @return void + * @static + */ + public static function assertPushedWithoutChain($job, $callback = null) + { + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + $instance->assertPushedWithoutChain($job, $callback); + } + + /** + * Determine if a job was pushed based on a truth-test callback. + * + * @param string $job + * @param callable|null $callback + * @return void + * @static + */ + public static function assertNotPushed($job, $callback = null) + { + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + $instance->assertNotPushed($job, $callback); + } + + /** + * Assert that no jobs were pushed. + * + * @return void + * @static + */ + public static function assertNothingPushed() + { + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + $instance->assertNothingPushed(); + } + + /** + * Get all of the jobs matching a truth-test callback. + * + * @param string $job + * @param callable|null $callback + * @return \Illuminate\Support\Collection + * @static + */ + public static function pushed($job, $callback = null) + { + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->pushed($job, $callback); + } + + /** + * Determine if there are any stored jobs for a given class. + * + * @param string $job + * @return bool + * @static + */ + public static function hasPushed($job) + { + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->hasPushed($job); + } + + /** + * Get the size of the queue. + * + * @param string|null $queue + * @return int + * @static + */ + public static function size($queue = null) + { + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->size($queue); + } + + /** + * Push a new job onto the queue. + * + * @param string $job + * @param mixed $data + * @param string|null $queue + * @return mixed + * @static + */ + public static function push($job, $data = '', $queue = null) + { + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->push($job, $data, $queue); + } + + /** + * Push a raw payload onto the queue. + * + * @param string $payload + * @param string|null $queue + * @param array $options + * @return mixed + * @static + */ + public static function pushRaw($payload, $queue = null, $options = []) + { + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->pushRaw($payload, $queue, $options); + } + + /** + * Push a new job onto the queue after a delay. + * + * @param \DateTimeInterface|\DateInterval|int $delay + * @param string $job + * @param mixed $data + * @param string|null $queue + * @return mixed + * @static + */ + public static function later($delay, $job, $data = '', $queue = null) + { + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->later($delay, $job, $data, $queue); + } + + /** + * Push a new job onto the queue. + * + * @param string $queue + * @param string $job + * @param mixed $data + * @return mixed + * @static + */ + public static function pushOn($queue, $job, $data = '') + { + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->pushOn($queue, $job, $data); + } + + /** + * Push a new job onto the queue after a delay. + * + * @param string $queue + * @param \DateTimeInterface|\DateInterval|int $delay + * @param string $job + * @param mixed $data + * @return mixed + * @static + */ + public static function laterOn($queue, $delay, $job, $data = '') + { + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->laterOn($queue, $delay, $job, $data); + } + + /** + * Pop the next job off of the queue. + * + * @param string|null $queue + * @return \Illuminate\Contracts\Queue\Job|null + * @static + */ + public static function pop($queue = null) + { + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->pop($queue); + } + + /** + * Push an array of jobs onto the queue. + * + * @param array $jobs + * @param mixed $data + * @param string|null $queue + * @return mixed + * @static + */ + public static function bulk($jobs, $data = '', $queue = null) + { + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->bulk($jobs, $data, $queue); + } + + /** + * Get the jobs that have been pushed. + * + * @return array + * @static + */ + public static function pushedJobs() + { + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->pushedJobs(); + } + + /** + * Get the connection name for the queue. + * + * @return string + * @static + */ + public static function getConnectionName() + { + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->getConnectionName(); + } + + /** + * Set the connection name for the queue. + * + * @param string $name + * @return \Illuminate\Support\Testing\Fakes\QueueFake + * @static + */ + public static function setConnectionName($name) + { + /** @var \Illuminate\Support\Testing\Fakes\QueueFake $instance */ + return $instance->setConnectionName($name); + } + + /** + * Get the retry delay for an object-based queue handler. + * + * @param mixed $job + * @return mixed + * @static + */ + public static function getJobRetryDelay($job) + { + //Method inherited from \Illuminate\Queue\Queue + /** @var \Illuminate\Queue\SyncQueue $instance */ + return $instance->getJobRetryDelay($job); + } + + /** + * Get the expiration timestamp for an object-based queue handler. + * + * @param mixed $job + * @return mixed + * @static + */ + public static function getJobExpiration($job) + { + //Method inherited from \Illuminate\Queue\Queue + /** @var \Illuminate\Queue\SyncQueue $instance */ + return $instance->getJobExpiration($job); + } + + /** + * Register a callback to be executed when creating job payloads. + * + * @param callable $callback + * @return void + * @static + */ + public static function createPayloadUsing($callback) + { + //Method inherited from \Illuminate\Queue\Queue + \Illuminate\Queue\SyncQueue::createPayloadUsing($callback); + } + + /** + * Set the IoC container instance. + * + * @param \Illuminate\Container\Container $container + * @return void + * @static + */ + public static function setContainer($container) + { + //Method inherited from \Illuminate\Queue\Queue + /** @var \Illuminate\Queue\SyncQueue $instance */ + $instance->setContainer($container); + } + + } + + /** + * + * + * @see \Illuminate\Routing\Redirector + */ + class Redirect { + + /** + * Create a new redirect response to the "home" route. + * + * @param int $status + * @return \Illuminate\Http\RedirectResponse + * @static + */ + public static function home($status = 302) + { + /** @var \Illuminate\Routing\Redirector $instance */ + return $instance->home($status); + } + + /** + * Create a new redirect response to the previous location. + * + * @param int $status + * @param array $headers + * @param mixed $fallback + * @return \Illuminate\Http\RedirectResponse + * @static + */ + public static function back($status = 302, $headers = [], $fallback = false) + { + /** @var \Illuminate\Routing\Redirector $instance */ + return $instance->back($status, $headers, $fallback); + } + + /** + * Create a new redirect response to the current URI. + * + * @param int $status + * @param array $headers + * @return \Illuminate\Http\RedirectResponse + * @static + */ + public static function refresh($status = 302, $headers = []) + { + /** @var \Illuminate\Routing\Redirector $instance */ + return $instance->refresh($status, $headers); + } + + /** + * Create a new redirect response, while putting the current URL in the session. + * + * @param string $path + * @param int $status + * @param array $headers + * @param bool|null $secure + * @return \Illuminate\Http\RedirectResponse + * @static + */ + public static function guest($path, $status = 302, $headers = [], $secure = null) + { + /** @var \Illuminate\Routing\Redirector $instance */ + return $instance->guest($path, $status, $headers, $secure); + } + + /** + * Create a new redirect response to the previously intended location. + * + * @param string $default + * @param int $status + * @param array $headers + * @param bool|null $secure + * @return \Illuminate\Http\RedirectResponse + * @static + */ + public static function intended($default = '/', $status = 302, $headers = [], $secure = null) + { + /** @var \Illuminate\Routing\Redirector $instance */ + return $instance->intended($default, $status, $headers, $secure); + } + + /** + * Set the intended url. + * + * @param string $url + * @return void + * @static + */ + public static function setIntendedUrl($url) + { + /** @var \Illuminate\Routing\Redirector $instance */ + $instance->setIntendedUrl($url); + } + + /** + * Create a new redirect response to the given path. + * + * @param string $path + * @param int $status + * @param array $headers + * @param bool|null $secure + * @return \Illuminate\Http\RedirectResponse + * @static + */ + public static function to($path, $status = 302, $headers = [], $secure = null) + { + /** @var \Illuminate\Routing\Redirector $instance */ + return $instance->to($path, $status, $headers, $secure); + } + + /** + * Create a new redirect response to an external URL (no validation). + * + * @param string $path + * @param int $status + * @param array $headers + * @return \Illuminate\Http\RedirectResponse + * @static + */ + public static function away($path, $status = 302, $headers = []) + { + /** @var \Illuminate\Routing\Redirector $instance */ + return $instance->away($path, $status, $headers); + } + + /** + * Create a new redirect response to the given HTTPS path. + * + * @param string $path + * @param int $status + * @param array $headers + * @return \Illuminate\Http\RedirectResponse + * @static + */ + public static function secure($path, $status = 302, $headers = []) + { + /** @var \Illuminate\Routing\Redirector $instance */ + return $instance->secure($path, $status, $headers); + } + + /** + * Create a new redirect response to a named route. + * + * @param string $route + * @param mixed $parameters + * @param int $status + * @param array $headers + * @return \Illuminate\Http\RedirectResponse + * @static + */ + public static function route($route, $parameters = [], $status = 302, $headers = []) + { + /** @var \Illuminate\Routing\Redirector $instance */ + return $instance->route($route, $parameters, $status, $headers); + } + + /** + * Create a new redirect response to a controller action. + * + * @param string|array $action + * @param mixed $parameters + * @param int $status + * @param array $headers + * @return \Illuminate\Http\RedirectResponse + * @static + */ + public static function action($action, $parameters = [], $status = 302, $headers = []) + { + /** @var \Illuminate\Routing\Redirector $instance */ + return $instance->action($action, $parameters, $status, $headers); + } + + /** + * Get the URL generator instance. + * + * @return \Illuminate\Routing\UrlGenerator + * @static + */ + public static function getUrlGenerator() + { + /** @var \Illuminate\Routing\Redirector $instance */ + return $instance->getUrlGenerator(); + } + + /** + * Set the active session store. + * + * @param \Illuminate\Session\Store $session + * @return void + * @static + */ + public static function setSession($session) + { + /** @var \Illuminate\Routing\Redirector $instance */ + $instance->setSession($session); + } + + /** + * Register a custom macro. + * + * @param string $name + * @param object|callable $macro + * @return void + * @static + */ + public static function macro($name, $macro) + { + \Illuminate\Routing\Redirector::macro($name, $macro); + } + + /** + * Mix another object into the class. + * + * @param object $mixin + * @param bool $replace + * @return void + * @throws \ReflectionException + * @static + */ + public static function mixin($mixin, $replace = true) + { + \Illuminate\Routing\Redirector::mixin($mixin, $replace); + } + + /** + * Checks if macro is registered. + * + * @param string $name + * @return bool + * @static + */ + public static function hasMacro($name) + { + return \Illuminate\Routing\Redirector::hasMacro($name); + } + + } + + /** + * + * + * @method static mixed filterFiles(mixed $files) + * @see \Illuminate\Http\Request + */ + class Request { + + /** + * Create a new Illuminate HTTP request from server variables. + * + * @return static + * @static + */ + public static function capture() + { + return \Illuminate\Http\Request::capture(); + } + + /** + * Return the Request instance. + * + * @return \Illuminate\Http\Request + * @static + */ + public static function instance() + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->instance(); + } + + /** + * Get the request method. + * + * @return string + * @static + */ + public static function method() + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->method(); + } + + /** + * Get the root URL for the application. + * + * @return string + * @static + */ + public static function root() + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->root(); + } + + /** + * Get the URL (no query string) for the request. + * + * @return string + * @static + */ + public static function url() + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->url(); + } + + /** + * Get the full URL for the request. + * + * @return string + * @static + */ + public static function fullUrl() + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->fullUrl(); + } + + /** + * Get the full URL for the request with the added query string parameters. + * + * @param array $query + * @return string + * @static + */ + public static function fullUrlWithQuery($query) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->fullUrlWithQuery($query); + } + + /** + * Get the current path info for the request. + * + * @return string + * @static + */ + public static function path() + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->path(); + } + + /** + * Get the current decoded path info for the request. + * + * @return string + * @static + */ + public static function decodedPath() + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->decodedPath(); + } + + /** + * Get a segment from the URI (1 based index). + * + * @param int $index + * @param string|null $default + * @return string|null + * @static + */ + public static function segment($index, $default = null) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->segment($index, $default); + } + + /** + * Get all of the segments for the request path. + * + * @return array + * @static + */ + public static function segments() + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->segments(); + } + + /** + * Determine if the current request URI matches a pattern. + * + * @param mixed $patterns + * @return bool + * @static + */ + public static function is(...$patterns) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->is(...$patterns); + } + + /** + * Determine if the route name matches a given pattern. + * + * @param mixed $patterns + * @return bool + * @static + */ + public static function routeIs(...$patterns) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->routeIs(...$patterns); + } + + /** + * Determine if the current request URL and query string matches a pattern. + * + * @param mixed $patterns + * @return bool + * @static + */ + public static function fullUrlIs(...$patterns) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->fullUrlIs(...$patterns); + } + + /** + * Determine if the request is the result of an AJAX call. + * + * @return bool + * @static + */ + public static function ajax() + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->ajax(); + } + + /** + * Determine if the request is the result of an PJAX call. + * + * @return bool + * @static + */ + public static function pjax() + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->pjax(); + } + + /** + * Determine if the request is the result of an prefetch call. + * + * @return bool + * @static + */ + public static function prefetch() + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->prefetch(); + } + + /** + * Determine if the request is over HTTPS. + * + * @return bool + * @static + */ + public static function secure() + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->secure(); + } + + /** + * Get the client IP address. + * + * @return string|null + * @static + */ + public static function ip() + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->ip(); + } + + /** + * Get the client IP addresses. + * + * @return array + * @static + */ + public static function ips() + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->ips(); + } + + /** + * Get the client user agent. + * + * @return string + * @static + */ + public static function userAgent() + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->userAgent(); + } + + /** + * Merge new input into the current request's input array. + * + * @param array $input + * @return \Illuminate\Http\Request + * @static + */ + public static function merge($input) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->merge($input); + } + + /** + * Replace the input for the current request. + * + * @param array $input + * @return \Illuminate\Http\Request + * @static + */ + public static function replace($input) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->replace($input); + } + + /** + * This method belongs to Symfony HttpFoundation and is not usually needed when using Laravel. + * + * Instead, you may use the "input" method. + * + * @param string $key + * @param mixed $default + * @return mixed + * @static + */ + public static function get($key, $default = null) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->get($key, $default); + } + + /** + * Get the JSON payload for the request. + * + * @param string|null $key + * @param mixed $default + * @return \Symfony\Component\HttpFoundation\ParameterBag|mixed + * @static + */ + public static function json($key = null, $default = null) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->json($key, $default); + } + + /** + * Create a new request instance from the given Laravel request. + * + * @param \Illuminate\Http\Request $from + * @param \Illuminate\Http\Request|null $to + * @return static + * @static + */ + public static function createFrom($from, $to = null) + { + return \Illuminate\Http\Request::createFrom($from, $to); + } + + /** + * Create an Illuminate request from a Symfony instance. + * + * @param \Symfony\Component\HttpFoundation\Request $request + * @return static + * @static + */ + public static function createFromBase($request) + { + return \Illuminate\Http\Request::createFromBase($request); + } + + /** + * Clones a request and overrides some of its parameters. + * + * @param array $query The GET parameters + * @param array $request The POST parameters + * @param array $attributes The request attributes (parameters parsed from the PATH_INFO, ...) + * @param array $cookies The COOKIE parameters + * @param array $files The FILES parameters + * @param array $server The SERVER parameters + * @return static + * @static + */ + public static function duplicate($query = null, $request = null, $attributes = null, $cookies = null, $files = null, $server = null) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->duplicate($query, $request, $attributes, $cookies, $files, $server); + } + + /** + * Get the session associated with the request. + * + * @return \Illuminate\Session\Store + * @throws \RuntimeException + * @static + */ + public static function session() + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->session(); + } + + /** + * Get the session associated with the request. + * + * @return \Illuminate\Session\Store|null + * @static + */ + public static function getSession() + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->getSession(); + } + + /** + * Set the session instance on the request. + * + * @param \Illuminate\Contracts\Session\Session $session + * @return void + * @static + */ + public static function setLaravelSession($session) + { + /** @var \Illuminate\Http\Request $instance */ + $instance->setLaravelSession($session); + } + + /** + * Get the user making the request. + * + * @param string|null $guard + * @return mixed + * @static + */ + public static function user($guard = null) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->user($guard); + } + + /** + * Get the route handling the request. + * + * @param string|null $param + * @param mixed $default + * @return \Illuminate\Routing\Route|object|string|null + * @static + */ + public static function route($param = null, $default = null) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->route($param, $default); + } + + /** + * Get a unique fingerprint for the request / route / IP address. + * + * @return string + * @throws \RuntimeException + * @static + */ + public static function fingerprint() + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->fingerprint(); + } + + /** + * Set the JSON payload for the request. + * + * @param \Symfony\Component\HttpFoundation\ParameterBag $json + * @return \Illuminate\Http\Request + * @static + */ + public static function setJson($json) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->setJson($json); + } + + /** + * Get the user resolver callback. + * + * @return \Closure + * @static + */ + public static function getUserResolver() + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->getUserResolver(); + } + + /** + * Set the user resolver callback. + * + * @param \Closure $callback + * @return \Illuminate\Http\Request + * @static + */ + public static function setUserResolver($callback) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->setUserResolver($callback); + } + + /** + * Get the route resolver callback. + * + * @return \Closure + * @static + */ + public static function getRouteResolver() + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->getRouteResolver(); + } + + /** + * Set the route resolver callback. + * + * @param \Closure $callback + * @return \Illuminate\Http\Request + * @static + */ + public static function setRouteResolver($callback) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->setRouteResolver($callback); + } + + /** + * Get all of the input and files for the request. + * + * @return array + * @static + */ + public static function toArray() + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->toArray(); + } + + /** + * Determine if the given offset exists. + * + * @param string $offset + * @return bool + * @static + */ + public static function offsetExists($offset) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->offsetExists($offset); + } + + /** + * Get the value at the given offset. + * + * @param string $offset + * @return mixed + * @static + */ + public static function offsetGet($offset) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->offsetGet($offset); + } + + /** + * Set the value at the given offset. + * + * @param string $offset + * @param mixed $value + * @return void + * @static + */ + public static function offsetSet($offset, $value) + { + /** @var \Illuminate\Http\Request $instance */ + $instance->offsetSet($offset, $value); + } + + /** + * Remove the value at the given offset. + * + * @param string $offset + * @return void + * @static + */ + public static function offsetUnset($offset) + { + /** @var \Illuminate\Http\Request $instance */ + $instance->offsetUnset($offset); + } + + /** + * Sets the parameters for this request. + * + * This method also re-initializes all properties. + * + * @param array $query The GET parameters + * @param array $request The POST parameters + * @param array $attributes The request attributes (parameters parsed from the PATH_INFO, ...) + * @param array $cookies The COOKIE parameters + * @param array $files The FILES parameters + * @param array $server The SERVER parameters + * @param string|resource|null $content The raw body data + * @static + */ + public static function initialize($query = [], $request = [], $attributes = [], $cookies = [], $files = [], $server = [], $content = null) + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->initialize($query, $request, $attributes, $cookies, $files, $server, $content); + } + + /** + * Creates a new request with values from PHP's super globals. + * + * @return static + * @static + */ + public static function createFromGlobals() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::createFromGlobals(); + } + + /** + * Creates a Request based on a given URI and configuration. + * + * The information contained in the URI always take precedence + * over the other information (server and parameters). + * + * @param string $uri The URI + * @param string $method The HTTP method + * @param array $parameters The query (GET) or request (POST) parameters + * @param array $cookies The request cookies ($_COOKIE) + * @param array $files The request files ($_FILES) + * @param array $server The server parameters ($_SERVER) + * @param string|resource|null $content The raw body data + * @return static + * @static + */ + public static function create($uri, $method = 'GET', $parameters = [], $cookies = [], $files = [], $server = [], $content = null) + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::create($uri, $method, $parameters, $cookies, $files, $server, $content); + } + + /** + * Sets a callable able to create a Request instance. + * + * This is mainly useful when you need to override the Request class + * to keep BC with an existing system. It should not be used for any + * other purpose. + * + * @param callable|null $callable A PHP callable + * @static + */ + public static function setFactory($callable) + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::setFactory($callable); + } + + /** + * Overrides the PHP global variables according to this request instance. + * + * It overrides $_GET, $_POST, $_REQUEST, $_SERVER, $_COOKIE. + * $_FILES is never overridden, see rfc1867 + * + * @static + */ + public static function overrideGlobals() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->overrideGlobals(); + } + + /** + * Sets a list of trusted proxies. + * + * You should only list the reverse proxies that you manage directly. + * + * @param array $proxies A list of trusted proxies, the string 'REMOTE_ADDR' will be replaced with $_SERVER['REMOTE_ADDR'] + * @param int $trustedHeaderSet A bit field of Request::HEADER_*, to set which headers to trust from your proxies + * @throws \InvalidArgumentException When $trustedHeaderSet is invalid + * @static + */ + public static function setTrustedProxies($proxies, $trustedHeaderSet) + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::setTrustedProxies($proxies, $trustedHeaderSet); + } + + /** + * Gets the list of trusted proxies. + * + * @return array An array of trusted proxies + * @static + */ + public static function getTrustedProxies() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::getTrustedProxies(); + } + + /** + * Gets the set of trusted headers from trusted proxies. + * + * @return int A bit field of Request::HEADER_* that defines which headers are trusted from your proxies + * @static + */ + public static function getTrustedHeaderSet() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::getTrustedHeaderSet(); + } + + /** + * Sets a list of trusted host patterns. + * + * You should only list the hosts you manage using regexs. + * + * @param array $hostPatterns A list of trusted host patterns + * @static + */ + public static function setTrustedHosts($hostPatterns) + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::setTrustedHosts($hostPatterns); + } + + /** + * Gets the list of trusted host patterns. + * + * @return array An array of trusted host patterns + * @static + */ + public static function getTrustedHosts() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::getTrustedHosts(); + } + + /** + * Normalizes a query string. + * + * It builds a normalized query string, where keys/value pairs are alphabetized, + * have consistent escaping and unneeded delimiters are removed. + * + * @param string $qs Query string + * @return string A normalized query string for the Request + * @static + */ + public static function normalizeQueryString($qs) + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::normalizeQueryString($qs); + } + + /** + * Enables support for the _method request parameter to determine the intended HTTP method. + * + * Be warned that enabling this feature might lead to CSRF issues in your code. + * Check that you are using CSRF tokens when required. + * If the HTTP method parameter override is enabled, an html-form with method "POST" can be altered + * and used to send a "PUT" or "DELETE" request via the _method request parameter. + * If these methods are not protected against CSRF, this presents a possible vulnerability. + * + * The HTTP method can only be overridden when the real HTTP method is POST. + * + * @static + */ + public static function enableHttpMethodParameterOverride() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::enableHttpMethodParameterOverride(); + } + + /** + * Checks whether support for the _method request parameter is enabled. + * + * @return bool True when the _method request parameter is enabled, false otherwise + * @static + */ + public static function getHttpMethodParameterOverride() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::getHttpMethodParameterOverride(); + } + + /** + * Whether the request contains a Session which was started in one of the + * previous requests. + * + * @return bool + * @static + */ + public static function hasPreviousSession() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->hasPreviousSession(); + } + + /** + * Whether the request contains a Session object. + * + * This method does not give any information about the state of the session object, + * like whether the session is started or not. It is just a way to check if this Request + * is associated with a Session instance. + * + * @return bool true when the Request contains a Session object, false otherwise + * @static + */ + public static function hasSession() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->hasSession(); + } + + /** + * + * + * @static + */ + public static function setSession($session) + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->setSession($session); + } + + /** + * + * + * @internal + * @static + */ + public static function setSessionFactory($factory) + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->setSessionFactory($factory); + } + + /** + * Returns the client IP addresses. + * + * In the returned array the most trusted IP address is first, and the + * least trusted one last. The "real" client IP address is the last one, + * but this is also the least trusted one. Trusted proxies are stripped. + * + * Use this method carefully; you should use getClientIp() instead. + * + * @return array The client IP addresses + * @see getClientIp() + * @static + */ + public static function getClientIps() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->getClientIps(); + } + + /** + * Returns the client IP address. + * + * This method can read the client IP address from the "X-Forwarded-For" header + * when trusted proxies were set via "setTrustedProxies()". The "X-Forwarded-For" + * header value is a comma+space separated list of IP addresses, the left-most + * being the original client, and each successive proxy that passed the request + * adding the IP address where it received the request from. + * + * If your reverse proxy uses a different header name than "X-Forwarded-For", + * ("Client-Ip" for instance), configure it via the $trustedHeaderSet + * argument of the Request::setTrustedProxies() method instead. + * + * @return string|null The client IP address + * @see getClientIps() + * @see https://wikipedia.org/wiki/X-Forwarded-For + * @static + */ + public static function getClientIp() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->getClientIp(); + } + + /** + * Returns current script name. + * + * @return string + * @static + */ + public static function getScriptName() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->getScriptName(); + } + + /** + * Returns the path being requested relative to the executed script. + * + * The path info always starts with a /. + * + * Suppose this request is instantiated from /mysite on localhost: + * + * * http://localhost/mysite returns an empty string + * * http://localhost/mysite/about returns '/about' + * * http://localhost/mysite/enco%20ded returns '/enco%20ded' + * * http://localhost/mysite/about?var=1 returns '/about' + * + * @return string The raw path (i.e. not urldecoded) + * @static + */ + public static function getPathInfo() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->getPathInfo(); + } + + /** + * Returns the root path from which this request is executed. + * + * Suppose that an index.php file instantiates this request object: + * + * * http://localhost/index.php returns an empty string + * * http://localhost/index.php/page returns an empty string + * * http://localhost/web/index.php returns '/web' + * * http://localhost/we%20b/index.php returns '/we%20b' + * + * @return string The raw path (i.e. not urldecoded) + * @static + */ + public static function getBasePath() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->getBasePath(); + } + + /** + * Returns the root URL from which this request is executed. + * + * The base URL never ends with a /. + * + * This is similar to getBasePath(), except that it also includes the + * script filename (e.g. index.php) if one exists. + * + * @return string The raw URL (i.e. not urldecoded) + * @static + */ + public static function getBaseUrl() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->getBaseUrl(); + } + + /** + * Gets the request's scheme. + * + * @return string + * @static + */ + public static function getScheme() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->getScheme(); + } + + /** + * Returns the port on which the request is made. + * + * This method can read the client port from the "X-Forwarded-Port" header + * when trusted proxies were set via "setTrustedProxies()". + * + * The "X-Forwarded-Port" header must contain the client port. + * + * @return int|string can be a string if fetched from the server bag + * @static + */ + public static function getPort() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->getPort(); + } + + /** + * Returns the user. + * + * @return string|null + * @static + */ + public static function getUser() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->getUser(); + } + + /** + * Returns the password. + * + * @return string|null + * @static + */ + public static function getPassword() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->getPassword(); + } + + /** + * Gets the user info. + * + * @return string A user name and, optionally, scheme-specific information about how to gain authorization to access the server + * @static + */ + public static function getUserInfo() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->getUserInfo(); + } + + /** + * Returns the HTTP host being requested. + * + * The port name will be appended to the host if it's non-standard. + * + * @return string + * @static + */ + public static function getHttpHost() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->getHttpHost(); + } + + /** + * Returns the requested URI (path and query string). + * + * @return string The raw URI (i.e. not URI decoded) + * @static + */ + public static function getRequestUri() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->getRequestUri(); + } + + /** + * Gets the scheme and HTTP host. + * + * If the URL was called with basic authentication, the user + * and the password are not added to the generated string. + * + * @return string The scheme and HTTP host + * @static + */ + public static function getSchemeAndHttpHost() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->getSchemeAndHttpHost(); + } + + /** + * Generates a normalized URI (URL) for the Request. + * + * @return string A normalized URI (URL) for the Request + * @see getQueryString() + * @static + */ + public static function getUri() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->getUri(); + } + + /** + * Generates a normalized URI for the given path. + * + * @param string $path A path to use instead of the current one + * @return string The normalized URI for the path + * @static + */ + public static function getUriForPath($path) + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->getUriForPath($path); + } + + /** + * Returns the path as relative reference from the current Request path. + * + * Only the URIs path component (no schema, host etc.) is relevant and must be given. + * Both paths must be absolute and not contain relative parts. + * Relative URLs from one resource to another are useful when generating self-contained downloadable document archives. + * Furthermore, they can be used to reduce the link size in documents. + * + * Example target paths, given a base path of "/a/b/c/d": + * - "/a/b/c/d" -> "" + * - "/a/b/c/" -> "./" + * - "/a/b/" -> "../" + * - "/a/b/c/other" -> "other" + * - "/a/x/y" -> "../../x/y" + * + * @param string $path The target path + * @return string The relative target path + * @static + */ + public static function getRelativeUriForPath($path) + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->getRelativeUriForPath($path); + } + + /** + * Generates the normalized query string for the Request. + * + * It builds a normalized query string, where keys/value pairs are alphabetized + * and have consistent escaping. + * + * @return string|null A normalized query string for the Request + * @static + */ + public static function getQueryString() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->getQueryString(); + } + + /** + * Checks whether the request is secure or not. + * + * This method can read the client protocol from the "X-Forwarded-Proto" header + * when trusted proxies were set via "setTrustedProxies()". + * + * The "X-Forwarded-Proto" header must contain the protocol: "https" or "http". + * + * @return bool + * @static + */ + public static function isSecure() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->isSecure(); + } + + /** + * Returns the host name. + * + * This method can read the client host name from the "X-Forwarded-Host" header + * when trusted proxies were set via "setTrustedProxies()". + * + * The "X-Forwarded-Host" header must contain the client host name. + * + * @return string + * @throws SuspiciousOperationException when the host name is invalid or not trusted + * @static + */ + public static function getHost() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->getHost(); + } + + /** + * Sets the request method. + * + * @param string $method + * @static + */ + public static function setMethod($method) + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->setMethod($method); + } + + /** + * Gets the request "intended" method. + * + * If the X-HTTP-Method-Override header is set, and if the method is a POST, + * then it is used to determine the "real" intended HTTP method. + * + * The _method request parameter can also be used to determine the HTTP method, + * but only if enableHttpMethodParameterOverride() has been called. + * + * The method is always an uppercased string. + * + * @return string The request method + * @see getRealMethod() + * @static + */ + public static function getMethod() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->getMethod(); + } + + /** + * Gets the "real" request method. + * + * @return string The request method + * @see getMethod() + * @static + */ + public static function getRealMethod() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->getRealMethod(); + } + + /** + * Gets the mime type associated with the format. + * + * @param string $format The format + * @return string|null The associated mime type (null if not found) + * @static + */ + public static function getMimeType($format) + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->getMimeType($format); + } + + /** + * Gets the mime types associated with the format. + * + * @param string $format The format + * @return array The associated mime types + * @static + */ + public static function getMimeTypes($format) + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + return \Illuminate\Http\Request::getMimeTypes($format); + } + + /** + * Gets the format associated with the mime type. + * + * @param string $mimeType The associated mime type + * @return string|null The format (null if not found) + * @static + */ + public static function getFormat($mimeType) + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->getFormat($mimeType); + } + + /** + * Associates a format with mime types. + * + * @param string $format The format + * @param string|array $mimeTypes The associated mime types (the preferred one must be the first as it will be used as the content type) + * @static + */ + public static function setFormat($format, $mimeTypes) + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->setFormat($format, $mimeTypes); + } + + /** + * Gets the request format. + * + * Here is the process to determine the format: + * + * * format defined by the user (with setRequestFormat()) + * * _format request attribute + * * $default + * + * @see getPreferredFormat + * @param string|null $default The default format + * @return string|null The request format + * @static + */ + public static function getRequestFormat($default = 'html') + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->getRequestFormat($default); + } + + /** + * Sets the request format. + * + * @param string $format The request format + * @static + */ + public static function setRequestFormat($format) + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->setRequestFormat($format); + } + + /** + * Gets the format associated with the request. + * + * @return string|null The format (null if no content type is present) + * @static + */ + public static function getContentType() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->getContentType(); + } + + /** + * Sets the default locale. + * + * @param string $locale + * @static + */ + public static function setDefaultLocale($locale) + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->setDefaultLocale($locale); + } + + /** + * Get the default locale. + * + * @return string + * @static + */ + public static function getDefaultLocale() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->getDefaultLocale(); + } + + /** + * Sets the locale. + * + * @param string $locale + * @static + */ + public static function setLocale($locale) + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->setLocale($locale); + } + + /** + * Get the locale. + * + * @return string + * @static + */ + public static function getLocale() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->getLocale(); + } + + /** + * Checks if the request method is of specified type. + * + * @param string $method Uppercase request method (GET, POST etc) + * @return bool + * @static + */ + public static function isMethod($method) + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->isMethod($method); + } + + /** + * Checks whether or not the method is safe. + * + * @see https://tools.ietf.org/html/rfc7231#section-4.2.1 + * @return bool + * @static + */ + public static function isMethodSafe() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->isMethodSafe(); + } + + /** + * Checks whether or not the method is idempotent. + * + * @return bool + * @static + */ + public static function isMethodIdempotent() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->isMethodIdempotent(); + } + + /** + * Checks whether the method is cacheable or not. + * + * @see https://tools.ietf.org/html/rfc7231#section-4.2.3 + * @return bool True for GET and HEAD, false otherwise + * @static + */ + public static function isMethodCacheable() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->isMethodCacheable(); + } + + /** + * Returns the protocol version. + * + * If the application is behind a proxy, the protocol version used in the + * requests between the client and the proxy and between the proxy and the + * server might be different. This returns the former (from the "Via" header) + * if the proxy is trusted (see "setTrustedProxies()"), otherwise it returns + * the latter (from the "SERVER_PROTOCOL" server parameter). + * + * @return string + * @static + */ + public static function getProtocolVersion() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->getProtocolVersion(); + } + + /** + * Returns the request body content. + * + * @param bool $asResource If true, a resource will be returned + * @return string|resource The request body content or a resource to read the body stream + * @throws \LogicException + * @static + */ + public static function getContent($asResource = false) + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->getContent($asResource); + } + + /** + * Gets the Etags. + * + * @return array The entity tags + * @static + */ + public static function getETags() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->getETags(); + } + + /** + * + * + * @return bool + * @static + */ + public static function isNoCache() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->isNoCache(); + } + + /** + * Gets the preferred format for the response by inspecting, in the following order: + * * the request format set using setRequestFormat + * * the values of the Accept HTTP header + * + * Note that if you use this method, you should send the "Vary: Accept" header + * in the response to prevent any issues with intermediary HTTP caches. + * + * @static + */ + public static function getPreferredFormat($default = 'html') + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->getPreferredFormat($default); + } + + /** + * Returns the preferred language. + * + * @param string[] $locales An array of ordered available locales + * @return string|null The preferred locale + * @static + */ + public static function getPreferredLanguage($locales = null) + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->getPreferredLanguage($locales); + } + + /** + * Gets a list of languages acceptable by the client browser. + * + * @return array Languages ordered in the user browser preferences + * @static + */ + public static function getLanguages() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->getLanguages(); + } + + /** + * Gets a list of charsets acceptable by the client browser. + * + * @return array List of charsets in preferable order + * @static + */ + public static function getCharsets() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->getCharsets(); + } + + /** + * Gets a list of encodings acceptable by the client browser. + * + * @return array List of encodings in preferable order + * @static + */ + public static function getEncodings() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->getEncodings(); + } + + /** + * Gets a list of content types acceptable by the client browser. + * + * @return array List of content types in preferable order + * @static + */ + public static function getAcceptableContentTypes() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->getAcceptableContentTypes(); + } + + /** + * Returns true if the request is a XMLHttpRequest. + * + * It works if your JavaScript library sets an X-Requested-With HTTP header. + * It is known to work with common JavaScript frameworks: + * + * @see https://wikipedia.org/wiki/List_of_Ajax_frameworks#JavaScript + * @return bool true if the request is an XMLHttpRequest, false otherwise + * @static + */ + public static function isXmlHttpRequest() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->isXmlHttpRequest(); + } + + /** + * Indicates whether this request originated from a trusted proxy. + * + * This can be useful to determine whether or not to trust the + * contents of a proxy-specific header. + * + * @return bool true if the request came from a trusted proxy, false otherwise + * @static + */ + public static function isFromTrustedProxy() + { + //Method inherited from \Symfony\Component\HttpFoundation\Request + /** @var \Illuminate\Http\Request $instance */ + return $instance->isFromTrustedProxy(); + } + + /** + * Determine if the given content types match. + * + * @param string $actual + * @param string $type + * @return bool + * @static + */ + public static function matchesType($actual, $type) + { + return \Illuminate\Http\Request::matchesType($actual, $type); + } + + /** + * Determine if the request is sending JSON. + * + * @return bool + * @static + */ + public static function isJson() + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->isJson(); + } + + /** + * Determine if the current request probably expects a JSON response. + * + * @return bool + * @static + */ + public static function expectsJson() + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->expectsJson(); + } + + /** + * Determine if the current request is asking for JSON. + * + * @return bool + * @static + */ + public static function wantsJson() + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->wantsJson(); + } + + /** + * Determines whether the current requests accepts a given content type. + * + * @param string|array $contentTypes + * @return bool + * @static + */ + public static function accepts($contentTypes) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->accepts($contentTypes); + } + + /** + * Return the most suitable content type from the given array based on content negotiation. + * + * @param string|array $contentTypes + * @return string|null + * @static + */ + public static function prefers($contentTypes) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->prefers($contentTypes); + } + + /** + * Determine if the current request accepts any content type. + * + * @return bool + * @static + */ + public static function acceptsAnyContentType() + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->acceptsAnyContentType(); + } + + /** + * Determines whether a request accepts JSON. + * + * @return bool + * @static + */ + public static function acceptsJson() + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->acceptsJson(); + } + + /** + * Determines whether a request accepts HTML. + * + * @return bool + * @static + */ + public static function acceptsHtml() + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->acceptsHtml(); + } + + /** + * Get the data format expected in the response. + * + * @param string $default + * @return string + * @static + */ + public static function format($default = 'html') + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->format($default); + } + + /** + * Retrieve an old input item. + * + * @param string|null $key + * @param string|array|null $default + * @return string|array + * @static + */ + public static function old($key = null, $default = null) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->old($key, $default); + } + + /** + * Flash the input for the current request to the session. + * + * @return void + * @static + */ + public static function flash() + { + /** @var \Illuminate\Http\Request $instance */ + $instance->flash(); + } + + /** + * Flash only some of the input to the session. + * + * @param array|mixed $keys + * @return void + * @static + */ + public static function flashOnly($keys) + { + /** @var \Illuminate\Http\Request $instance */ + $instance->flashOnly($keys); + } + + /** + * Flash only some of the input to the session. + * + * @param array|mixed $keys + * @return void + * @static + */ + public static function flashExcept($keys) + { + /** @var \Illuminate\Http\Request $instance */ + $instance->flashExcept($keys); + } + + /** + * Flush all of the old input from the session. + * + * @return void + * @static + */ + public static function flush() + { + /** @var \Illuminate\Http\Request $instance */ + $instance->flush(); + } + + /** + * Retrieve a server variable from the request. + * + * @param string|null $key + * @param string|array|null $default + * @return string|array|null + * @static + */ + public static function server($key = null, $default = null) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->server($key, $default); + } + + /** + * Determine if a header is set on the request. + * + * @param string $key + * @return bool + * @static + */ + public static function hasHeader($key) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->hasHeader($key); + } + + /** + * Retrieve a header from the request. + * + * @param string|null $key + * @param string|array|null $default + * @return string|array|null + * @static + */ + public static function header($key = null, $default = null) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->header($key, $default); + } + + /** + * Get the bearer token from the request headers. + * + * @return string|null + * @static + */ + public static function bearerToken() + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->bearerToken(); + } + + /** + * Determine if the request contains a given input item key. + * + * @param string|array $key + * @return bool + * @static + */ + public static function exists($key) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->exists($key); + } + + /** + * Determine if the request contains a given input item key. + * + * @param string|array $key + * @return bool + * @static + */ + public static function has($key) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->has($key); + } + + /** + * Determine if the request contains any of the given inputs. + * + * @param string|array $keys + * @return bool + * @static + */ + public static function hasAny($keys) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->hasAny($keys); + } + + /** + * Determine if the request contains a non-empty value for an input item. + * + * @param string|array $key + * @return bool + * @static + */ + public static function filled($key) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->filled($key); + } + + /** + * Determine if the request contains a non-empty value for any of the given inputs. + * + * @param string|array $keys + * @return bool + * @static + */ + public static function anyFilled($keys) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->anyFilled($keys); + } + + /** + * Determine if the request is missing a given input item key. + * + * @param string|array $key + * @return bool + * @static + */ + public static function missing($key) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->missing($key); + } + + /** + * Get the keys for all of the input and files. + * + * @return array + * @static + */ + public static function keys() + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->keys(); + } + + /** + * Get all of the input and files for the request. + * + * @param array|mixed|null $keys + * @return array + * @static + */ + public static function all($keys = null) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->all($keys); + } + + /** + * Retrieve an input item from the request. + * + * @param string|null $key + * @param mixed $default + * @return mixed + * @static + */ + public static function input($key = null, $default = null) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->input($key, $default); + } + + /** + * Retrieve input as a boolean value. + * + * Returns true when value is "1", "true", "on", and "yes". Otherwise, returns false. + * + * @param string|null $key + * @param bool $default + * @return bool + * @static + */ + public static function boolean($key = null, $default = false) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->boolean($key, $default); + } + + /** + * Get a subset containing the provided keys with values from the input data. + * + * @param array|mixed $keys + * @return array + * @static + */ + public static function only($keys) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->only($keys); + } + + /** + * Get all of the input except for a specified array of items. + * + * @param array|mixed $keys + * @return array + * @static + */ + public static function except($keys) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->except($keys); + } + + /** + * Retrieve a query string item from the request. + * + * @param string|null $key + * @param string|array|null $default + * @return string|array|null + * @static + */ + public static function query($key = null, $default = null) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->query($key, $default); + } + + /** + * Retrieve a request payload item from the request. + * + * @param string|null $key + * @param string|array|null $default + * @return string|array|null + * @static + */ + public static function post($key = null, $default = null) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->post($key, $default); + } + + /** + * Determine if a cookie is set on the request. + * + * @param string $key + * @return bool + * @static + */ + public static function hasCookie($key) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->hasCookie($key); + } + + /** + * Retrieve a cookie from the request. + * + * @param string|null $key + * @param string|array|null $default + * @return string|array|null + * @static + */ + public static function cookie($key = null, $default = null) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->cookie($key, $default); + } + + /** + * Get an array of all of the files on the request. + * + * @return array + * @static + */ + public static function allFiles() + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->allFiles(); + } + + /** + * Determine if the uploaded data contains a file. + * + * @param string $key + * @return bool + * @static + */ + public static function hasFile($key) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->hasFile($key); + } + + /** + * Retrieve a file from the request. + * + * @param string|null $key + * @param mixed $default + * @return \Illuminate\Http\UploadedFile|\Illuminate\Http\UploadedFile[]|array|null + * @static + */ + public static function file($key = null, $default = null) + { + /** @var \Illuminate\Http\Request $instance */ + return $instance->file($key, $default); + } + + /** + * Register a custom macro. + * + * @param string $name + * @param object|callable $macro + * @return void + * @static + */ + public static function macro($name, $macro) + { + \Illuminate\Http\Request::macro($name, $macro); + } + + /** + * Mix another object into the class. + * + * @param object $mixin + * @param bool $replace + * @return void + * @throws \ReflectionException + * @static + */ + public static function mixin($mixin, $replace = true) + { + \Illuminate\Http\Request::mixin($mixin, $replace); + } + + /** + * Checks if macro is registered. + * + * @param string $name + * @return bool + * @static + */ + public static function hasMacro($name) + { + return \Illuminate\Http\Request::hasMacro($name); + } + + /** + * + * + * @static + */ + public static function validate($rules, ...$params) + { + return \Illuminate\Http\Request::validate($rules, ...$params); + } + + /** + * + * + * @static + */ + public static function validateWithBag($errorBag, $rules, ...$params) + { + return \Illuminate\Http\Request::validateWithBag($errorBag, $rules, ...$params); + } + + /** + * + * + * @static + */ + public static function hasValidSignature($absolute = true) + { + return \Illuminate\Http\Request::hasValidSignature($absolute); + } + + } + + /** + * + * + * @see \Illuminate\Contracts\Routing\ResponseFactory + */ + class Response { + + /** + * Create a new response instance. + * + * @param string $content + * @param int $status + * @param array $headers + * @return \Illuminate\Http\Response + * @static + */ + public static function make($content = '', $status = 200, $headers = []) + { + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->make($content, $status, $headers); + } + + /** + * Create a new "no content" response. + * + * @param int $status + * @param array $headers + * @return \Illuminate\Http\Response + * @static + */ + public static function noContent($status = 204, $headers = []) + { + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->noContent($status, $headers); + } + + /** + * Create a new response for a given view. + * + * @param string|array $view + * @param array $data + * @param int $status + * @param array $headers + * @return \Illuminate\Http\Response + * @static + */ + public static function view($view, $data = [], $status = 200, $headers = []) + { + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->view($view, $data, $status, $headers); + } + + /** + * Create a new JSON response instance. + * + * @param mixed $data + * @param int $status + * @param array $headers + * @param int $options + * @return \Illuminate\Http\JsonResponse + * @static + */ + public static function json($data = [], $status = 200, $headers = [], $options = 0) + { + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->json($data, $status, $headers, $options); + } + + /** + * Create a new JSONP response instance. + * + * @param string $callback + * @param mixed $data + * @param int $status + * @param array $headers + * @param int $options + * @return \Illuminate\Http\JsonResponse + * @static + */ + public static function jsonp($callback, $data = [], $status = 200, $headers = [], $options = 0) + { + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->jsonp($callback, $data, $status, $headers, $options); + } + + /** + * Create a new streamed response instance. + * + * @param \Closure $callback + * @param int $status + * @param array $headers + * @return \Symfony\Component\HttpFoundation\StreamedResponse + * @static + */ + public static function stream($callback, $status = 200, $headers = []) + { + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->stream($callback, $status, $headers); + } + + /** + * Create a new streamed response instance as a file download. + * + * @param \Closure $callback + * @param string|null $name + * @param array $headers + * @param string|null $disposition + * @return \Symfony\Component\HttpFoundation\StreamedResponse + * @static + */ + public static function streamDownload($callback, $name = null, $headers = [], $disposition = 'attachment') + { + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->streamDownload($callback, $name, $headers, $disposition); + } + + /** + * Create a new file download response. + * + * @param \SplFileInfo|string $file + * @param string|null $name + * @param array $headers + * @param string|null $disposition + * @return \Symfony\Component\HttpFoundation\BinaryFileResponse + * @static + */ + public static function download($file, $name = null, $headers = [], $disposition = 'attachment') + { + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->download($file, $name, $headers, $disposition); + } + + /** + * Return the raw contents of a binary file. + * + * @param \SplFileInfo|string $file + * @param array $headers + * @return \Symfony\Component\HttpFoundation\BinaryFileResponse + * @static + */ + public static function file($file, $headers = []) + { + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->file($file, $headers); + } + + /** + * Create a new redirect response to the given path. + * + * @param string $path + * @param int $status + * @param array $headers + * @param bool|null $secure + * @return \Illuminate\Http\RedirectResponse + * @static + */ + public static function redirectTo($path, $status = 302, $headers = [], $secure = null) + { + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->redirectTo($path, $status, $headers, $secure); + } + + /** + * Create a new redirect response to a named route. + * + * @param string $route + * @param array $parameters + * @param int $status + * @param array $headers + * @return \Illuminate\Http\RedirectResponse + * @static + */ + public static function redirectToRoute($route, $parameters = [], $status = 302, $headers = []) + { + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->redirectToRoute($route, $parameters, $status, $headers); + } + + /** + * Create a new redirect response to a controller action. + * + * @param string $action + * @param array $parameters + * @param int $status + * @param array $headers + * @return \Illuminate\Http\RedirectResponse + * @static + */ + public static function redirectToAction($action, $parameters = [], $status = 302, $headers = []) + { + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->redirectToAction($action, $parameters, $status, $headers); + } + + /** + * Create a new redirect response, while putting the current URL in the session. + * + * @param string $path + * @param int $status + * @param array $headers + * @param bool|null $secure + * @return \Illuminate\Http\RedirectResponse + * @static + */ + public static function redirectGuest($path, $status = 302, $headers = [], $secure = null) + { + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->redirectGuest($path, $status, $headers, $secure); + } + + /** + * Create a new redirect response to the previously intended location. + * + * @param string $default + * @param int $status + * @param array $headers + * @param bool|null $secure + * @return \Illuminate\Http\RedirectResponse + * @static + */ + public static function redirectToIntended($default = '/', $status = 302, $headers = [], $secure = null) + { + /** @var \Illuminate\Routing\ResponseFactory $instance */ + return $instance->redirectToIntended($default, $status, $headers, $secure); + } + + /** + * Register a custom macro. + * + * @param string $name + * @param object|callable $macro + * @return void + * @static + */ + public static function macro($name, $macro) + { + \Illuminate\Routing\ResponseFactory::macro($name, $macro); + } + + /** + * Mix another object into the class. + * + * @param object $mixin + * @param bool $replace + * @return void + * @throws \ReflectionException + * @static + */ + public static function mixin($mixin, $replace = true) + { + \Illuminate\Routing\ResponseFactory::mixin($mixin, $replace); + } + + /** + * Checks if macro is registered. + * + * @param string $name + * @return bool + * @static + */ + public static function hasMacro($name) + { + return \Illuminate\Routing\ResponseFactory::hasMacro($name); + } + + } + + /** + * + * + * @method static \Illuminate\Routing\RouteRegistrar prefix(string $prefix) + * @method static \Illuminate\Routing\RouteRegistrar where(array $where) + * @method static \Illuminate\Routing\RouteRegistrar middleware(array|string|null $middleware) + * @method static \Illuminate\Routing\RouteRegistrar as(string $value) + * @method static \Illuminate\Routing\RouteRegistrar domain(string $value) + * @method static \Illuminate\Routing\RouteRegistrar name(string $value) + * @method static \Illuminate\Routing\RouteRegistrar namespace(string $value) + * @see \Illuminate\Routing\Router + */ + class Route { + + /** + * Register a new GET route with the router. + * + * @param string $uri + * @param \Closure|array|string|callable|null $action + * @return \Illuminate\Routing\Route + * @static + */ + public static function get($uri, $action = null) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->get($uri, $action); + } + + /** + * Register a new POST route with the router. + * + * @param string $uri + * @param \Closure|array|string|callable|null $action + * @return \Illuminate\Routing\Route + * @static + */ + public static function post($uri, $action = null) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->post($uri, $action); + } + + /** + * Register a new PUT route with the router. + * + * @param string $uri + * @param \Closure|array|string|callable|null $action + * @return \Illuminate\Routing\Route + * @static + */ + public static function put($uri, $action = null) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->put($uri, $action); + } + + /** + * Register a new PATCH route with the router. + * + * @param string $uri + * @param \Closure|array|string|callable|null $action + * @return \Illuminate\Routing\Route + * @static + */ + public static function patch($uri, $action = null) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->patch($uri, $action); + } + + /** + * Register a new DELETE route with the router. + * + * @param string $uri + * @param \Closure|array|string|callable|null $action + * @return \Illuminate\Routing\Route + * @static + */ + public static function delete($uri, $action = null) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->delete($uri, $action); + } + + /** + * Register a new OPTIONS route with the router. + * + * @param string $uri + * @param \Closure|array|string|callable|null $action + * @return \Illuminate\Routing\Route + * @static + */ + public static function options($uri, $action = null) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->options($uri, $action); + } + + /** + * Register a new route responding to all verbs. + * + * @param string $uri + * @param \Closure|array|string|callable|null $action + * @return \Illuminate\Routing\Route + * @static + */ + public static function any($uri, $action = null) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->any($uri, $action); + } + + /** + * Register a new Fallback route with the router. + * + * @param \Closure|array|string|callable|null $action + * @return \Illuminate\Routing\Route + * @static + */ + public static function fallback($action) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->fallback($action); + } + + /** + * Create a redirect from one URI to another. + * + * @param string $uri + * @param string $destination + * @param int $status + * @return \Illuminate\Routing\Route + * @static + */ + public static function redirect($uri, $destination, $status = 302) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->redirect($uri, $destination, $status); + } + + /** + * Create a permanent redirect from one URI to another. + * + * @param string $uri + * @param string $destination + * @return \Illuminate\Routing\Route + * @static + */ + public static function permanentRedirect($uri, $destination) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->permanentRedirect($uri, $destination); + } + + /** + * Register a new route that returns a view. + * + * @param string $uri + * @param string $view + * @param array $data + * @return \Illuminate\Routing\Route + * @static + */ + public static function view($uri, $view, $data = []) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->view($uri, $view, $data); + } + + /** + * Register a new route with the given verbs. + * + * @param array|string $methods + * @param string $uri + * @param \Closure|array|string|callable|null $action + * @return \Illuminate\Routing\Route + * @static + */ + public static function match($methods, $uri, $action = null) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->match($methods, $uri, $action); + } + + /** + * Register an array of resource controllers. + * + * @param array $resources + * @param array $options + * @return void + * @static + */ + public static function resources($resources, $options = []) + { + /** @var \Illuminate\Routing\Router $instance */ + $instance->resources($resources, $options); + } + + /** + * Route a resource to a controller. + * + * @param string $name + * @param string $controller + * @param array $options + * @return \Illuminate\Routing\PendingResourceRegistration + * @static + */ + public static function resource($name, $controller, $options = []) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->resource($name, $controller, $options); + } + + /** + * Register an array of API resource controllers. + * + * @param array $resources + * @param array $options + * @return void + * @static + */ + public static function apiResources($resources, $options = []) + { + /** @var \Illuminate\Routing\Router $instance */ + $instance->apiResources($resources, $options); + } + + /** + * Route an API resource to a controller. + * + * @param string $name + * @param string $controller + * @param array $options + * @return \Illuminate\Routing\PendingResourceRegistration + * @static + */ + public static function apiResource($name, $controller, $options = []) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->apiResource($name, $controller, $options); + } + + /** + * Create a route group with shared attributes. + * + * @param array $attributes + * @param \Closure|string $routes + * @return void + * @static + */ + public static function group($attributes, $routes) + { + /** @var \Illuminate\Routing\Router $instance */ + $instance->group($attributes, $routes); + } + + /** + * Merge the given array with the last group stack. + * + * @param array $new + * @return array + * @static + */ + public static function mergeWithLastGroup($new) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->mergeWithLastGroup($new); + } + + /** + * Get the prefix from the last group on the stack. + * + * @return string + * @static + */ + public static function getLastGroupPrefix() + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->getLastGroupPrefix(); + } + + /** + * Add a route to the underlying route collection. + * + * @param array|string $methods + * @param string $uri + * @param \Closure|array|string|callable|null $action + * @return \Illuminate\Routing\Route + * @static + */ + public static function addRoute($methods, $uri, $action) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->addRoute($methods, $uri, $action); + } + + /** + * Return the response returned by the given route. + * + * @param string $name + * @return \Symfony\Component\HttpFoundation\Response + * @static + */ + public static function respondWithRoute($name) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->respondWithRoute($name); + } + + /** + * Dispatch the request to the application. + * + * @param \Illuminate\Http\Request $request + * @return \Symfony\Component\HttpFoundation\Response + * @static + */ + public static function dispatch($request) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->dispatch($request); + } + + /** + * Dispatch the request to a route and return the response. + * + * @param \Illuminate\Http\Request $request + * @return \Symfony\Component\HttpFoundation\Response + * @static + */ + public static function dispatchToRoute($request) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->dispatchToRoute($request); + } + + /** + * Gather the middleware for the given route with resolved class names. + * + * @param \Illuminate\Routing\Route $route + * @return array + * @static + */ + public static function gatherRouteMiddleware($route) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->gatherRouteMiddleware($route); + } + + /** + * Create a response instance from the given value. + * + * @param \Symfony\Component\HttpFoundation\Request $request + * @param mixed $response + * @return \Symfony\Component\HttpFoundation\Response + * @static + */ + public static function prepareResponse($request, $response) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->prepareResponse($request, $response); + } + + /** + * Static version of prepareResponse. + * + * @param \Symfony\Component\HttpFoundation\Request $request + * @param mixed $response + * @return \Symfony\Component\HttpFoundation\Response + * @static + */ + public static function toResponse($request, $response) + { + return \Illuminate\Routing\Router::toResponse($request, $response); + } + + /** + * Substitute the route bindings onto the route. + * + * @param \Illuminate\Routing\Route $route + * @return \Illuminate\Routing\Route + * @throws \Illuminate\Database\Eloquent\ModelNotFoundException + * @static + */ + public static function substituteBindings($route) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->substituteBindings($route); + } + + /** + * Substitute the implicit Eloquent model bindings for the route. + * + * @param \Illuminate\Routing\Route $route + * @return void + * @throws \Illuminate\Database\Eloquent\ModelNotFoundException + * @static + */ + public static function substituteImplicitBindings($route) + { + /** @var \Illuminate\Routing\Router $instance */ + $instance->substituteImplicitBindings($route); + } + + /** + * Register a route matched event listener. + * + * @param string|callable $callback + * @return void + * @static + */ + public static function matched($callback) + { + /** @var \Illuminate\Routing\Router $instance */ + $instance->matched($callback); + } + + /** + * Get all of the defined middleware short-hand names. + * + * @return array + * @static + */ + public static function getMiddleware() + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->getMiddleware(); + } + + /** + * Register a short-hand name for a middleware. + * + * @param string $name + * @param string $class + * @return \Illuminate\Routing\Router + * @static + */ + public static function aliasMiddleware($name, $class) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->aliasMiddleware($name, $class); + } + + /** + * Check if a middlewareGroup with the given name exists. + * + * @param string $name + * @return bool + * @static + */ + public static function hasMiddlewareGroup($name) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->hasMiddlewareGroup($name); + } + + /** + * Get all of the defined middleware groups. + * + * @return array + * @static + */ + public static function getMiddlewareGroups() + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->getMiddlewareGroups(); + } + + /** + * Register a group of middleware. + * + * @param string $name + * @param array $middleware + * @return \Illuminate\Routing\Router + * @static + */ + public static function middlewareGroup($name, $middleware) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->middlewareGroup($name, $middleware); + } + + /** + * Add a middleware to the beginning of a middleware group. + * + * If the middleware is already in the group, it will not be added again. + * + * @param string $group + * @param string $middleware + * @return \Illuminate\Routing\Router + * @static + */ + public static function prependMiddlewareToGroup($group, $middleware) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->prependMiddlewareToGroup($group, $middleware); + } + + /** + * Add a middleware to the end of a middleware group. + * + * If the middleware is already in the group, it will not be added again. + * + * @param string $group + * @param string $middleware + * @return \Illuminate\Routing\Router + * @static + */ + public static function pushMiddlewareToGroup($group, $middleware) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->pushMiddlewareToGroup($group, $middleware); + } + + /** + * Add a new route parameter binder. + * + * @param string $key + * @param string|callable $binder + * @return void + * @static + */ + public static function bind($key, $binder) + { + /** @var \Illuminate\Routing\Router $instance */ + $instance->bind($key, $binder); + } + + /** + * Register a model binder for a wildcard. + * + * @param string $key + * @param string $class + * @param \Closure|null $callback + * @return void + * @static + */ + public static function model($key, $class, $callback = null) + { + /** @var \Illuminate\Routing\Router $instance */ + $instance->model($key, $class, $callback); + } + + /** + * Get the binding callback for a given binding. + * + * @param string $key + * @return \Closure|null + * @static + */ + public static function getBindingCallback($key) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->getBindingCallback($key); + } + + /** + * Get the global "where" patterns. + * + * @return array + * @static + */ + public static function getPatterns() + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->getPatterns(); + } + + /** + * Set a global where pattern on all routes. + * + * @param string $key + * @param string $pattern + * @return void + * @static + */ + public static function pattern($key, $pattern) + { + /** @var \Illuminate\Routing\Router $instance */ + $instance->pattern($key, $pattern); + } + + /** + * Set a group of global where patterns on all routes. + * + * @param array $patterns + * @return void + * @static + */ + public static function patterns($patterns) + { + /** @var \Illuminate\Routing\Router $instance */ + $instance->patterns($patterns); + } + + /** + * Determine if the router currently has a group stack. + * + * @return bool + * @static + */ + public static function hasGroupStack() + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->hasGroupStack(); + } + + /** + * Get the current group stack for the router. + * + * @return array + * @static + */ + public static function getGroupStack() + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->getGroupStack(); + } + + /** + * Get a route parameter for the current route. + * + * @param string $key + * @param string|null $default + * @return mixed + * @static + */ + public static function input($key, $default = null) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->input($key, $default); + } + + /** + * Get the request currently being dispatched. + * + * @return \Illuminate\Http\Request + * @static + */ + public static function getCurrentRequest() + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->getCurrentRequest(); + } + + /** + * Get the currently dispatched route instance. + * + * @return \Illuminate\Routing\Route + * @static + */ + public static function getCurrentRoute() + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->getCurrentRoute(); + } + + /** + * Get the currently dispatched route instance. + * + * @return \Illuminate\Routing\Route|null + * @static + */ + public static function current() + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->current(); + } + + /** + * Check if a route with the given name exists. + * + * @param string $name + * @return bool + * @static + */ + public static function has($name) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->has($name); + } + + /** + * Get the current route name. + * + * @return string|null + * @static + */ + public static function currentRouteName() + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->currentRouteName(); + } + + /** + * Alias for the "currentRouteNamed" method. + * + * @param mixed $patterns + * @return bool + * @static + */ + public static function is(...$patterns) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->is(...$patterns); + } + + /** + * Determine if the current route matches a pattern. + * + * @param mixed $patterns + * @return bool + * @static + */ + public static function currentRouteNamed(...$patterns) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->currentRouteNamed(...$patterns); + } + + /** + * Get the current route action. + * + * @return string|null + * @static + */ + public static function currentRouteAction() + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->currentRouteAction(); + } + + /** + * Alias for the "currentRouteUses" method. + * + * @param array $patterns + * @return bool + * @static + */ + public static function uses(...$patterns) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->uses(...$patterns); + } + + /** + * Determine if the current route action matches a given action. + * + * @param string $action + * @return bool + * @static + */ + public static function currentRouteUses($action) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->currentRouteUses($action); + } + + /** + * Register the typical authentication routes for an application. + * + * @param array $options + * @return void + * @static + */ + public static function auth($options = []) + { + /** @var \Illuminate\Routing\Router $instance */ + $instance->auth($options); + } + + /** + * Register the typical reset password routes for an application. + * + * @return void + * @static + */ + public static function resetPassword() + { + /** @var \Illuminate\Routing\Router $instance */ + $instance->resetPassword(); + } + + /** + * Register the typical confirm password routes for an application. + * + * @return void + * @static + */ + public static function confirmPassword() + { + /** @var \Illuminate\Routing\Router $instance */ + $instance->confirmPassword(); + } + + /** + * Register the typical email verification routes for an application. + * + * @return void + * @static + */ + public static function emailVerification() + { + /** @var \Illuminate\Routing\Router $instance */ + $instance->emailVerification(); + } + + /** + * Set the unmapped global resource parameters to singular. + * + * @param bool $singular + * @return void + * @static + */ + public static function singularResourceParameters($singular = true) + { + /** @var \Illuminate\Routing\Router $instance */ + $instance->singularResourceParameters($singular); + } + + /** + * Set the global resource parameter mapping. + * + * @param array $parameters + * @return void + * @static + */ + public static function resourceParameters($parameters = []) + { + /** @var \Illuminate\Routing\Router $instance */ + $instance->resourceParameters($parameters); + } + + /** + * Get or set the verbs used in the resource URIs. + * + * @param array $verbs + * @return array|null + * @static + */ + public static function resourceVerbs($verbs = []) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->resourceVerbs($verbs); + } + + /** + * Get the underlying route collection. + * + * @return \Illuminate\Routing\RouteCollection + * @static + */ + public static function getRoutes() + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->getRoutes(); + } + + /** + * Set the route collection instance. + * + * @param \Illuminate\Routing\RouteCollection $routes + * @return void + * @static + */ + public static function setRoutes($routes) + { + /** @var \Illuminate\Routing\Router $instance */ + $instance->setRoutes($routes); + } + + /** + * Register a custom macro. + * + * @param string $name + * @param object|callable $macro + * @return void + * @static + */ + public static function macro($name, $macro) + { + \Illuminate\Routing\Router::macro($name, $macro); + } + + /** + * Mix another object into the class. + * + * @param object $mixin + * @param bool $replace + * @return void + * @throws \ReflectionException + * @static + */ + public static function mixin($mixin, $replace = true) + { + \Illuminate\Routing\Router::mixin($mixin, $replace); + } + + /** + * Checks if macro is registered. + * + * @param string $name + * @return bool + * @static + */ + public static function hasMacro($name) + { + return \Illuminate\Routing\Router::hasMacro($name); + } + + /** + * Dynamically handle calls to the class. + * + * @param string $method + * @param array $parameters + * @return mixed + * @throws \BadMethodCallException + * @static + */ + public static function macroCall($method, $parameters) + { + /** @var \Illuminate\Routing\Router $instance */ + return $instance->macroCall($method, $parameters); + } + + } + + /** + * + * + * @see \Illuminate\Database\Schema\Builder + */ + class Schema { + + /** + * Determine if the given table exists. + * + * @param string $table + * @return bool + * @static + */ + public static function hasTable($table) + { + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + return $instance->hasTable($table); + } + + /** + * Get the column listing for a given table. + * + * @param string $table + * @return array + * @static + */ + public static function getColumnListing($table) + { + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + return $instance->getColumnListing($table); + } + + /** + * Drop all tables from the database. + * + * @return void + * @static + */ + public static function dropAllTables() + { + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + $instance->dropAllTables(); + } + + /** + * Drop all views from the database. + * + * @return void + * @static + */ + public static function dropAllViews() + { + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + $instance->dropAllViews(); + } + + /** + * Get all of the table names for the database. + * + * @return array + * @static + */ + public static function getAllTables() + { + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + return $instance->getAllTables(); + } + + /** + * Get all of the view names for the database. + * + * @return array + * @static + */ + public static function getAllViews() + { + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + return $instance->getAllViews(); + } + + /** + * Set the default string length for migrations. + * + * @param int $length + * @return void + * @static + */ + public static function defaultStringLength($length) + { + //Method inherited from \Illuminate\Database\Schema\Builder + \Illuminate\Database\Schema\MySqlBuilder::defaultStringLength($length); + } + + /** + * Determine if the given table has a given column. + * + * @param string $table + * @param string $column + * @return bool + * @static + */ + public static function hasColumn($table, $column) + { + //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + return $instance->hasColumn($table, $column); + } + + /** + * Determine if the given table has given columns. + * + * @param string $table + * @param array $columns + * @return bool + * @static + */ + public static function hasColumns($table, $columns) + { + //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + return $instance->hasColumns($table, $columns); + } + + /** + * Get the data type for the given column name. + * + * @param string $table + * @param string $column + * @return string + * @static + */ + public static function getColumnType($table, $column) + { + //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + return $instance->getColumnType($table, $column); + } + + /** + * Modify a table on the schema. + * + * @param string $table + * @param \Closure $callback + * @return void + * @static + */ + public static function table($table, $callback) + { + //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + $instance->table($table, $callback); + } + + /** + * Create a new table on the schema. + * + * @param string $table + * @param \Closure $callback + * @return void + * @static + */ + public static function create($table, $callback) + { + //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + $instance->create($table, $callback); + } + + /** + * Drop a table from the schema. + * + * @param string $table + * @return void + * @static + */ + public static function drop($table) + { + //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + $instance->drop($table); + } + + /** + * Drop a table from the schema if it exists. + * + * @param string $table + * @return void + * @static + */ + public static function dropIfExists($table) + { + //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + $instance->dropIfExists($table); + } + + /** + * Drop all types from the database. + * + * @return void + * @throws \LogicException + * @static + */ + public static function dropAllTypes() + { + //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + $instance->dropAllTypes(); + } + + /** + * Rename a table on the schema. + * + * @param string $from + * @param string $to + * @return void + * @static + */ + public static function rename($from, $to) + { + //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + $instance->rename($from, $to); + } + + /** + * Enable foreign key constraints. + * + * @return bool + * @static + */ + public static function enableForeignKeyConstraints() + { + //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + return $instance->enableForeignKeyConstraints(); + } + + /** + * Disable foreign key constraints. + * + * @return bool + * @static + */ + public static function disableForeignKeyConstraints() + { + //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + return $instance->disableForeignKeyConstraints(); + } + + /** + * Register a custom Doctrine mapping type. + * + * @param string $class + * @param string $name + * @param string $type + * @return void + * @throws \Doctrine\DBAL\DBALException + * @throws \RuntimeException + * @static + */ + public static function registerCustomDoctrineType($class, $name, $type) + { + //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + $instance->registerCustomDoctrineType($class, $name, $type); + } + + /** + * Get the database connection instance. + * + * @return \Illuminate\Database\Connection + * @static + */ + public static function getConnection() + { + //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + return $instance->getConnection(); + } + + /** + * Set the database connection instance. + * + * @param \Illuminate\Database\Connection $connection + * @return \Illuminate\Database\Schema\MySqlBuilder + * @static + */ + public static function setConnection($connection) + { + //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + return $instance->setConnection($connection); + } + + /** + * Set the Schema Blueprint resolver callback. + * + * @param \Closure $resolver + * @return void + * @static + */ + public static function blueprintResolver($resolver) + { + //Method inherited from \Illuminate\Database\Schema\Builder + /** @var \Illuminate\Database\Schema\MySqlBuilder $instance */ + $instance->blueprintResolver($resolver); + } + + } + + /** + * + * + * @see \Illuminate\Session\SessionManager + * @see \Illuminate\Session\Store + */ + class Session { + + /** + * Get the session configuration. + * + * @return array + * @static + */ + public static function getSessionConfig() + { + /** @var \Illuminate\Session\SessionManager $instance */ + return $instance->getSessionConfig(); + } + + /** + * Get the default session driver name. + * + * @return string + * @static + */ + public static function getDefaultDriver() + { + /** @var \Illuminate\Session\SessionManager $instance */ + return $instance->getDefaultDriver(); + } + + /** + * Set the default session driver name. + * + * @param string $name + * @return void + * @static + */ + public static function setDefaultDriver($name) + { + /** @var \Illuminate\Session\SessionManager $instance */ + $instance->setDefaultDriver($name); + } + + /** + * Get a driver instance. + * + * @param string $driver + * @return mixed + * @throws \InvalidArgumentException + * @static + */ + public static function driver($driver = null) + { + //Method inherited from \Illuminate\Support\Manager + /** @var \Illuminate\Session\SessionManager $instance */ + return $instance->driver($driver); + } + + /** + * Register a custom driver creator Closure. + * + * @param string $driver + * @param \Closure $callback + * @return \Illuminate\Session\SessionManager + * @static + */ + public static function extend($driver, $callback) + { + //Method inherited from \Illuminate\Support\Manager + /** @var \Illuminate\Session\SessionManager $instance */ + return $instance->extend($driver, $callback); + } + + /** + * Get all of the created "drivers". + * + * @return array + * @static + */ + public static function getDrivers() + { + //Method inherited from \Illuminate\Support\Manager + /** @var \Illuminate\Session\SessionManager $instance */ + return $instance->getDrivers(); + } + + /** + * Start the session, reading the data from a handler. + * + * @return bool + * @static + */ + public static function start() + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->start(); + } + + /** + * Save the session data to storage. + * + * @return void + * @static + */ + public static function save() + { + /** @var \Illuminate\Session\Store $instance */ + $instance->save(); + } + + /** + * Age the flash data for the session. + * + * @return void + * @static + */ + public static function ageFlashData() + { + /** @var \Illuminate\Session\Store $instance */ + $instance->ageFlashData(); + } + + /** + * Get all of the session data. + * + * @return array + * @static + */ + public static function all() + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->all(); + } + + /** + * Get a subset of the session data. + * + * @param array $keys + * @return array + * @static + */ + public static function only($keys) + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->only($keys); + } + + /** + * Checks if a key exists. + * + * @param string|array $key + * @return bool + * @static + */ + public static function exists($key) + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->exists($key); + } + + /** + * Checks if a key is present and not null. + * + * @param string|array $key + * @return bool + * @static + */ + public static function has($key) + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->has($key); + } + + /** + * Get an item from the session. + * + * @param string $key + * @param mixed $default + * @return mixed + * @static + */ + public static function get($key, $default = null) + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->get($key, $default); + } + + /** + * Get the value of a given key and then forget it. + * + * @param string $key + * @param string|null $default + * @return mixed + * @static + */ + public static function pull($key, $default = null) + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->pull($key, $default); + } + + /** + * Determine if the session contains old input. + * + * @param string|null $key + * @return bool + * @static + */ + public static function hasOldInput($key = null) + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->hasOldInput($key); + } + + /** + * Get the requested item from the flashed input array. + * + * @param string|null $key + * @param mixed $default + * @return mixed + * @static + */ + public static function getOldInput($key = null, $default = null) + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->getOldInput($key, $default); + } + + /** + * Replace the given session attributes entirely. + * + * @param array $attributes + * @return void + * @static + */ + public static function replace($attributes) + { + /** @var \Illuminate\Session\Store $instance */ + $instance->replace($attributes); + } + + /** + * Put a key / value pair or array of key / value pairs in the session. + * + * @param string|array $key + * @param mixed $value + * @return void + * @static + */ + public static function put($key, $value = null) + { + /** @var \Illuminate\Session\Store $instance */ + $instance->put($key, $value); + } + + /** + * Get an item from the session, or store the default value. + * + * @param string $key + * @param \Closure $callback + * @return mixed + * @static + */ + public static function remember($key, $callback) + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->remember($key, $callback); + } + + /** + * Push a value onto a session array. + * + * @param string $key + * @param mixed $value + * @return void + * @static + */ + public static function push($key, $value) + { + /** @var \Illuminate\Session\Store $instance */ + $instance->push($key, $value); + } + + /** + * Increment the value of an item in the session. + * + * @param string $key + * @param int $amount + * @return mixed + * @static + */ + public static function increment($key, $amount = 1) + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->increment($key, $amount); + } + + /** + * Decrement the value of an item in the session. + * + * @param string $key + * @param int $amount + * @return int + * @static + */ + public static function decrement($key, $amount = 1) + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->decrement($key, $amount); + } + + /** + * Flash a key / value pair to the session. + * + * @param string $key + * @param mixed $value + * @return void + * @static + */ + public static function flash($key, $value = true) + { + /** @var \Illuminate\Session\Store $instance */ + $instance->flash($key, $value); + } + + /** + * Flash a key / value pair to the session for immediate use. + * + * @param string $key + * @param mixed $value + * @return void + * @static + */ + public static function now($key, $value) + { + /** @var \Illuminate\Session\Store $instance */ + $instance->now($key, $value); + } + + /** + * Reflash all of the session flash data. + * + * @return void + * @static + */ + public static function reflash() + { + /** @var \Illuminate\Session\Store $instance */ + $instance->reflash(); + } + + /** + * Reflash a subset of the current flash data. + * + * @param array|mixed $keys + * @return void + * @static + */ + public static function keep($keys = null) + { + /** @var \Illuminate\Session\Store $instance */ + $instance->keep($keys); + } + + /** + * Flash an input array to the session. + * + * @param array $value + * @return void + * @static + */ + public static function flashInput($value) + { + /** @var \Illuminate\Session\Store $instance */ + $instance->flashInput($value); + } + + /** + * Remove an item from the session, returning its value. + * + * @param string $key + * @return mixed + * @static + */ + public static function remove($key) + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->remove($key); + } + + /** + * Remove one or many items from the session. + * + * @param string|array $keys + * @return void + * @static + */ + public static function forget($keys) + { + /** @var \Illuminate\Session\Store $instance */ + $instance->forget($keys); + } + + /** + * Remove all of the items from the session. + * + * @return void + * @static + */ + public static function flush() + { + /** @var \Illuminate\Session\Store $instance */ + $instance->flush(); + } + + /** + * Flush the session data and regenerate the ID. + * + * @return bool + * @static + */ + public static function invalidate() + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->invalidate(); + } + + /** + * Generate a new session identifier. + * + * @param bool $destroy + * @return bool + * @static + */ + public static function regenerate($destroy = false) + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->regenerate($destroy); + } + + /** + * Generate a new session ID for the session. + * + * @param bool $destroy + * @return bool + * @static + */ + public static function migrate($destroy = false) + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->migrate($destroy); + } + + /** + * Determine if the session has been started. + * + * @return bool + * @static + */ + public static function isStarted() + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->isStarted(); + } + + /** + * Get the name of the session. + * + * @return string + * @static + */ + public static function getName() + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->getName(); + } + + /** + * Set the name of the session. + * + * @param string $name + * @return void + * @static + */ + public static function setName($name) + { + /** @var \Illuminate\Session\Store $instance */ + $instance->setName($name); + } + + /** + * Get the current session ID. + * + * @return string + * @static + */ + public static function getId() + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->getId(); + } + + /** + * Set the session ID. + * + * @param string $id + * @return void + * @static + */ + public static function setId($id) + { + /** @var \Illuminate\Session\Store $instance */ + $instance->setId($id); + } + + /** + * Determine if this is a valid session ID. + * + * @param string $id + * @return bool + * @static + */ + public static function isValidId($id) + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->isValidId($id); + } + + /** + * Set the existence of the session on the handler if applicable. + * + * @param bool $value + * @return void + * @static + */ + public static function setExists($value) + { + /** @var \Illuminate\Session\Store $instance */ + $instance->setExists($value); + } + + /** + * Get the CSRF token value. + * + * @return string + * @static + */ + public static function token() + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->token(); + } + + /** + * Regenerate the CSRF token value. + * + * @return void + * @static + */ + public static function regenerateToken() + { + /** @var \Illuminate\Session\Store $instance */ + $instance->regenerateToken(); + } + + /** + * Get the previous URL from the session. + * + * @return string|null + * @static + */ + public static function previousUrl() + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->previousUrl(); + } + + /** + * Set the "previous" URL in the session. + * + * @param string $url + * @return void + * @static + */ + public static function setPreviousUrl($url) + { + /** @var \Illuminate\Session\Store $instance */ + $instance->setPreviousUrl($url); + } + + /** + * Get the underlying session handler implementation. + * + * @return \SessionHandlerInterface + * @static + */ + public static function getHandler() + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->getHandler(); + } + + /** + * Determine if the session handler needs a request. + * + * @return bool + * @static + */ + public static function handlerNeedsRequest() + { + /** @var \Illuminate\Session\Store $instance */ + return $instance->handlerNeedsRequest(); + } + + /** + * Set the request on the handler instance. + * + * @param \Illuminate\Http\Request $request + * @return void + * @static + */ + public static function setRequestOnHandler($request) + { + /** @var \Illuminate\Session\Store $instance */ + $instance->setRequestOnHandler($request); + } + + } + + /** + * + * + * @see \Illuminate\Filesystem\FilesystemManager + */ + class Storage { + + /** + * Get a filesystem instance. + * + * @param string|null $name + * @return \Illuminate\Filesystem\FilesystemAdapter + * @static + */ + public static function drive($name = null) + { + /** @var \Illuminate\Filesystem\FilesystemManager $instance */ + return $instance->drive($name); + } + + /** + * Get a filesystem instance. + * + * @param string|null $name + * @return \Illuminate\Filesystem\FilesystemAdapter + * @static + */ + public static function disk($name = null) + { + /** @var \Illuminate\Filesystem\FilesystemManager $instance */ + return $instance->disk($name); + } + + /** + * Get a default cloud filesystem instance. + * + * @return \Illuminate\Filesystem\FilesystemAdapter + * @static + */ + public static function cloud() + { + /** @var \Illuminate\Filesystem\FilesystemManager $instance */ + return $instance->cloud(); + } + + /** + * Create an instance of the local driver. + * + * @param array $config + * @return \Illuminate\Filesystem\FilesystemAdapter + * @static + */ + public static function createLocalDriver($config) + { + /** @var \Illuminate\Filesystem\FilesystemManager $instance */ + return $instance->createLocalDriver($config); + } + + /** + * Create an instance of the ftp driver. + * + * @param array $config + * @return \Illuminate\Filesystem\FilesystemAdapter + * @static + */ + public static function createFtpDriver($config) + { + /** @var \Illuminate\Filesystem\FilesystemManager $instance */ + return $instance->createFtpDriver($config); + } + + /** + * Create an instance of the sftp driver. + * + * @param array $config + * @return \Illuminate\Filesystem\FilesystemAdapter + * @static + */ + public static function createSftpDriver($config) + { + /** @var \Illuminate\Filesystem\FilesystemManager $instance */ + return $instance->createSftpDriver($config); + } + + /** + * Create an instance of the Amazon S3 driver. + * + * @param array $config + * @return \Illuminate\Contracts\Filesystem\Cloud + * @static + */ + public static function createS3Driver($config) + { + /** @var \Illuminate\Filesystem\FilesystemManager $instance */ + return $instance->createS3Driver($config); + } + + /** + * Set the given disk instance. + * + * @param string $name + * @param mixed $disk + * @return \Illuminate\Filesystem\FilesystemManager + * @static + */ + public static function set($name, $disk) + { + /** @var \Illuminate\Filesystem\FilesystemManager $instance */ + return $instance->set($name, $disk); + } + + /** + * Get the default driver name. + * + * @return string + * @static + */ + public static function getDefaultDriver() + { + /** @var \Illuminate\Filesystem\FilesystemManager $instance */ + return $instance->getDefaultDriver(); + } + + /** + * Get the default cloud driver name. + * + * @return string + * @static + */ + public static function getDefaultCloudDriver() + { + /** @var \Illuminate\Filesystem\FilesystemManager $instance */ + return $instance->getDefaultCloudDriver(); + } + + /** + * Unset the given disk instances. + * + * @param array|string $disk + * @return \Illuminate\Filesystem\FilesystemManager + * @static + */ + public static function forgetDisk($disk) + { + /** @var \Illuminate\Filesystem\FilesystemManager $instance */ + return $instance->forgetDisk($disk); + } + + /** + * Register a custom driver creator Closure. + * + * @param string $driver + * @param \Closure $callback + * @return \Illuminate\Filesystem\FilesystemManager + * @static + */ + public static function extend($driver, $callback) + { + /** @var \Illuminate\Filesystem\FilesystemManager $instance */ + return $instance->extend($driver, $callback); + } + + /** + * Assert that the given file exists. + * + * @param string|array $path + * @return \Illuminate\Filesystem\FilesystemAdapter + * @static + */ + public static function assertExists($path) + { + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->assertExists($path); + } + + /** + * Assert that the given file does not exist. + * + * @param string|array $path + * @return \Illuminate\Filesystem\FilesystemAdapter + * @static + */ + public static function assertMissing($path) + { + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->assertMissing($path); + } + + /** + * Determine if a file exists. + * + * @param string $path + * @return bool + * @static + */ + public static function exists($path) + { + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->exists($path); + } + + /** + * Determine if a file or directory is missing. + * + * @param string $path + * @return bool + * @static + */ + public static function missing($path) + { + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->missing($path); + } + + /** + * Get the full path for the file at the given "short" path. + * + * @param string $path + * @return string + * @static + */ + public static function path($path) + { + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->path($path); + } + + /** + * Get the contents of a file. + * + * @param string $path + * @return string + * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException + * @static + */ + public static function get($path) + { + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->get($path); + } + + /** + * Create a streamed response for a given file. + * + * @param string $path + * @param string|null $name + * @param array|null $headers + * @param string|null $disposition + * @return \Symfony\Component\HttpFoundation\StreamedResponse + * @static + */ + public static function response($path, $name = null, $headers = [], $disposition = 'inline') + { + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->response($path, $name, $headers, $disposition); + } + + /** + * Create a streamed download response for a given file. + * + * @param string $path + * @param string|null $name + * @param array|null $headers + * @return \Symfony\Component\HttpFoundation\StreamedResponse + * @static + */ + public static function download($path, $name = null, $headers = []) + { + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->download($path, $name, $headers); + } + + /** + * Write the contents of a file. + * + * @param string $path + * @param string|resource $contents + * @param mixed $options + * @return bool + * @static + */ + public static function put($path, $contents, $options = []) + { + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->put($path, $contents, $options); + } + + /** + * Store the uploaded file on the disk. + * + * @param string $path + * @param \Illuminate\Http\File|\Illuminate\Http\UploadedFile|string $file + * @param array $options + * @return string|false + * @static + */ + public static function putFile($path, $file, $options = []) + { + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->putFile($path, $file, $options); + } + + /** + * Store the uploaded file on the disk with a given name. + * + * @param string $path + * @param \Illuminate\Http\File|\Illuminate\Http\UploadedFile|string $file + * @param string $name + * @param array $options + * @return string|false + * @static + */ + public static function putFileAs($path, $file, $name, $options = []) + { + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->putFileAs($path, $file, $name, $options); + } + + /** + * Get the visibility for the given path. + * + * @param string $path + * @return string + * @static + */ + public static function getVisibility($path) + { + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->getVisibility($path); + } + + /** + * Set the visibility for the given path. + * + * @param string $path + * @param string $visibility + * @return bool + * @static + */ + public static function setVisibility($path, $visibility) + { + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->setVisibility($path, $visibility); + } + + /** + * Prepend to a file. + * + * @param string $path + * @param string $data + * @param string $separator + * @return bool + * @static + */ + public static function prepend($path, $data, $separator = ' +') + { + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->prepend($path, $data, $separator); + } + + /** + * Append to a file. + * + * @param string $path + * @param string $data + * @param string $separator + * @return bool + * @static + */ + public static function append($path, $data, $separator = ' +') + { + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->append($path, $data, $separator); + } + + /** + * Delete the file at a given path. + * + * @param string|array $paths + * @return bool + * @static + */ + public static function delete($paths) + { + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->delete($paths); + } + + /** + * Copy a file to a new location. + * + * @param string $from + * @param string $to + * @return bool + * @static + */ + public static function copy($from, $to) + { + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->copy($from, $to); + } + + /** + * Move a file to a new location. + * + * @param string $from + * @param string $to + * @return bool + * @static + */ + public static function move($from, $to) + { + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->move($from, $to); + } + + /** + * Get the file size of a given file. + * + * @param string $path + * @return int + * @static + */ + public static function size($path) + { + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->size($path); + } + + /** + * Get the mime-type of a given file. + * + * @param string $path + * @return string|false + * @static + */ + public static function mimeType($path) + { + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->mimeType($path); + } + + /** + * Get the file's last modification time. + * + * @param string $path + * @return int + * @static + */ + public static function lastModified($path) + { + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->lastModified($path); + } + + /** + * Get the URL for the file at the given path. + * + * @param string $path + * @return string + * @throws \RuntimeException + * @static + */ + public static function url($path) + { + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->url($path); + } + + /** + * Get a resource to read the file. + * + * @param string $path + * @return resource|null The path resource or null on failure. + * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException + * @static + */ + public static function readStream($path) + { + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->readStream($path); + } + + /** + * Write a new file using a stream. + * + * @param string $path + * @param resource $resource + * @param array $options + * @return bool + * @throws \InvalidArgumentException If $resource is not a file handle. + * @throws \Illuminate\Contracts\Filesystem\FileExistsException + * @static + */ + public static function writeStream($path, $resource, $options = []) + { + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->writeStream($path, $resource, $options); + } + + /** + * Get a temporary URL for the file at the given path. + * + * @param string $path + * @param \DateTimeInterface $expiration + * @param array $options + * @return string + * @throws \RuntimeException + * @static + */ + public static function temporaryUrl($path, $expiration, $options = []) + { + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->temporaryUrl($path, $expiration, $options); + } + + /** + * Get a temporary URL for the file at the given path. + * + * @param \League\Flysystem\AwsS3v3\AwsS3Adapter $adapter + * @param string $path + * @param \DateTimeInterface $expiration + * @param array $options + * @return string + * @static + */ + public static function getAwsTemporaryUrl($adapter, $path, $expiration, $options) + { + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->getAwsTemporaryUrl($adapter, $path, $expiration, $options); + } + + /** + * Get an array of all files in a directory. + * + * @param string|null $directory + * @param bool $recursive + * @return array + * @static + */ + public static function files($directory = null, $recursive = false) + { + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->files($directory, $recursive); + } + + /** + * Get all of the files from the given directory (recursive). + * + * @param string|null $directory + * @return array + * @static + */ + public static function allFiles($directory = null) + { + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->allFiles($directory); + } + + /** + * Get all of the directories within a given directory. + * + * @param string|null $directory + * @param bool $recursive + * @return array + * @static + */ + public static function directories($directory = null, $recursive = false) + { + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->directories($directory, $recursive); + } + + /** + * Get all (recursive) of the directories within a given directory. + * + * @param string|null $directory + * @return array + * @static + */ + public static function allDirectories($directory = null) + { + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->allDirectories($directory); + } + + /** + * Create a directory. + * + * @param string $path + * @return bool + * @static + */ + public static function makeDirectory($path) + { + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->makeDirectory($path); + } + + /** + * Recursively delete a directory. + * + * @param string $directory + * @return bool + * @static + */ + public static function deleteDirectory($directory) + { + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->deleteDirectory($directory); + } + + /** + * Flush the Flysystem cache. + * + * @return void + * @static + */ + public static function flushCache() + { + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + $instance->flushCache(); + } + + /** + * Get the Flysystem driver. + * + * @return \League\Flysystem\FilesystemInterface + * @static + */ + public static function getDriver() + { + /** @var \Illuminate\Filesystem\FilesystemAdapter $instance */ + return $instance->getDriver(); + } + + } + + /** + * + * + * @see \Illuminate\Routing\UrlGenerator + */ + class URL { + + /** + * Get the full URL for the current request. + * + * @return string + * @static + */ + public static function full() + { + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->full(); + } + + /** + * Get the current URL for the request. + * + * @return string + * @static + */ + public static function current() + { + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->current(); + } + + /** + * Get the URL for the previous request. + * + * @param mixed $fallback + * @return string + * @static + */ + public static function previous($fallback = false) + { + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->previous($fallback); + } + + /** + * Generate an absolute URL to the given path. + * + * @param string $path + * @param mixed $extra + * @param bool|null $secure + * @return string + * @static + */ + public static function to($path, $extra = [], $secure = null) + { + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->to($path, $extra, $secure); + } + + /** + * Generate a secure, absolute URL to the given path. + * + * @param string $path + * @param array $parameters + * @return string + * @static + */ + public static function secure($path, $parameters = []) + { + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->secure($path, $parameters); + } + + /** + * Generate the URL to an application asset. + * + * @param string $path + * @param bool|null $secure + * @return string + * @static + */ + public static function asset($path, $secure = null) + { + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->asset($path, $secure); + } + + /** + * Generate the URL to a secure asset. + * + * @param string $path + * @return string + * @static + */ + public static function secureAsset($path) + { + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->secureAsset($path); + } + + /** + * Generate the URL to an asset from a custom root domain such as CDN, etc. + * + * @param string $root + * @param string $path + * @param bool|null $secure + * @return string + * @static + */ + public static function assetFrom($root, $path, $secure = null) + { + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->assetFrom($root, $path, $secure); + } + + /** + * Get the default scheme for a raw URL. + * + * @param bool|null $secure + * @return string + * @static + */ + public static function formatScheme($secure = null) + { + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->formatScheme($secure); + } + + /** + * Create a signed route URL for a named route. + * + * @param string $name + * @param array $parameters + * @param \DateTimeInterface|\DateInterval|int|null $expiration + * @param bool $absolute + * @return string + * @throws \InvalidArgumentException + * @static + */ + public static function signedRoute($name, $parameters = [], $expiration = null, $absolute = true) + { + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->signedRoute($name, $parameters, $expiration, $absolute); + } + + /** + * Create a temporary signed route URL for a named route. + * + * @param string $name + * @param \DateTimeInterface|\DateInterval|int $expiration + * @param array $parameters + * @param bool $absolute + * @return string + * @static + */ + public static function temporarySignedRoute($name, $expiration, $parameters = [], $absolute = true) + { + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->temporarySignedRoute($name, $expiration, $parameters, $absolute); + } + + /** + * Determine if the given request has a valid signature. + * + * @param \Illuminate\Http\Request $request + * @param bool $absolute + * @return bool + * @static + */ + public static function hasValidSignature($request, $absolute = true) + { + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->hasValidSignature($request, $absolute); + } + + /** + * Determine if the signature from the given request matches the URL. + * + * @param \Illuminate\Http\Request $request + * @param bool $absolute + * @return bool + * @static + */ + public static function hasCorrectSignature($request, $absolute = true) + { + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->hasCorrectSignature($request, $absolute); + } + + /** + * Determine if the expires timestamp from the given request is not from the past. + * + * @param \Illuminate\Http\Request $request + * @return bool + * @static + */ + public static function signatureHasNotExpired($request) + { + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->signatureHasNotExpired($request); + } + + /** + * Get the URL to a named route. + * + * @param string $name + * @param mixed $parameters + * @param bool $absolute + * @return string + * @throws \Symfony\Component\Routing\Exception\RouteNotFoundException + * @static + */ + public static function route($name, $parameters = [], $absolute = true) + { + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->route($name, $parameters, $absolute); + } + + /** + * Get the URL for a given route instance. + * + * @param \Illuminate\Routing\Route $route + * @param mixed $parameters + * @param bool $absolute + * @return string + * @throws \Illuminate\Routing\Exceptions\UrlGenerationException + * @static + */ + public static function toRoute($route, $parameters, $absolute) + { + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->toRoute($route, $parameters, $absolute); + } + + /** + * Get the URL to a controller action. + * + * @param string|array $action + * @param mixed $parameters + * @param bool $absolute + * @return string + * @throws \InvalidArgumentException + * @static + */ + public static function action($action, $parameters = [], $absolute = true) + { + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->action($action, $parameters, $absolute); + } + + /** + * Format the array of URL parameters. + * + * @param mixed|array $parameters + * @return array + * @static + */ + public static function formatParameters($parameters) + { + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->formatParameters($parameters); + } + + /** + * Get the base URL for the request. + * + * @param string $scheme + * @param string|null $root + * @return string + * @static + */ + public static function formatRoot($scheme, $root = null) + { + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->formatRoot($scheme, $root); + } + + /** + * Format the given URL segments into a single URL. + * + * @param string $root + * @param string $path + * @param \Illuminate\Routing\Route|null $route + * @return string + * @static + */ + public static function format($root, $path, $route = null) + { + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->format($root, $path, $route); + } + + /** + * Determine if the given path is a valid URL. + * + * @param string $path + * @return bool + * @static + */ + public static function isValidUrl($path) + { + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->isValidUrl($path); + } + + /** + * Set the default named parameters used by the URL generator. + * + * @param array $defaults + * @return void + * @static + */ + public static function defaults($defaults) + { + /** @var \Illuminate\Routing\UrlGenerator $instance */ + $instance->defaults($defaults); + } + + /** + * Get the default named parameters used by the URL generator. + * + * @return array + * @static + */ + public static function getDefaultParameters() + { + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->getDefaultParameters(); + } + + /** + * Force the scheme for URLs. + * + * @param string $scheme + * @return void + * @static + */ + public static function forceScheme($scheme) + { + /** @var \Illuminate\Routing\UrlGenerator $instance */ + $instance->forceScheme($scheme); + } + + /** + * Set the forced root URL. + * + * @param string $root + * @return void + * @static + */ + public static function forceRootUrl($root) + { + /** @var \Illuminate\Routing\UrlGenerator $instance */ + $instance->forceRootUrl($root); + } + + /** + * Set a callback to be used to format the host of generated URLs. + * + * @param \Closure $callback + * @return \Illuminate\Routing\UrlGenerator + * @static + */ + public static function formatHostUsing($callback) + { + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->formatHostUsing($callback); + } + + /** + * Set a callback to be used to format the path of generated URLs. + * + * @param \Closure $callback + * @return \Illuminate\Routing\UrlGenerator + * @static + */ + public static function formatPathUsing($callback) + { + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->formatPathUsing($callback); + } + + /** + * Get the path formatter being used by the URL generator. + * + * @return \Closure + * @static + */ + public static function pathFormatter() + { + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->pathFormatter(); + } + + /** + * Get the request instance. + * + * @return \Illuminate\Http\Request + * @static + */ + public static function getRequest() + { + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->getRequest(); + } + + /** + * Set the current request instance. + * + * @param \Illuminate\Http\Request $request + * @return void + * @static + */ + public static function setRequest($request) + { + /** @var \Illuminate\Routing\UrlGenerator $instance */ + $instance->setRequest($request); + } + + /** + * Set the route collection. + * + * @param \Illuminate\Routing\RouteCollection $routes + * @return \Illuminate\Routing\UrlGenerator + * @static + */ + public static function setRoutes($routes) + { + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->setRoutes($routes); + } + + /** + * Set the session resolver for the generator. + * + * @param callable $sessionResolver + * @return \Illuminate\Routing\UrlGenerator + * @static + */ + public static function setSessionResolver($sessionResolver) + { + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->setSessionResolver($sessionResolver); + } + + /** + * Set the encryption key resolver. + * + * @param callable $keyResolver + * @return \Illuminate\Routing\UrlGenerator + * @static + */ + public static function setKeyResolver($keyResolver) + { + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->setKeyResolver($keyResolver); + } + + /** + * Set the root controller namespace. + * + * @param string $rootNamespace + * @return \Illuminate\Routing\UrlGenerator + * @static + */ + public static function setRootControllerNamespace($rootNamespace) + { + /** @var \Illuminate\Routing\UrlGenerator $instance */ + return $instance->setRootControllerNamespace($rootNamespace); + } + + /** + * Register a custom macro. + * + * @param string $name + * @param object|callable $macro + * @return void + * @static + */ + public static function macro($name, $macro) + { + \Illuminate\Routing\UrlGenerator::macro($name, $macro); + } + + /** + * Mix another object into the class. + * + * @param object $mixin + * @param bool $replace + * @return void + * @throws \ReflectionException + * @static + */ + public static function mixin($mixin, $replace = true) + { + \Illuminate\Routing\UrlGenerator::mixin($mixin, $replace); + } + + /** + * Checks if macro is registered. + * + * @param string $name + * @return bool + * @static + */ + public static function hasMacro($name) + { + return \Illuminate\Routing\UrlGenerator::hasMacro($name); + } + + } + + /** + * + * + * @see \Illuminate\Validation\Factory + */ + class Validator { + + /** + * Create a new Validator instance. + * + * @param array $data + * @param array $rules + * @param array $messages + * @param array $customAttributes + * @return \Illuminate\Validation\Validator + * @static + */ + public static function make($data, $rules, $messages = [], $customAttributes = []) + { + /** @var \Illuminate\Validation\Factory $instance */ + return $instance->make($data, $rules, $messages, $customAttributes); + } + + /** + * Validate the given data against the provided rules. + * + * @param array $data + * @param array $rules + * @param array $messages + * @param array $customAttributes + * @return array + * @throws \Illuminate\Validation\ValidationException + * @static + */ + public static function validate($data, $rules, $messages = [], $customAttributes = []) + { + /** @var \Illuminate\Validation\Factory $instance */ + return $instance->validate($data, $rules, $messages, $customAttributes); + } + + /** + * Register a custom validator extension. + * + * @param string $rule + * @param \Closure|string $extension + * @param string|null $message + * @return void + * @static + */ + public static function extend($rule, $extension, $message = null) + { + /** @var \Illuminate\Validation\Factory $instance */ + $instance->extend($rule, $extension, $message); + } + + /** + * Register a custom implicit validator extension. + * + * @param string $rule + * @param \Closure|string $extension + * @param string|null $message + * @return void + * @static + */ + public static function extendImplicit($rule, $extension, $message = null) + { + /** @var \Illuminate\Validation\Factory $instance */ + $instance->extendImplicit($rule, $extension, $message); + } + + /** + * Register a custom dependent validator extension. + * + * @param string $rule + * @param \Closure|string $extension + * @param string|null $message + * @return void + * @static + */ + public static function extendDependent($rule, $extension, $message = null) + { + /** @var \Illuminate\Validation\Factory $instance */ + $instance->extendDependent($rule, $extension, $message); + } + + /** + * Register a custom validator message replacer. + * + * @param string $rule + * @param \Closure|string $replacer + * @return void + * @static + */ + public static function replacer($rule, $replacer) + { + /** @var \Illuminate\Validation\Factory $instance */ + $instance->replacer($rule, $replacer); + } + + /** + * Set the Validator instance resolver. + * + * @param \Closure $resolver + * @return void + * @static + */ + public static function resolver($resolver) + { + /** @var \Illuminate\Validation\Factory $instance */ + $instance->resolver($resolver); + } + + /** + * Get the Translator implementation. + * + * @return \Illuminate\Contracts\Translation\Translator + * @static + */ + public static function getTranslator() + { + /** @var \Illuminate\Validation\Factory $instance */ + return $instance->getTranslator(); + } + + /** + * Get the Presence Verifier implementation. + * + * @return \Illuminate\Validation\PresenceVerifierInterface + * @static + */ + public static function getPresenceVerifier() + { + /** @var \Illuminate\Validation\Factory $instance */ + return $instance->getPresenceVerifier(); + } + + /** + * Set the Presence Verifier implementation. + * + * @param \Illuminate\Validation\PresenceVerifierInterface $presenceVerifier + * @return void + * @static + */ + public static function setPresenceVerifier($presenceVerifier) + { + /** @var \Illuminate\Validation\Factory $instance */ + $instance->setPresenceVerifier($presenceVerifier); + } + + } + + /** + * + * + * @see \Illuminate\View\Factory + */ + class View { + + /** + * Get the evaluated view contents for the given view. + * + * @param string $path + * @param \Illuminate\Contracts\Support\Arrayable|array $data + * @param array $mergeData + * @return \Illuminate\Contracts\View\View + * @static + */ + public static function file($path, $data = [], $mergeData = []) + { + /** @var \Illuminate\View\Factory $instance */ + return $instance->file($path, $data, $mergeData); + } + + /** + * Get the evaluated view contents for the given view. + * + * @param string $view + * @param \Illuminate\Contracts\Support\Arrayable|array $data + * @param array $mergeData + * @return \Illuminate\Contracts\View\View + * @static + */ + public static function make($view, $data = [], $mergeData = []) + { + /** @var \Illuminate\View\Factory $instance */ + return $instance->make($view, $data, $mergeData); + } + + /** + * Get the first view that actually exists from the given list. + * + * @param array $views + * @param \Illuminate\Contracts\Support\Arrayable|array $data + * @param array $mergeData + * @return \Illuminate\Contracts\View\View + * @throws \InvalidArgumentException + * @static + */ + public static function first($views, $data = [], $mergeData = []) + { + /** @var \Illuminate\View\Factory $instance */ + return $instance->first($views, $data, $mergeData); + } + + /** + * Get the rendered content of the view based on a given condition. + * + * @param bool $condition + * @param string $view + * @param \Illuminate\Contracts\Support\Arrayable|array $data + * @param array $mergeData + * @return string + * @static + */ + public static function renderWhen($condition, $view, $data = [], $mergeData = []) + { + /** @var \Illuminate\View\Factory $instance */ + return $instance->renderWhen($condition, $view, $data, $mergeData); + } + + /** + * Get the rendered contents of a partial from a loop. + * + * @param string $view + * @param array $data + * @param string $iterator + * @param string $empty + * @return string + * @static + */ + public static function renderEach($view, $data, $iterator, $empty = 'raw|') + { + /** @var \Illuminate\View\Factory $instance */ + return $instance->renderEach($view, $data, $iterator, $empty); + } + + /** + * Determine if a given view exists. + * + * @param string $view + * @return bool + * @static + */ + public static function exists($view) + { + /** @var \Illuminate\View\Factory $instance */ + return $instance->exists($view); + } + + /** + * Get the appropriate view engine for the given path. + * + * @param string $path + * @return \Illuminate\Contracts\View\Engine + * @throws \InvalidArgumentException + * @static + */ + public static function getEngineFromPath($path) + { + /** @var \Illuminate\View\Factory $instance */ + return $instance->getEngineFromPath($path); + } + + /** + * Add a piece of shared data to the environment. + * + * @param array|string $key + * @param mixed|null $value + * @return mixed + * @static + */ + public static function share($key, $value = null) + { + /** @var \Illuminate\View\Factory $instance */ + return $instance->share($key, $value); + } + + /** + * Increment the rendering counter. + * + * @return void + * @static + */ + public static function incrementRender() + { + /** @var \Illuminate\View\Factory $instance */ + $instance->incrementRender(); + } + + /** + * Decrement the rendering counter. + * + * @return void + * @static + */ + public static function decrementRender() + { + /** @var \Illuminate\View\Factory $instance */ + $instance->decrementRender(); + } + + /** + * Check if there are no active render operations. + * + * @return bool + * @static + */ + public static function doneRendering() + { + /** @var \Illuminate\View\Factory $instance */ + return $instance->doneRendering(); + } + + /** + * Add a location to the array of view locations. + * + * @param string $location + * @return void + * @static + */ + public static function addLocation($location) + { + /** @var \Illuminate\View\Factory $instance */ + $instance->addLocation($location); + } + + /** + * Add a new namespace to the loader. + * + * @param string $namespace + * @param string|array $hints + * @return \Illuminate\View\Factory + * @static + */ + public static function addNamespace($namespace, $hints) + { + /** @var \Illuminate\View\Factory $instance */ + return $instance->addNamespace($namespace, $hints); + } + + /** + * Prepend a new namespace to the loader. + * + * @param string $namespace + * @param string|array $hints + * @return \Illuminate\View\Factory + * @static + */ + public static function prependNamespace($namespace, $hints) + { + /** @var \Illuminate\View\Factory $instance */ + return $instance->prependNamespace($namespace, $hints); + } + + /** + * Replace the namespace hints for the given namespace. + * + * @param string $namespace + * @param string|array $hints + * @return \Illuminate\View\Factory + * @static + */ + public static function replaceNamespace($namespace, $hints) + { + /** @var \Illuminate\View\Factory $instance */ + return $instance->replaceNamespace($namespace, $hints); + } + + /** + * Register a valid view extension and its engine. + * + * @param string $extension + * @param string $engine + * @param \Closure|null $resolver + * @return void + * @static + */ + public static function addExtension($extension, $engine, $resolver = null) + { + /** @var \Illuminate\View\Factory $instance */ + $instance->addExtension($extension, $engine, $resolver); + } + + /** + * Flush all of the factory state like sections and stacks. + * + * @return void + * @static + */ + public static function flushState() + { + /** @var \Illuminate\View\Factory $instance */ + $instance->flushState(); + } + + /** + * Flush all of the section contents if done rendering. + * + * @return void + * @static + */ + public static function flushStateIfDoneRendering() + { + /** @var \Illuminate\View\Factory $instance */ + $instance->flushStateIfDoneRendering(); + } + + /** + * Get the extension to engine bindings. + * + * @return array + * @static + */ + public static function getExtensions() + { + /** @var \Illuminate\View\Factory $instance */ + return $instance->getExtensions(); + } + + /** + * Get the engine resolver instance. + * + * @return \Illuminate\View\Engines\EngineResolver + * @static + */ + public static function getEngineResolver() + { + /** @var \Illuminate\View\Factory $instance */ + return $instance->getEngineResolver(); + } + + /** + * Get the view finder instance. + * + * @return \Illuminate\View\ViewFinderInterface + * @static + */ + public static function getFinder() + { + /** @var \Illuminate\View\Factory $instance */ + return $instance->getFinder(); + } + + /** + * Set the view finder instance. + * + * @param \Illuminate\View\ViewFinderInterface $finder + * @return void + * @static + */ + public static function setFinder($finder) + { + /** @var \Illuminate\View\Factory $instance */ + $instance->setFinder($finder); + } + + /** + * Flush the cache of views located by the finder. + * + * @return void + * @static + */ + public static function flushFinderCache() + { + /** @var \Illuminate\View\Factory $instance */ + $instance->flushFinderCache(); + } + + /** + * Get the event dispatcher instance. + * + * @return \Illuminate\Contracts\Events\Dispatcher + * @static + */ + public static function getDispatcher() + { + /** @var \Illuminate\View\Factory $instance */ + return $instance->getDispatcher(); + } + + /** + * Set the event dispatcher instance. + * + * @param \Illuminate\Contracts\Events\Dispatcher $events + * @return void + * @static + */ + public static function setDispatcher($events) + { + /** @var \Illuminate\View\Factory $instance */ + $instance->setDispatcher($events); + } + + /** + * Get the IoC container instance. + * + * @return \Illuminate\Contracts\Container\Container + * @static + */ + public static function getContainer() + { + /** @var \Illuminate\View\Factory $instance */ + return $instance->getContainer(); + } + + /** + * Set the IoC container instance. + * + * @param \Illuminate\Contracts\Container\Container $container + * @return void + * @static + */ + public static function setContainer($container) + { + /** @var \Illuminate\View\Factory $instance */ + $instance->setContainer($container); + } + + /** + * Get an item from the shared data. + * + * @param string $key + * @param mixed $default + * @return mixed + * @static + */ + public static function shared($key, $default = null) + { + /** @var \Illuminate\View\Factory $instance */ + return $instance->shared($key, $default); + } + + /** + * Get all of the shared data for the environment. + * + * @return array + * @static + */ + public static function getShared() + { + /** @var \Illuminate\View\Factory $instance */ + return $instance->getShared(); + } + + /** + * Register a custom macro. + * + * @param string $name + * @param object|callable $macro + * @return void + * @static + */ + public static function macro($name, $macro) + { + \Illuminate\View\Factory::macro($name, $macro); + } + + /** + * Mix another object into the class. + * + * @param object $mixin + * @param bool $replace + * @return void + * @throws \ReflectionException + * @static + */ + public static function mixin($mixin, $replace = true) + { + \Illuminate\View\Factory::mixin($mixin, $replace); + } + + /** + * Checks if macro is registered. + * + * @param string $name + * @return bool + * @static + */ + public static function hasMacro($name) + { + return \Illuminate\View\Factory::hasMacro($name); + } + + /** + * Start a component rendering process. + * + * @param string $name + * @param array $data + * @return void + * @static + */ + public static function startComponent($name, $data = []) + { + /** @var \Illuminate\View\Factory $instance */ + $instance->startComponent($name, $data); + } + + /** + * Get the first view that actually exists from the given list, and start a component. + * + * @param array $names + * @param array $data + * @return void + * @static + */ + public static function startComponentFirst($names, $data = []) + { + /** @var \Illuminate\View\Factory $instance */ + $instance->startComponentFirst($names, $data); + } + + /** + * Render the current component. + * + * @return string + * @static + */ + public static function renderComponent() + { + /** @var \Illuminate\View\Factory $instance */ + return $instance->renderComponent(); + } + + /** + * Start the slot rendering process. + * + * @param string $name + * @param string|null $content + * @return void + * @static + */ + public static function slot($name, $content = null) + { + /** @var \Illuminate\View\Factory $instance */ + $instance->slot($name, $content); + } + + /** + * Save the slot content for rendering. + * + * @return void + * @static + */ + public static function endSlot() + { + /** @var \Illuminate\View\Factory $instance */ + $instance->endSlot(); + } + + /** + * Register a view creator event. + * + * @param array|string $views + * @param \Closure|string $callback + * @return array + * @static + */ + public static function creator($views, $callback) + { + /** @var \Illuminate\View\Factory $instance */ + return $instance->creator($views, $callback); + } + + /** + * Register multiple view composers via an array. + * + * @param array $composers + * @return array + * @static + */ + public static function composers($composers) + { + /** @var \Illuminate\View\Factory $instance */ + return $instance->composers($composers); + } + + /** + * Register a view composer event. + * + * @param array|string $views + * @param \Closure|string $callback + * @return array + * @static + */ + public static function composer($views, $callback) + { + /** @var \Illuminate\View\Factory $instance */ + return $instance->composer($views, $callback); + } + + /** + * Call the composer for a given view. + * + * @param \Illuminate\Contracts\View\View $view + * @return void + * @static + */ + public static function callComposer($view) + { + /** @var \Illuminate\View\Factory $instance */ + $instance->callComposer($view); + } + + /** + * Call the creator for a given view. + * + * @param \Illuminate\Contracts\View\View $view + * @return void + * @static + */ + public static function callCreator($view) + { + /** @var \Illuminate\View\Factory $instance */ + $instance->callCreator($view); + } + + /** + * Start injecting content into a section. + * + * @param string $section + * @param string|null $content + * @return void + * @static + */ + public static function startSection($section, $content = null) + { + /** @var \Illuminate\View\Factory $instance */ + $instance->startSection($section, $content); + } + + /** + * Inject inline content into a section. + * + * @param string $section + * @param string $content + * @return void + * @static + */ + public static function inject($section, $content) + { + /** @var \Illuminate\View\Factory $instance */ + $instance->inject($section, $content); + } + + /** + * Stop injecting content into a section and return its contents. + * + * @return string + * @static + */ + public static function yieldSection() + { + /** @var \Illuminate\View\Factory $instance */ + return $instance->yieldSection(); + } + + /** + * Stop injecting content into a section. + * + * @param bool $overwrite + * @return string + * @throws \InvalidArgumentException + * @static + */ + public static function stopSection($overwrite = false) + { + /** @var \Illuminate\View\Factory $instance */ + return $instance->stopSection($overwrite); + } + + /** + * Stop injecting content into a section and append it. + * + * @return string + * @throws \InvalidArgumentException + * @static + */ + public static function appendSection() + { + /** @var \Illuminate\View\Factory $instance */ + return $instance->appendSection(); + } + + /** + * Get the string contents of a section. + * + * @param string $section + * @param string $default + * @return string + * @static + */ + public static function yieldContent($section, $default = '') + { + /** @var \Illuminate\View\Factory $instance */ + return $instance->yieldContent($section, $default); + } + + /** + * Get the parent placeholder for the current request. + * + * @param string $section + * @return string + * @static + */ + public static function parentPlaceholder($section = '') + { + return \Illuminate\View\Factory::parentPlaceholder($section); + } + + /** + * Check if section exists. + * + * @param string $name + * @return bool + * @static + */ + public static function hasSection($name) + { + /** @var \Illuminate\View\Factory $instance */ + return $instance->hasSection($name); + } + + /** + * Get the contents of a section. + * + * @param string $name + * @param string|null $default + * @return mixed + * @static + */ + public static function getSection($name, $default = null) + { + /** @var \Illuminate\View\Factory $instance */ + return $instance->getSection($name, $default); + } + + /** + * Get the entire array of sections. + * + * @return array + * @static + */ + public static function getSections() + { + /** @var \Illuminate\View\Factory $instance */ + return $instance->getSections(); + } + + /** + * Flush all of the sections. + * + * @return void + * @static + */ + public static function flushSections() + { + /** @var \Illuminate\View\Factory $instance */ + $instance->flushSections(); + } + + /** + * Add new loop to the stack. + * + * @param \Countable|array $data + * @return void + * @static + */ + public static function addLoop($data) + { + /** @var \Illuminate\View\Factory $instance */ + $instance->addLoop($data); + } + + /** + * Increment the top loop's indices. + * + * @return void + * @static + */ + public static function incrementLoopIndices() + { + /** @var \Illuminate\View\Factory $instance */ + $instance->incrementLoopIndices(); + } + + /** + * Pop a loop from the top of the loop stack. + * + * @return void + * @static + */ + public static function popLoop() + { + /** @var \Illuminate\View\Factory $instance */ + $instance->popLoop(); + } + + /** + * Get an instance of the last loop in the stack. + * + * @return \stdClass|null + * @static + */ + public static function getLastLoop() + { + /** @var \Illuminate\View\Factory $instance */ + return $instance->getLastLoop(); + } + + /** + * Get the entire loop stack. + * + * @return array + * @static + */ + public static function getLoopStack() + { + /** @var \Illuminate\View\Factory $instance */ + return $instance->getLoopStack(); + } + + /** + * Start injecting content into a push section. + * + * @param string $section + * @param string $content + * @return void + * @static + */ + public static function startPush($section, $content = '') + { + /** @var \Illuminate\View\Factory $instance */ + $instance->startPush($section, $content); + } + + /** + * Stop injecting content into a push section. + * + * @return string + * @throws \InvalidArgumentException + * @static + */ + public static function stopPush() + { + /** @var \Illuminate\View\Factory $instance */ + return $instance->stopPush(); + } + + /** + * Start prepending content into a push section. + * + * @param string $section + * @param string $content + * @return void + * @static + */ + public static function startPrepend($section, $content = '') + { + /** @var \Illuminate\View\Factory $instance */ + $instance->startPrepend($section, $content); + } + + /** + * Stop prepending content into a push section. + * + * @return string + * @throws \InvalidArgumentException + * @static + */ + public static function stopPrepend() + { + /** @var \Illuminate\View\Factory $instance */ + return $instance->stopPrepend(); + } + + /** + * Get the string contents of a push section. + * + * @param string $section + * @param string $default + * @return string + * @static + */ + public static function yieldPushContent($section, $default = '') + { + /** @var \Illuminate\View\Factory $instance */ + return $instance->yieldPushContent($section, $default); + } + + /** + * Flush all of the stacks. + * + * @return void + * @static + */ + public static function flushStacks() + { + /** @var \Illuminate\View\Factory $instance */ + $instance->flushStacks(); + } + + /** + * Start a translation block. + * + * @param array $replacements + * @return void + * @static + */ + public static function startTranslation($replacements = []) + { + /** @var \Illuminate\View\Factory $instance */ + $instance->startTranslation($replacements); + } + + /** + * Render the current translation. + * + * @return string + * @static + */ + public static function renderTranslation() + { + /** @var \Illuminate\View\Factory $instance */ + return $instance->renderTranslation(); + } + + } + +} + +namespace Illuminate\Support { + + /** + * + * + */ + class Arr { + + } + + /** + * + * + */ + class Str { + + } + +} + +namespace Intervention\Image\Facades { + + /** + * + * + */ + class Image { + + /** + * Overrides configuration settings + * + * @param array $config + * @return self + * @static + */ + public static function configure($config = []) + { + /** @var \Intervention\Image\ImageManager $instance */ + return $instance->configure($config); + } + + /** + * Initiates an Image instance from different input types + * + * @param mixed $data + * @return \Intervention\Image\Image + * @static + */ + public static function make($data) + { + /** @var \Intervention\Image\ImageManager $instance */ + return $instance->make($data); + } + + /** + * Creates an empty image canvas + * + * @param int $width + * @param int $height + * @param mixed $background + * @return \Intervention\Image\Image + * @static + */ + public static function canvas($width, $height, $background = null) + { + /** @var \Intervention\Image\ImageManager $instance */ + return $instance->canvas($width, $height, $background); + } + + /** + * Create new cached image and run callback + * (requires additional package intervention/imagecache) + * + * @param \Closure $callback + * @param int $lifetime + * @param boolean $returnObj + * @return \Image + * @static + */ + public static function cache($callback, $lifetime = null, $returnObj = false) + { + /** @var \Intervention\Image\ImageManager $instance */ + return $instance->cache($callback, $lifetime, $returnObj); + } + + } + +} + +namespace Facade\Ignition\Facades { + + /** + * Class Flare. + * + * @see \Facade\FlareClient\Flare + */ + class Flare { + + /** + * + * + * @static + */ + public static function register($apiKey, $apiSecret = null, $contextDetector = null, $container = null) + { + return \Facade\FlareClient\Flare::register($apiKey, $apiSecret, $contextDetector, $container); + } + + /** + * + * + * @static + */ + public static function getMiddleware() + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->getMiddleware(); + } + + /** + * + * + * @static + */ + public static function registerFlareHandlers() + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->registerFlareHandlers(); + } + + /** + * + * + * @static + */ + public static function registerExceptionHandler() + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->registerExceptionHandler(); + } + + /** + * + * + * @static + */ + public static function registerErrorHandler() + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->registerErrorHandler(); + } + + /** + * + * + * @static + */ + public static function registerMiddleware($callable) + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->registerMiddleware($callable); + } + + /** + * + * + * @static + */ + public static function getMiddlewares() + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->getMiddlewares(); + } + + /** + * + * + * @static + */ + public static function glow($name, $messageLevel = 'info', $metaData = []) + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->glow($name, $messageLevel, $metaData); + } + + /** + * + * + * @static + */ + public static function handleException($throwable) + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->handleException($throwable); + } + + /** + * + * + * @static + */ + public static function handleError($code, $message, $file = '', $line = 0) + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->handleError($code, $message, $file, $line); + } + + /** + * + * + * @static + */ + public static function applicationPath($applicationPath) + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->applicationPath($applicationPath); + } + + /** + * + * + * @static + */ + public static function report($throwable, $callback = null) + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->report($throwable, $callback); + } + + /** + * + * + * @static + */ + public static function reportMessage($message, $logLevel, $callback = null) + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->reportMessage($message, $logLevel, $callback); + } + + /** + * + * + * @static + */ + public static function sendTestReport($throwable) + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->sendTestReport($throwable); + } + + /** + * + * + * @static + */ + public static function reset() + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->reset(); + } + + /** + * + * + * @static + */ + public static function anonymizeIp() + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->anonymizeIp(); + } + + /** + * + * + * @static + */ + public static function createReport($throwable) + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->createReport($throwable); + } + + /** + * + * + * @static + */ + public static function createReportFromMessage($message, $logLevel) + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->createReportFromMessage($message, $logLevel); + } + + /** + * + * + * @static + */ + public static function stage($stage) + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->stage($stage); + } + + /** + * + * + * @static + */ + public static function messageLevel($messageLevel) + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->messageLevel($messageLevel); + } + + /** + * + * + * @static + */ + public static function getGroup($groupName = 'context', $default = []) + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->getGroup($groupName, $default); + } + + /** + * + * + * @static + */ + public static function context($key, $value) + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->context($key, $value); + } + + /** + * + * + * @static + */ + public static function group($groupName, $properties) + { + /** @var \Facade\FlareClient\Flare $instance */ + return $instance->group($groupName, $properties); + } + + } + +} + + +namespace { + + class App extends \Illuminate\Support\Facades\App {} + + class Arr extends \Illuminate\Support\Arr {} + + class Artisan extends \Illuminate\Support\Facades\Artisan {} + + class Auth extends \Illuminate\Support\Facades\Auth {} + + class Blade extends \Illuminate\Support\Facades\Blade {} + + class Broadcast extends \Illuminate\Support\Facades\Broadcast {} + + class Bus extends \Illuminate\Support\Facades\Bus {} + + class Cache extends \Illuminate\Support\Facades\Cache {} + + class Config extends \Illuminate\Support\Facades\Config {} + + class Cookie extends \Illuminate\Support\Facades\Cookie {} + + class Crypt extends \Illuminate\Support\Facades\Crypt {} + + class DB extends \Illuminate\Support\Facades\DB {} + + class Eloquent extends \Illuminate\Database\Eloquent\Model { + /** + * Create and return an un-saved model instance. + * + * @param array $attributes + * @return \Illuminate\Database\Eloquent\Model|static + * @static + */ + public static function make($attributes = []) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->make($attributes); + } + + /** + * Register a new global scope. + * + * @param string $identifier + * @param \Illuminate\Database\Eloquent\Scope|\Closure $scope + * @return \Illuminate\Database\Eloquent\Builder + * @static + */ + public static function withGlobalScope($identifier, $scope) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->withGlobalScope($identifier, $scope); + } + + /** + * Remove a registered global scope. + * + * @param \Illuminate\Database\Eloquent\Scope|string $scope + * @return \Illuminate\Database\Eloquent\Builder + * @static + */ + public static function withoutGlobalScope($scope) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->withoutGlobalScope($scope); + } + + /** + * Remove all or passed registered global scopes. + * + * @param array|null $scopes + * @return \Illuminate\Database\Eloquent\Builder + * @static + */ + public static function withoutGlobalScopes($scopes = null) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->withoutGlobalScopes($scopes); + } + + /** + * Get an array of global scopes that were removed from the query. + * + * @return array + * @static + */ + public static function removedScopes() + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->removedScopes(); + } + + /** + * Add a where clause on the primary key to the query. + * + * @param mixed $id + * @return \Illuminate\Database\Eloquent\Builder + * @static + */ + public static function whereKey($id) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->whereKey($id); + } + + /** + * Add a where clause on the primary key to the query. + * + * @param mixed $id + * @return \Illuminate\Database\Eloquent\Builder + * @static + */ + public static function whereKeyNot($id) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->whereKeyNot($id); + } + + /** + * Add a basic where clause to the query. + * + * @param \Closure|string|array $column + * @param mixed $operator + * @param mixed $value + * @param string $boolean + * @return \Illuminate\Database\Eloquent\Builder + * @static + */ + public static function where($column, $operator = null, $value = null, $boolean = 'and') + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->where($column, $operator, $value, $boolean); + } + + /** + * Add a basic where clause to the query, and return the first result. + * + * @param \Closure|string|array $column + * @param mixed $operator + * @param mixed $value + * @param string $boolean + * @return \Illuminate\Database\Eloquent\Model|static + * @static + */ + public static function firstWhere($column, $operator = null, $value = null, $boolean = 'and') + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->firstWhere($column, $operator, $value, $boolean); + } + + /** + * Add an "or where" clause to the query. + * + * @param \Closure|array|string $column + * @param mixed $operator + * @param mixed $value + * @return \Illuminate\Database\Eloquent\Builder|static + * @static + */ + public static function orWhere($column, $operator = null, $value = null) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->orWhere($column, $operator, $value); + } + + /** + * Add an "order by" clause for a timestamp to the query. + * + * @param string $column + * @return \Illuminate\Database\Eloquent\Builder + * @static + */ + public static function latest($column = null) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->latest($column); + } + + /** + * Add an "order by" clause for a timestamp to the query. + * + * @param string $column + * @return \Illuminate\Database\Eloquent\Builder + * @static + */ + public static function oldest($column = null) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->oldest($column); + } + + /** + * Create a collection of models from plain arrays. + * + * @param array $items + * @return \Illuminate\Database\Eloquent\Collection + * @static + */ + public static function hydrate($items) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->hydrate($items); + } + + /** + * Create a collection of models from a raw query. + * + * @param string $query + * @param array $bindings + * @return \Illuminate\Database\Eloquent\Collection + * @static + */ + public static function fromQuery($query, $bindings = []) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->fromQuery($query, $bindings); + } + + /** + * Find a model by its primary key. + * + * @param mixed $id + * @param array $columns + * @return \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection|static[]|static|null + * @static + */ + public static function find($id, $columns = []) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->find($id, $columns); + } + + /** + * Find multiple models by their primary keys. + * + * @param \Illuminate\Contracts\Support\Arrayable|array $ids + * @param array $columns + * @return \Illuminate\Database\Eloquent\Collection + * @static + */ + public static function findMany($ids, $columns = []) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->findMany($ids, $columns); + } + + /** + * Find a model by its primary key or throw an exception. + * + * @param mixed $id + * @param array $columns + * @return \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Collection|static|static[] + * @throws \Illuminate\Database\Eloquent\ModelNotFoundException + * @static + */ + public static function findOrFail($id, $columns = []) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->findOrFail($id, $columns); + } + + /** + * Find a model by its primary key or return fresh model instance. + * + * @param mixed $id + * @param array $columns + * @return \Illuminate\Database\Eloquent\Model|static + * @static + */ + public static function findOrNew($id, $columns = []) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->findOrNew($id, $columns); + } + + /** + * Get the first record matching the attributes or instantiate it. + * + * @param array $attributes + * @param array $values + * @return \Illuminate\Database\Eloquent\Model|static + * @static + */ + public static function firstOrNew($attributes, $values = []) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->firstOrNew($attributes, $values); + } + + /** + * Get the first record matching the attributes or create it. + * + * @param array $attributes + * @param array $values + * @return \Illuminate\Database\Eloquent\Model|static + * @static + */ + public static function firstOrCreate($attributes, $values = []) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->firstOrCreate($attributes, $values); + } + + /** + * Create or update a record matching the attributes, and fill it with values. + * + * @param array $attributes + * @param array $values + * @return \Illuminate\Database\Eloquent\Model|static + * @static + */ + public static function updateOrCreate($attributes, $values = []) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->updateOrCreate($attributes, $values); + } + + /** + * Execute the query and get the first result or throw an exception. + * + * @param array $columns + * @return \Illuminate\Database\Eloquent\Model|static + * @throws \Illuminate\Database\Eloquent\ModelNotFoundException + * @static + */ + public static function firstOrFail($columns = []) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->firstOrFail($columns); + } + + /** + * Execute the query and get the first result or call a callback. + * + * @param \Closure|array $columns + * @param \Closure|null $callback + * @return \Illuminate\Database\Eloquent\Model|static|mixed + * @static + */ + public static function firstOr($columns = [], $callback = null) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->firstOr($columns, $callback); + } + + /** + * Get a single column's value from the first result of a query. + * + * @param string $column + * @return mixed + * @static + */ + public static function value($column) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->value($column); + } + + /** + * Execute the query as a "select" statement. + * + * @param array|string $columns + * @return \Illuminate\Database\Eloquent\Collection|static[] + * @static + */ + public static function get($columns = []) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->get($columns); + } + + /** + * Get the hydrated models without eager loading. + * + * @param array|string $columns + * @return \Illuminate\Database\Eloquent\Model[]|static[] + * @static + */ + public static function getModels($columns = []) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->getModels($columns); + } + + /** + * Eager load the relationships for the models. + * + * @param array $models + * @return array + * @static + */ + public static function eagerLoadRelations($models) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->eagerLoadRelations($models); + } + + /** + * Get a lazy collection for the given query. + * + * @return \Illuminate\Support\LazyCollection + * @static + */ + public static function cursor() + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->cursor(); + } + + /** + * Get an array with the values of a given column. + * + * @param string $column + * @param string|null $key + * @return \Illuminate\Support\Collection + * @static + */ + public static function pluck($column, $key = null) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->pluck($column, $key); + } + + /** + * Paginate the given query. + * + * @param int|null $perPage + * @param array $columns + * @param string $pageName + * @param int|null $page + * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator + * @throws \InvalidArgumentException + * @static + */ + public static function paginate($perPage = null, $columns = [], $pageName = 'page', $page = null) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->paginate($perPage, $columns, $pageName, $page); + } + + /** + * Paginate the given query into a simple paginator. + * + * @param int|null $perPage + * @param array $columns + * @param string $pageName + * @param int|null $page + * @return \Illuminate\Contracts\Pagination\Paginator + * @static + */ + public static function simplePaginate($perPage = null, $columns = [], $pageName = 'page', $page = null) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->simplePaginate($perPage, $columns, $pageName, $page); + } + + /** + * Save a new model and return the instance. + * + * @param array $attributes + * @return \Illuminate\Database\Eloquent\Model|$this + * @static + */ + public static function create($attributes = []) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->create($attributes); + } + + /** + * Save a new model and return the instance. Allow mass-assignment. + * + * @param array $attributes + * @return \Illuminate\Database\Eloquent\Model|$this + * @static + */ + public static function forceCreate($attributes) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->forceCreate($attributes); + } + + /** + * Register a replacement for the default delete function. + * + * @param \Closure $callback + * @return void + * @static + */ + public static function onDelete($callback) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + $instance->onDelete($callback); + } + + /** + * Call the given local model scopes. + * + * @param array|string $scopes + * @return static|mixed + * @static + */ + public static function scopes($scopes) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->scopes($scopes); + } + + /** + * Apply the scopes to the Eloquent builder instance and return it. + * + * @return static + * @static + */ + public static function applyScopes() + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->applyScopes(); + } + + /** + * Prevent the specified relations from being eager loaded. + * + * @param mixed $relations + * @return \Illuminate\Database\Eloquent\Builder + * @static + */ + public static function without($relations) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->without($relations); + } + + /** + * Create a new instance of the model being queried. + * + * @param array $attributes + * @return \Illuminate\Database\Eloquent\Model|static + * @static + */ + public static function newModelInstance($attributes = []) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->newModelInstance($attributes); + } + + /** + * Get the underlying query builder instance. + * + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function getQuery() + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->getQuery(); + } + + /** + * Set the underlying query builder instance. + * + * @param \Illuminate\Database\Query\Builder $query + * @return \Illuminate\Database\Eloquent\Builder + * @static + */ + public static function setQuery($query) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->setQuery($query); + } + + /** + * Get a base query builder instance. + * + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function toBase() + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->toBase(); + } + + /** + * Get the relationships being eagerly loaded. + * + * @return array + * @static + */ + public static function getEagerLoads() + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->getEagerLoads(); + } + + /** + * Set the relationships being eagerly loaded. + * + * @param array $eagerLoad + * @return \Illuminate\Database\Eloquent\Builder + * @static + */ + public static function setEagerLoads($eagerLoad) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->setEagerLoads($eagerLoad); + } + + /** + * Get the model instance being queried. + * + * @return \Illuminate\Database\Eloquent\Model|static + * @static + */ + public static function getModel() + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->getModel(); + } + + /** + * Set a model instance for the model being queried. + * + * @param \Illuminate\Database\Eloquent\Model $model + * @return \Illuminate\Database\Eloquent\Builder + * @static + */ + public static function setModel($model) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->setModel($model); + } + + /** + * Get the given macro by name. + * + * @param string $name + * @return \Closure + * @static + */ + public static function getMacro($name) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->getMacro($name); + } + + /** + * Checks if a macro is registered. + * + * @param string $name + * @return bool + * @static + */ + public static function hasMacro($name) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->hasMacro($name); + } + + /** + * Get the given global macro by name. + * + * @param string $name + * @return \Closure + * @static + */ + public static function getGlobalMacro($name) + { + return \Illuminate\Database\Eloquent\Builder::getGlobalMacro($name); + } + + /** + * Checks if a global macro is registered. + * + * @param string $name + * @return bool + * @static + */ + public static function hasGlobalMacro($name) + { + return \Illuminate\Database\Eloquent\Builder::hasGlobalMacro($name); + } + + /** + * Chunk the results of the query. + * + * @param int $count + * @param callable $callback + * @return bool + * @static + */ + public static function chunk($count, $callback) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->chunk($count, $callback); + } + + /** + * Execute a callback over each item while chunking. + * + * @param callable $callback + * @param int $count + * @return bool + * @static + */ + public static function each($callback, $count = 1000) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->each($callback, $count); + } + + /** + * Chunk the results of a query by comparing IDs. + * + * @param int $count + * @param callable $callback + * @param string|null $column + * @param string|null $alias + * @return bool + * @static + */ + public static function chunkById($count, $callback, $column = null, $alias = null) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->chunkById($count, $callback, $column, $alias); + } + + /** + * Execute a callback over each item while chunking by id. + * + * @param callable $callback + * @param int $count + * @param string|null $column + * @param string|null $alias + * @return bool + * @static + */ + public static function eachById($callback, $count = 1000, $column = null, $alias = null) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->eachById($callback, $count, $column, $alias); + } + + /** + * Execute the query and get the first result. + * + * @param array|string $columns + * @return \Illuminate\Database\Eloquent\Model|object|static|null + * @static + */ + public static function first($columns = []) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->first($columns); + } + + /** + * Apply the callback's query changes if the given "value" is true. + * + * @param mixed $value + * @param callable $callback + * @param callable|null $default + * @return mixed|$this + * @static + */ + public static function when($value, $callback, $default = null) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->when($value, $callback, $default); + } + + /** + * Pass the query to a given callback. + * + * @param callable $callback + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function tap($callback) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->tap($callback); + } + + /** + * Apply the callback's query changes if the given "value" is false. + * + * @param mixed $value + * @param callable $callback + * @param callable|null $default + * @return mixed|$this + * @static + */ + public static function unless($value, $callback, $default = null) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->unless($value, $callback, $default); + } + + /** + * Add a relationship count / exists condition to the query. + * + * @param \Illuminate\Database\Eloquent\Relations\Relation|string $relation + * @param string $operator + * @param int $count + * @param string $boolean + * @param \Closure|null $callback + * @return \Illuminate\Database\Eloquent\Builder|static + * @throws \RuntimeException + * @static + */ + public static function has($relation, $operator = '>=', $count = 1, $boolean = 'and', $callback = null) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->has($relation, $operator, $count, $boolean, $callback); + } + + /** + * Add a relationship count / exists condition to the query with an "or". + * + * @param string $relation + * @param string $operator + * @param int $count + * @return \Illuminate\Database\Eloquent\Builder|static + * @static + */ + public static function orHas($relation, $operator = '>=', $count = 1) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->orHas($relation, $operator, $count); + } + + /** + * Add a relationship count / exists condition to the query. + * + * @param string $relation + * @param string $boolean + * @param \Closure|null $callback + * @return \Illuminate\Database\Eloquent\Builder|static + * @static + */ + public static function doesntHave($relation, $boolean = 'and', $callback = null) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->doesntHave($relation, $boolean, $callback); + } + + /** + * Add a relationship count / exists condition to the query with an "or". + * + * @param string $relation + * @return \Illuminate\Database\Eloquent\Builder|static + * @static + */ + public static function orDoesntHave($relation) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->orDoesntHave($relation); + } + + /** + * Add a relationship count / exists condition to the query with where clauses. + * + * @param string $relation + * @param \Closure|null $callback + * @param string $operator + * @param int $count + * @return \Illuminate\Database\Eloquent\Builder|static + * @static + */ + public static function whereHas($relation, $callback = null, $operator = '>=', $count = 1) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->whereHas($relation, $callback, $operator, $count); + } + + /** + * Add a relationship count / exists condition to the query with where clauses and an "or". + * + * @param string $relation + * @param \Closure $callback + * @param string $operator + * @param int $count + * @return \Illuminate\Database\Eloquent\Builder|static + * @static + */ + public static function orWhereHas($relation, $callback = null, $operator = '>=', $count = 1) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->orWhereHas($relation, $callback, $operator, $count); + } + + /** + * Add a relationship count / exists condition to the query with where clauses. + * + * @param string $relation + * @param \Closure|null $callback + * @return \Illuminate\Database\Eloquent\Builder|static + * @static + */ + public static function whereDoesntHave($relation, $callback = null) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->whereDoesntHave($relation, $callback); + } + + /** + * Add a relationship count / exists condition to the query with where clauses and an "or". + * + * @param string $relation + * @param \Closure $callback + * @return \Illuminate\Database\Eloquent\Builder|static + * @static + */ + public static function orWhereDoesntHave($relation, $callback = null) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->orWhereDoesntHave($relation, $callback); + } + + /** + * Add a polymorphic relationship count / exists condition to the query. + * + * @param string $relation + * @param string|array $types + * @param string $operator + * @param int $count + * @param string $boolean + * @param \Closure|null $callback + * @return \Illuminate\Database\Eloquent\Builder|static + * @static + */ + public static function hasMorph($relation, $types, $operator = '>=', $count = 1, $boolean = 'and', $callback = null) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->hasMorph($relation, $types, $operator, $count, $boolean, $callback); + } + + /** + * Add a polymorphic relationship count / exists condition to the query with an "or". + * + * @param string $relation + * @param string|array $types + * @param string $operator + * @param int $count + * @return \Illuminate\Database\Eloquent\Builder|static + * @static + */ + public static function orHasMorph($relation, $types, $operator = '>=', $count = 1) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->orHasMorph($relation, $types, $operator, $count); + } + + /** + * Add a polymorphic relationship count / exists condition to the query. + * + * @param string $relation + * @param string|array $types + * @param string $boolean + * @param \Closure|null $callback + * @return \Illuminate\Database\Eloquent\Builder|static + * @static + */ + public static function doesntHaveMorph($relation, $types, $boolean = 'and', $callback = null) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->doesntHaveMorph($relation, $types, $boolean, $callback); + } + + /** + * Add a polymorphic relationship count / exists condition to the query with an "or". + * + * @param string $relation + * @param string|array $types + * @return \Illuminate\Database\Eloquent\Builder|static + * @static + */ + public static function orDoesntHaveMorph($relation, $types) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->orDoesntHaveMorph($relation, $types); + } + + /** + * Add a polymorphic relationship count / exists condition to the query with where clauses. + * + * @param string $relation + * @param string|array $types + * @param \Closure|null $callback + * @param string $operator + * @param int $count + * @return \Illuminate\Database\Eloquent\Builder|static + * @static + */ + public static function whereHasMorph($relation, $types, $callback = null, $operator = '>=', $count = 1) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->whereHasMorph($relation, $types, $callback, $operator, $count); + } + + /** + * Add a polymorphic relationship count / exists condition to the query with where clauses and an "or". + * + * @param string $relation + * @param string|array $types + * @param \Closure $callback + * @param string $operator + * @param int $count + * @return \Illuminate\Database\Eloquent\Builder|static + * @static + */ + public static function orWhereHasMorph($relation, $types, $callback = null, $operator = '>=', $count = 1) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->orWhereHasMorph($relation, $types, $callback, $operator, $count); + } + + /** + * Add a polymorphic relationship count / exists condition to the query with where clauses. + * + * @param string $relation + * @param string|array $types + * @param \Closure|null $callback + * @return \Illuminate\Database\Eloquent\Builder|static + * @static + */ + public static function whereDoesntHaveMorph($relation, $types, $callback = null) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->whereDoesntHaveMorph($relation, $types, $callback); + } + + /** + * Add a polymorphic relationship count / exists condition to the query with where clauses and an "or". + * + * @param string $relation + * @param string|array $types + * @param \Closure $callback + * @return \Illuminate\Database\Eloquent\Builder|static + * @static + */ + public static function orWhereDoesntHaveMorph($relation, $types, $callback = null) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->orWhereDoesntHaveMorph($relation, $types, $callback); + } + + /** + * Add subselect queries to count the relations. + * + * @param mixed $relations + * @return \Illuminate\Database\Eloquent\Builder + * @static + */ + public static function withCount($relations) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->withCount($relations); + } + + /** + * Merge the where constraints from another query to the current query. + * + * @param \Illuminate\Database\Eloquent\Builder $from + * @return \Illuminate\Database\Eloquent\Builder|static + * @static + */ + public static function mergeConstraintsFrom($from) + { + /** @var \Illuminate\Database\Eloquent\Builder $instance */ + return $instance->mergeConstraintsFrom($from); + } + + /** + * Set the columns to be selected. + * + * @param array|mixed $columns + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function select($columns = []) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->select($columns); + } + + /** + * Add a subselect expression to the query. + * + * @param \Closure|\Illuminate\Database\Query\Builder|string $query + * @param string $as + * @return \Illuminate\Database\Query\Builder|static + * @throws \InvalidArgumentException + * @static + */ + public static function selectSub($query, $as) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->selectSub($query, $as); + } + + /** + * Add a new "raw" select expression to the query. + * + * @param string $expression + * @param array $bindings + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function selectRaw($expression, $bindings = []) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->selectRaw($expression, $bindings); + } + + /** + * Makes "from" fetch from a subquery. + * + * @param \Closure|\Illuminate\Database\Query\Builder|string $query + * @param string $as + * @return \Illuminate\Database\Query\Builder|static + * @throws \InvalidArgumentException + * @static + */ + public static function fromSub($query, $as) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->fromSub($query, $as); + } + + /** + * Add a raw from clause to the query. + * + * @param string $expression + * @param mixed $bindings + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function fromRaw($expression, $bindings = []) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->fromRaw($expression, $bindings); + } + + /** + * Add a new select column to the query. + * + * @param array|mixed $column + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function addSelect($column) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->addSelect($column); + } + + /** + * Force the query to only return distinct results. + * + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function distinct() + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->distinct(); + } + + /** + * Set the table which the query is targeting. + * + * @param \Closure|\Illuminate\Database\Query\Builder|string $table + * @param string|null $as + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function from($table, $as = null) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->from($table, $as); + } + + /** + * Add a join clause to the query. + * + * @param string $table + * @param \Closure|string $first + * @param string|null $operator + * @param string|null $second + * @param string $type + * @param bool $where + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function join($table, $first, $operator = null, $second = null, $type = 'inner', $where = false) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->join($table, $first, $operator, $second, $type, $where); + } + + /** + * Add a "join where" clause to the query. + * + * @param string $table + * @param \Closure|string $first + * @param string $operator + * @param string $second + * @param string $type + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function joinWhere($table, $first, $operator, $second, $type = 'inner') + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->joinWhere($table, $first, $operator, $second, $type); + } + + /** + * Add a subquery join clause to the query. + * + * @param \Closure|\Illuminate\Database\Query\Builder|string $query + * @param string $as + * @param \Closure|string $first + * @param string|null $operator + * @param string|null $second + * @param string $type + * @param bool $where + * @return \Illuminate\Database\Query\Builder|static + * @throws \InvalidArgumentException + * @static + */ + public static function joinSub($query, $as, $first, $operator = null, $second = null, $type = 'inner', $where = false) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->joinSub($query, $as, $first, $operator, $second, $type, $where); + } + + /** + * Add a left join to the query. + * + * @param string $table + * @param \Closure|string $first + * @param string|null $operator + * @param string|null $second + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function leftJoin($table, $first, $operator = null, $second = null) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->leftJoin($table, $first, $operator, $second); + } + + /** + * Add a "join where" clause to the query. + * + * @param string $table + * @param \Closure|string $first + * @param string $operator + * @param string $second + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function leftJoinWhere($table, $first, $operator, $second) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->leftJoinWhere($table, $first, $operator, $second); + } + + /** + * Add a subquery left join to the query. + * + * @param \Closure|\Illuminate\Database\Query\Builder|string $query + * @param string $as + * @param \Closure|string $first + * @param string|null $operator + * @param string|null $second + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function leftJoinSub($query, $as, $first, $operator = null, $second = null) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->leftJoinSub($query, $as, $first, $operator, $second); + } + + /** + * Add a right join to the query. + * + * @param string $table + * @param \Closure|string $first + * @param string|null $operator + * @param string|null $second + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function rightJoin($table, $first, $operator = null, $second = null) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->rightJoin($table, $first, $operator, $second); + } + + /** + * Add a "right join where" clause to the query. + * + * @param string $table + * @param \Closure|string $first + * @param string $operator + * @param string $second + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function rightJoinWhere($table, $first, $operator, $second) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->rightJoinWhere($table, $first, $operator, $second); + } + + /** + * Add a subquery right join to the query. + * + * @param \Closure|\Illuminate\Database\Query\Builder|string $query + * @param string $as + * @param \Closure|string $first + * @param string|null $operator + * @param string|null $second + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function rightJoinSub($query, $as, $first, $operator = null, $second = null) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->rightJoinSub($query, $as, $first, $operator, $second); + } + + /** + * Add a "cross join" clause to the query. + * + * @param string $table + * @param \Closure|string|null $first + * @param string|null $operator + * @param string|null $second + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function crossJoin($table, $first = null, $operator = null, $second = null) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->crossJoin($table, $first, $operator, $second); + } + + /** + * Merge an array of where clauses and bindings. + * + * @param array $wheres + * @param array $bindings + * @return void + * @static + */ + public static function mergeWheres($wheres, $bindings) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + $instance->mergeWheres($wheres, $bindings); + } + + /** + * Prepare the value and operator for a where clause. + * + * @param string $value + * @param string $operator + * @param bool $useDefault + * @return array + * @throws \InvalidArgumentException + * @static + */ + public static function prepareValueAndOperator($value, $operator, $useDefault = false) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->prepareValueAndOperator($value, $operator, $useDefault); + } + + /** + * Add a "where" clause comparing two columns to the query. + * + * @param string|array $first + * @param string|null $operator + * @param string|null $second + * @param string|null $boolean + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function whereColumn($first, $operator = null, $second = null, $boolean = 'and') + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->whereColumn($first, $operator, $second, $boolean); + } + + /** + * Add an "or where" clause comparing two columns to the query. + * + * @param string|array $first + * @param string|null $operator + * @param string|null $second + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function orWhereColumn($first, $operator = null, $second = null) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->orWhereColumn($first, $operator, $second); + } + + /** + * Add a raw where clause to the query. + * + * @param string $sql + * @param mixed $bindings + * @param string $boolean + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function whereRaw($sql, $bindings = [], $boolean = 'and') + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->whereRaw($sql, $bindings, $boolean); + } + + /** + * Add a raw or where clause to the query. + * + * @param string $sql + * @param mixed $bindings + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function orWhereRaw($sql, $bindings = []) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->orWhereRaw($sql, $bindings); + } + + /** + * Add a "where in" clause to the query. + * + * @param string $column + * @param mixed $values + * @param string $boolean + * @param bool $not + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function whereIn($column, $values, $boolean = 'and', $not = false) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->whereIn($column, $values, $boolean, $not); + } + + /** + * Add an "or where in" clause to the query. + * + * @param string $column + * @param mixed $values + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function orWhereIn($column, $values) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->orWhereIn($column, $values); + } + + /** + * Add a "where not in" clause to the query. + * + * @param string $column + * @param mixed $values + * @param string $boolean + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function whereNotIn($column, $values, $boolean = 'and') + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->whereNotIn($column, $values, $boolean); + } + + /** + * Add an "or where not in" clause to the query. + * + * @param string $column + * @param mixed $values + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function orWhereNotIn($column, $values) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->orWhereNotIn($column, $values); + } + + /** + * Add a "where in raw" clause for integer values to the query. + * + * @param string $column + * @param \Illuminate\Contracts\Support\Arrayable|array $values + * @param string $boolean + * @param bool $not + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function whereIntegerInRaw($column, $values, $boolean = 'and', $not = false) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->whereIntegerInRaw($column, $values, $boolean, $not); + } + + /** + * Add a "where not in raw" clause for integer values to the query. + * + * @param string $column + * @param \Illuminate\Contracts\Support\Arrayable|array $values + * @param string $boolean + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function whereIntegerNotInRaw($column, $values, $boolean = 'and') + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->whereIntegerNotInRaw($column, $values, $boolean); + } + + /** + * Add a "where null" clause to the query. + * + * @param string|array $columns + * @param string $boolean + * @param bool $not + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function whereNull($columns, $boolean = 'and', $not = false) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->whereNull($columns, $boolean, $not); + } + + /** + * Add an "or where null" clause to the query. + * + * @param string $column + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function orWhereNull($column) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->orWhereNull($column); + } + + /** + * Add a "where not null" clause to the query. + * + * @param string|array $columns + * @param string $boolean + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function whereNotNull($columns, $boolean = 'and') + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->whereNotNull($columns, $boolean); + } + + /** + * Add a where between statement to the query. + * + * @param string $column + * @param array $values + * @param string $boolean + * @param bool $not + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function whereBetween($column, $values, $boolean = 'and', $not = false) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->whereBetween($column, $values, $boolean, $not); + } + + /** + * Add an or where between statement to the query. + * + * @param string $column + * @param array $values + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function orWhereBetween($column, $values) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->orWhereBetween($column, $values); + } + + /** + * Add a where not between statement to the query. + * + * @param string $column + * @param array $values + * @param string $boolean + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function whereNotBetween($column, $values, $boolean = 'and') + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->whereNotBetween($column, $values, $boolean); + } + + /** + * Add an or where not between statement to the query. + * + * @param string $column + * @param array $values + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function orWhereNotBetween($column, $values) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->orWhereNotBetween($column, $values); + } + + /** + * Add an "or where not null" clause to the query. + * + * @param string $column + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function orWhereNotNull($column) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->orWhereNotNull($column); + } + + /** + * Add a "where date" statement to the query. + * + * @param string $column + * @param string $operator + * @param \DateTimeInterface|string|null $value + * @param string $boolean + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function whereDate($column, $operator, $value = null, $boolean = 'and') + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->whereDate($column, $operator, $value, $boolean); + } + + /** + * Add an "or where date" statement to the query. + * + * @param string $column + * @param string $operator + * @param \DateTimeInterface|string|null $value + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function orWhereDate($column, $operator, $value = null) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->orWhereDate($column, $operator, $value); + } + + /** + * Add a "where time" statement to the query. + * + * @param string $column + * @param string $operator + * @param \DateTimeInterface|string|null $value + * @param string $boolean + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function whereTime($column, $operator, $value = null, $boolean = 'and') + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->whereTime($column, $operator, $value, $boolean); + } + + /** + * Add an "or where time" statement to the query. + * + * @param string $column + * @param string $operator + * @param \DateTimeInterface|string|null $value + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function orWhereTime($column, $operator, $value = null) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->orWhereTime($column, $operator, $value); + } + + /** + * Add a "where day" statement to the query. + * + * @param string $column + * @param string $operator + * @param \DateTimeInterface|string|null $value + * @param string $boolean + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function whereDay($column, $operator, $value = null, $boolean = 'and') + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->whereDay($column, $operator, $value, $boolean); + } + + /** + * Add an "or where day" statement to the query. + * + * @param string $column + * @param string $operator + * @param \DateTimeInterface|string|null $value + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function orWhereDay($column, $operator, $value = null) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->orWhereDay($column, $operator, $value); + } + + /** + * Add a "where month" statement to the query. + * + * @param string $column + * @param string $operator + * @param \DateTimeInterface|string|null $value + * @param string $boolean + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function whereMonth($column, $operator, $value = null, $boolean = 'and') + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->whereMonth($column, $operator, $value, $boolean); + } + + /** + * Add an "or where month" statement to the query. + * + * @param string $column + * @param string $operator + * @param \DateTimeInterface|string|null $value + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function orWhereMonth($column, $operator, $value = null) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->orWhereMonth($column, $operator, $value); + } + + /** + * Add a "where year" statement to the query. + * + * @param string $column + * @param string $operator + * @param \DateTimeInterface|string|int|null $value + * @param string $boolean + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function whereYear($column, $operator, $value = null, $boolean = 'and') + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->whereYear($column, $operator, $value, $boolean); + } + + /** + * Add an "or where year" statement to the query. + * + * @param string $column + * @param string $operator + * @param \DateTimeInterface|string|int|null $value + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function orWhereYear($column, $operator, $value = null) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->orWhereYear($column, $operator, $value); + } + + /** + * Add a nested where statement to the query. + * + * @param \Closure $callback + * @param string $boolean + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function whereNested($callback, $boolean = 'and') + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->whereNested($callback, $boolean); + } + + /** + * Create a new query instance for nested where condition. + * + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function forNestedWhere() + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->forNestedWhere(); + } + + /** + * Add another query builder as a nested where to the query builder. + * + * @param \Illuminate\Database\Query\Builder|static $query + * @param string $boolean + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function addNestedWhereQuery($query, $boolean = 'and') + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->addNestedWhereQuery($query, $boolean); + } + + /** + * Add an exists clause to the query. + * + * @param \Closure $callback + * @param string $boolean + * @param bool $not + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function whereExists($callback, $boolean = 'and', $not = false) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->whereExists($callback, $boolean, $not); + } + + /** + * Add an or exists clause to the query. + * + * @param \Closure $callback + * @param bool $not + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function orWhereExists($callback, $not = false) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->orWhereExists($callback, $not); + } + + /** + * Add a where not exists clause to the query. + * + * @param \Closure $callback + * @param string $boolean + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function whereNotExists($callback, $boolean = 'and') + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->whereNotExists($callback, $boolean); + } + + /** + * Add a where not exists clause to the query. + * + * @param \Closure $callback + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function orWhereNotExists($callback) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->orWhereNotExists($callback); + } + + /** + * Add an exists clause to the query. + * + * @param \Illuminate\Database\Query\Builder $query + * @param string $boolean + * @param bool $not + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function addWhereExistsQuery($query, $boolean = 'and', $not = false) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->addWhereExistsQuery($query, $boolean, $not); + } + + /** + * Adds a where condition using row values. + * + * @param array $columns + * @param string $operator + * @param array $values + * @param string $boolean + * @return \Illuminate\Database\Query\Builder + * @throws \InvalidArgumentException + * @static + */ + public static function whereRowValues($columns, $operator, $values, $boolean = 'and') + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->whereRowValues($columns, $operator, $values, $boolean); + } + + /** + * Adds a or where condition using row values. + * + * @param array $columns + * @param string $operator + * @param array $values + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function orWhereRowValues($columns, $operator, $values) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->orWhereRowValues($columns, $operator, $values); + } + + /** + * Add a "where JSON contains" clause to the query. + * + * @param string $column + * @param mixed $value + * @param string $boolean + * @param bool $not + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function whereJsonContains($column, $value, $boolean = 'and', $not = false) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->whereJsonContains($column, $value, $boolean, $not); + } + + /** + * Add a "or where JSON contains" clause to the query. + * + * @param string $column + * @param mixed $value + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function orWhereJsonContains($column, $value) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->orWhereJsonContains($column, $value); + } + + /** + * Add a "where JSON not contains" clause to the query. + * + * @param string $column + * @param mixed $value + * @param string $boolean + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function whereJsonDoesntContain($column, $value, $boolean = 'and') + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->whereJsonDoesntContain($column, $value, $boolean); + } + + /** + * Add a "or where JSON not contains" clause to the query. + * + * @param string $column + * @param mixed $value + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function orWhereJsonDoesntContain($column, $value) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->orWhereJsonDoesntContain($column, $value); + } + + /** + * Add a "where JSON length" clause to the query. + * + * @param string $column + * @param mixed $operator + * @param mixed $value + * @param string $boolean + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function whereJsonLength($column, $operator, $value = null, $boolean = 'and') + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->whereJsonLength($column, $operator, $value, $boolean); + } + + /** + * Add a "or where JSON length" clause to the query. + * + * @param string $column + * @param mixed $operator + * @param mixed $value + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function orWhereJsonLength($column, $operator, $value = null) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->orWhereJsonLength($column, $operator, $value); + } + + /** + * Handles dynamic "where" clauses to the query. + * + * @param string $method + * @param array $parameters + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function dynamicWhere($method, $parameters) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->dynamicWhere($method, $parameters); + } + + /** + * Add a "group by" clause to the query. + * + * @param array|string $groups + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function groupBy(...$groups) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->groupBy(...$groups); + } + + /** + * Add a raw groupBy clause to the query. + * + * @param string $sql + * @param array $bindings + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function groupByRaw($sql, $bindings = []) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->groupByRaw($sql, $bindings); + } + + /** + * Add a "having" clause to the query. + * + * @param string $column + * @param string|null $operator + * @param string|null $value + * @param string $boolean + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function having($column, $operator = null, $value = null, $boolean = 'and') + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->having($column, $operator, $value, $boolean); + } + + /** + * Add a "or having" clause to the query. + * + * @param string $column + * @param string|null $operator + * @param string|null $value + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function orHaving($column, $operator = null, $value = null) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->orHaving($column, $operator, $value); + } + + /** + * Add a "having between " clause to the query. + * + * @param string $column + * @param array $values + * @param string $boolean + * @param bool $not + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function havingBetween($column, $values, $boolean = 'and', $not = false) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->havingBetween($column, $values, $boolean, $not); + } + + /** + * Add a raw having clause to the query. + * + * @param string $sql + * @param array $bindings + * @param string $boolean + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function havingRaw($sql, $bindings = [], $boolean = 'and') + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->havingRaw($sql, $bindings, $boolean); + } + + /** + * Add a raw or having clause to the query. + * + * @param string $sql + * @param array $bindings + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function orHavingRaw($sql, $bindings = []) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->orHavingRaw($sql, $bindings); + } + + /** + * Add an "order by" clause to the query. + * + * @param \Closure|\Illuminate\Database\Query\Builder|string $column + * @param string $direction + * @return \Illuminate\Database\Query\Builder + * @throws \InvalidArgumentException + * @static + */ + public static function orderBy($column, $direction = 'asc') + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->orderBy($column, $direction); + } + + /** + * Add a descending "order by" clause to the query. + * + * @param string $column + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function orderByDesc($column) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->orderByDesc($column); + } + + /** + * Put the query's results in random order. + * + * @param string $seed + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function inRandomOrder($seed = '') + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->inRandomOrder($seed); + } + + /** + * Add a raw "order by" clause to the query. + * + * @param string $sql + * @param array $bindings + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function orderByRaw($sql, $bindings = []) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->orderByRaw($sql, $bindings); + } + + /** + * Alias to set the "offset" value of the query. + * + * @param int $value + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function skip($value) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->skip($value); + } + + /** + * Set the "offset" value of the query. + * + * @param int $value + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function offset($value) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->offset($value); + } + + /** + * Alias to set the "limit" value of the query. + * + * @param int $value + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function take($value) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->take($value); + } + + /** + * Set the "limit" value of the query. + * + * @param int $value + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function limit($value) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->limit($value); + } + + /** + * Set the limit and offset for a given page. + * + * @param int $page + * @param int $perPage + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function forPage($page, $perPage = 15) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->forPage($page, $perPage); + } + + /** + * Constrain the query to the previous "page" of results before a given ID. + * + * @param int $perPage + * @param int|null $lastId + * @param string $column + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function forPageBeforeId($perPage = 15, $lastId = 0, $column = 'id') + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->forPageBeforeId($perPage, $lastId, $column); + } + + /** + * Constrain the query to the next "page" of results after a given ID. + * + * @param int $perPage + * @param int|null $lastId + * @param string $column + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function forPageAfterId($perPage = 15, $lastId = 0, $column = 'id') + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->forPageAfterId($perPage, $lastId, $column); + } + + /** + * Add a union statement to the query. + * + * @param \Illuminate\Database\Query\Builder|\Closure $query + * @param bool $all + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function union($query, $all = false) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->union($query, $all); + } + + /** + * Add a union all statement to the query. + * + * @param \Illuminate\Database\Query\Builder|\Closure $query + * @return \Illuminate\Database\Query\Builder|static + * @static + */ + public static function unionAll($query) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->unionAll($query); + } + + /** + * Lock the selected rows in the table. + * + * @param string|bool $value + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function lock($value = true) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->lock($value); + } + + /** + * Lock the selected rows in the table for updating. + * + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function lockForUpdate() + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->lockForUpdate(); + } + + /** + * Share lock the selected rows in the table. + * + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function sharedLock() + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->sharedLock(); + } + + /** + * Get the SQL representation of the query. + * + * @return string + * @static + */ + public static function toSql() + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->toSql(); + } + + /** + * Get the count of the total records for the paginator. + * + * @param array $columns + * @return int + * @static + */ + public static function getCountForPagination($columns = []) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->getCountForPagination($columns); + } + + /** + * Concatenate values of a given column as a string. + * + * @param string $column + * @param string $glue + * @return string + * @static + */ + public static function implode($column, $glue = '') + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->implode($column, $glue); + } + + /** + * Determine if any rows exist for the current query. + * + * @return bool + * @static + */ + public static function exists() + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->exists(); + } + + /** + * Determine if no rows exist for the current query. + * + * @return bool + * @static + */ + public static function doesntExist() + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->doesntExist(); + } + + /** + * Execute the given callback if no rows exist for the current query. + * + * @param \Closure $callback + * @return mixed + * @static + */ + public static function existsOr($callback) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->existsOr($callback); + } + + /** + * Execute the given callback if rows exist for the current query. + * + * @param \Closure $callback + * @return mixed + * @static + */ + public static function doesntExistOr($callback) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->doesntExistOr($callback); + } + + /** + * Retrieve the "count" result of the query. + * + * @param string $columns + * @return int + * @static + */ + public static function count($columns = '*') + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->count($columns); + } + + /** + * Retrieve the minimum value of a given column. + * + * @param string $column + * @return mixed + * @static + */ + public static function min($column) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->min($column); + } + + /** + * Retrieve the maximum value of a given column. + * + * @param string $column + * @return mixed + * @static + */ + public static function max($column) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->max($column); + } + + /** + * Retrieve the sum of the values of a given column. + * + * @param string $column + * @return mixed + * @static + */ + public static function sum($column) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->sum($column); + } + + /** + * Retrieve the average of the values of a given column. + * + * @param string $column + * @return mixed + * @static + */ + public static function avg($column) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->avg($column); + } + + /** + * Alias for the "avg" method. + * + * @param string $column + * @return mixed + * @static + */ + public static function average($column) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->average($column); + } + + /** + * Execute an aggregate function on the database. + * + * @param string $function + * @param array $columns + * @return mixed + * @static + */ + public static function aggregate($function, $columns = []) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->aggregate($function, $columns); + } + + /** + * Execute a numeric aggregate function on the database. + * + * @param string $function + * @param array $columns + * @return float|int + * @static + */ + public static function numericAggregate($function, $columns = []) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->numericAggregate($function, $columns); + } + + /** + * Insert a new record into the database. + * + * @param array $values + * @return bool + * @static + */ + public static function insert($values) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->insert($values); + } + + /** + * Insert a new record into the database while ignoring errors. + * + * @param array $values + * @return int + * @static + */ + public static function insertOrIgnore($values) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->insertOrIgnore($values); + } + + /** + * Insert a new record and get the value of the primary key. + * + * @param array $values + * @param string|null $sequence + * @return int + * @static + */ + public static function insertGetId($values, $sequence = null) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->insertGetId($values, $sequence); + } + + /** + * Insert new records into the table using a subquery. + * + * @param array $columns + * @param \Closure|\Illuminate\Database\Query\Builder|string $query + * @return int + * @static + */ + public static function insertUsing($columns, $query) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->insertUsing($columns, $query); + } + + /** + * Insert or update a record matching the attributes, and fill it with values. + * + * @param array $attributes + * @param array $values + * @return bool + * @static + */ + public static function updateOrInsert($attributes, $values = []) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->updateOrInsert($attributes, $values); + } + + /** + * Run a truncate statement on the table. + * + * @return void + * @static + */ + public static function truncate() + { + /** @var \Illuminate\Database\Query\Builder $instance */ + $instance->truncate(); + } + + /** + * Create a raw database expression. + * + * @param mixed $value + * @return \Illuminate\Database\Query\Expression + * @static + */ + public static function raw($value) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->raw($value); + } + + /** + * Get the current query value bindings in a flattened array. + * + * @return array + * @static + */ + public static function getBindings() + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->getBindings(); + } + + /** + * Get the raw array of bindings. + * + * @return array + * @static + */ + public static function getRawBindings() + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->getRawBindings(); + } + + /** + * Set the bindings on the query builder. + * + * @param array $bindings + * @param string $type + * @return \Illuminate\Database\Query\Builder + * @throws \InvalidArgumentException + * @static + */ + public static function setBindings($bindings, $type = 'where') + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->setBindings($bindings, $type); + } + + /** + * Add a binding to the query. + * + * @param mixed $value + * @param string $type + * @return \Illuminate\Database\Query\Builder + * @throws \InvalidArgumentException + * @static + */ + public static function addBinding($value, $type = 'where') + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->addBinding($value, $type); + } + + /** + * Merge an array of bindings into our bindings. + * + * @param \Illuminate\Database\Query\Builder $query + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function mergeBindings($query) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->mergeBindings($query); + } + + /** + * Get the database query processor instance. + * + * @return \Illuminate\Database\Query\Processors\Processor + * @static + */ + public static function getProcessor() + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->getProcessor(); + } + + /** + * Get the query grammar instance. + * + * @return \Illuminate\Database\Query\Grammars\Grammar + * @static + */ + public static function getGrammar() + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->getGrammar(); + } + + /** + * Use the write pdo for query. + * + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function useWritePdo() + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->useWritePdo(); + } + + /** + * Clone the query without the given properties. + * + * @param array $properties + * @return static + * @static + */ + public static function cloneWithout($properties) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->cloneWithout($properties); + } + + /** + * Clone the query without the given bindings. + * + * @param array $except + * @return static + * @static + */ + public static function cloneWithoutBindings($except) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->cloneWithoutBindings($except); + } + + /** + * Dump the current SQL and bindings. + * + * @return \Illuminate\Database\Query\Builder + * @static + */ + public static function dump() + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->dump(); + } + + /** + * Die and dump the current SQL and bindings. + * + * @return void + * @static + */ + public static function dd() + { + /** @var \Illuminate\Database\Query\Builder $instance */ + $instance->dd(); + } + + /** + * Register a custom macro. + * + * @param string $name + * @param object|callable $macro + * @return void + * @static + */ + public static function macro($name, $macro) + { + \Illuminate\Database\Query\Builder::macro($name, $macro); + } + + /** + * Mix another object into the class. + * + * @param object $mixin + * @param bool $replace + * @return void + * @throws \ReflectionException + * @static + */ + public static function mixin($mixin, $replace = true) + { + \Illuminate\Database\Query\Builder::mixin($mixin, $replace); + } + + /** + * Dynamically handle calls to the class. + * + * @param string $method + * @param array $parameters + * @return mixed + * @throws \BadMethodCallException + * @static + */ + public static function macroCall($method, $parameters) + { + /** @var \Illuminate\Database\Query\Builder $instance */ + return $instance->macroCall($method, $parameters); + } + } + + class Event extends \Illuminate\Support\Facades\Event {} + + class File extends \Illuminate\Support\Facades\File {} + + class Gate extends \Illuminate\Support\Facades\Gate {} + + class Hash extends \Illuminate\Support\Facades\Hash {} + + class Lang extends \Illuminate\Support\Facades\Lang {} + + class Log extends \Illuminate\Support\Facades\Log {} + + class Mail extends \Illuminate\Support\Facades\Mail {} + + class Notification extends \Illuminate\Support\Facades\Notification {} + + class Password extends \Illuminate\Support\Facades\Password {} + + class Queue extends \Illuminate\Support\Facades\Queue {} + + class Redirect extends \Illuminate\Support\Facades\Redirect {} + + class Request extends \Illuminate\Support\Facades\Request {} + + class Response extends \Illuminate\Support\Facades\Response {} + + class Route extends \Illuminate\Support\Facades\Route {} + + class Schema extends \Illuminate\Support\Facades\Schema {} + + class Session extends \Illuminate\Support\Facades\Session {} + + class Storage extends \Illuminate\Support\Facades\Storage {} + + class Str extends \Illuminate\Support\Str {} + + class URL extends \Illuminate\Support\Facades\URL {} + + class Validator extends \Illuminate\Support\Facades\Validator {} + + class View extends \Illuminate\Support\Facades\View {} + + class Image extends \Intervention\Image\Facades\Image {} + + class Flare extends \Facade\Ignition\Facades\Flare {} + +} + + + + diff --git a/app/Console/Commands/SetupProductionEnvironment.php b/app/Console/Commands/SetupProductionEnvironment.php new file mode 100644 index 00000000..7286aa4a --- /dev/null +++ b/app/Console/Commands/SetupProductionEnvironment.php @@ -0,0 +1,99 @@ +info('Setting up production environment'); + + $this->migrateDatabase(); + $this->generateKey(); + $this->createPassportKeys(); + $this->createPassportClientPassword(); + $this->createPassportClientPersonal(); + + $this->info('Everything is done, congratulations! 🥳🥳🥳'); + + } + + /** + * Migrate database + */ + public function generateKey() + { + $this->call('key:generate'); + } + + /** + * Migrate database + */ + public function migrateDatabase() + { + $this->call('migrate:fresh'); + } + + /** + * Create Passport Encryption keys + */ + public function createPassportKeys() + { + $this->call('passport:keys', [ + '--force' => true + ]); + } + + /** + * Create Password grant client + */ + public function createPassportClientPassword() + { + $this->call('passport:client', [ + '--password' => true, + '--name' => 'vuefilemanager', + ]); + } + + /** + * Create Personal access client + */ + public function createPassportClientPersonal() + { + $this->call('passport:client', [ + '--personal' => true, + '--name' => 'shared', + ]); + } +} diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index a8c51585..c9dec6bb 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -2,6 +2,7 @@ namespace App\Console; +use App\Console\Commands\SetupProductionEnvironment; use Illuminate\Console\Scheduling\Schedule; use Illuminate\Foundation\Console\Kernel as ConsoleKernel; @@ -13,7 +14,7 @@ class Kernel extends ConsoleKernel * @var array */ protected $commands = [ - // + SetupProductionEnvironment::class, ]; /** diff --git a/app/FileManagerFile.php b/app/FileManagerFile.php index 31ff26ad..3eb9fa74 100644 --- a/app/FileManagerFile.php +++ b/app/FileManagerFile.php @@ -3,17 +3,61 @@ namespace App; use ByteUnits\Metric; -use Carbon\Carbon; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Str; use Laravel\Scout\Searchable; use TeamTNT\TNTSearch\Indexer\TNTIndexer; use \Illuminate\Database\Eloquent\SoftDeletes; +/** + * App\FileManagerFile + * + * @property int $id + * @property int|null $user_id + * @property int $unique_id + * @property int $folder_id + * @property string $thumbnail + * @property string|null $name + * @property string|null $basename + * @property string|null $mimetype + * @property string $filesize + * @property string|null $type + * @property string $user_scope + * @property string $deleted_at + * @property string $created_at + * @property \Illuminate\Support\Carbon|null $updated_at + * @property-read \App\FileManagerFolder|null $folder + * @property-read string $file_url + * @property-read \App\FileManagerFolder $parent + * @property-read \App\Share|null $shared + * @method static \Illuminate\Database\Eloquent\Builder|\App\FileManagerFile newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\FileManagerFile newQuery() + * @method static \Illuminate\Database\Query\Builder|\App\FileManagerFile onlyTrashed() + * @method static \Illuminate\Database\Eloquent\Builder|\App\FileManagerFile query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\FileManagerFile whereBasename($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\FileManagerFile whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\FileManagerFile whereDeletedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\FileManagerFile whereFilesize($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\FileManagerFile whereFolderId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\FileManagerFile whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\FileManagerFile whereMimetype($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\FileManagerFile whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\FileManagerFile whereThumbnail($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\FileManagerFile whereType($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\FileManagerFile whereUniqueId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\FileManagerFile whereUpdatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\FileManagerFile whereUserId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\FileManagerFile whereUserScope($value) + * @method static \Illuminate\Database\Query\Builder|\App\FileManagerFile withTrashed() + * @method static \Illuminate\Database\Query\Builder|\App\FileManagerFile withoutTrashed() + * @mixin \Eloquent + */ + class FileManagerFile extends Model { use Searchable, SoftDeletes; + public $public_access = null; protected $guarded = [ 'id' @@ -23,6 +67,15 @@ class FileManagerFile extends Model 'file_url' ]; + /** + * Set routes with public access + * + * @param $token + */ + public function setPublicUrl($token) { + $this->public_access = $token; + } + /** * Format created at date * @@ -46,9 +99,8 @@ class FileManagerFile extends Model } /** - * Format filesize + * Format fileSize * - * @param $value * @return string */ public function getFilesizeAttribute() @@ -59,23 +111,39 @@ class FileManagerFile extends Model /** * Format thumbnail url * - * @param $value * @return string */ public function getThumbnailAttribute() { - return $this->attributes['thumbnail'] ? route('thumbnail', ['name' => $this->attributes['thumbnail']]) : null; + if ($this->attributes['thumbnail']) { + + // Thumbnail route + $route = route('thumbnail', ['name' => $this->attributes['thumbnail']]); + + if ($this->public_access) { + return $route . '/public/' . $this->public_access; + } + + return $route; + } + + return null; } /** * Format file url * - * @param $value * @return string */ public function getFileUrlAttribute() { - return route('file', ['name' => $this->attributes['basename']]); + $route = route('file', ['name' => $this->attributes['basename']]); + + if ($this->public_access) { + return $route . '/public/' . $this->public_access; + } + + return $route; } /** @@ -114,4 +182,14 @@ class FileManagerFile extends Model { return $this->hasOne('App\FileManagerFolder', 'unique_id', 'folder_id'); } + + /** + * Get sharing attributes + * + * @return \Illuminate\Database\Eloquent\Relations\HasOne + */ + public function shared() + { + return $this->hasOne('App\Share', 'item_id', 'unique_id'); + } } diff --git a/app/FileManagerFolder.php b/app/FileManagerFolder.php index 1ca1adcc..cf767ba5 100644 --- a/app/FileManagerFolder.php +++ b/app/FileManagerFolder.php @@ -12,6 +12,53 @@ use RecursiveIteratorIterator; use TeamTNT\TNTSearch\Indexer\TNTIndexer; use \Illuminate\Database\Eloquent\SoftDeletes; +/** + * App\FileManagerFolder + * + * @property int $id + * @property int|null $user_id + * @property int $unique_id + * @property int $parent_id + * @property string|null $name + * @property string|null $type + * @property string $user_scope + * @property string $deleted_at + * @property string $created_at + * @property \Illuminate\Support\Carbon|null $updated_at + * @property-read \Illuminate\Database\Eloquent\Collection|\App\FileManagerFolder[] $children + * @property-read int|null $children_count + * @property-read \Illuminate\Database\Eloquent\Collection|\App\FileManagerFile[] $files + * @property-read int|null $files_count + * @property-read \Illuminate\Database\Eloquent\Collection|\App\FileManagerFolder[] $folders + * @property-read int|null $folders_count + * @property-read int $items + * @property-read int $trashed_items + * @property-read \App\FileManagerFolder $parent + * @property-read \App\Share|null $shared + * @property-read \Illuminate\Database\Eloquent\Collection|\App\FileManagerFolder[] $trashed_children + * @property-read int|null $trashed_children_count + * @property-read \Illuminate\Database\Eloquent\Collection|\App\FileManagerFile[] $trashed_files + * @property-read int|null $trashed_files_count + * @property-read \Illuminate\Database\Eloquent\Collection|\App\FileManagerFolder[] $trashed_folders + * @property-read int|null $trashed_folders_count + * @method static \Illuminate\Database\Eloquent\Builder|\App\FileManagerFolder newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\FileManagerFolder newQuery() + * @method static \Illuminate\Database\Query\Builder|\App\FileManagerFolder onlyTrashed() + * @method static \Illuminate\Database\Eloquent\Builder|\App\FileManagerFolder query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\FileManagerFolder whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\FileManagerFolder whereDeletedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\FileManagerFolder whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\FileManagerFolder whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\FileManagerFolder whereParentId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\FileManagerFolder whereType($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\FileManagerFolder whereUniqueId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\FileManagerFolder whereUpdatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\FileManagerFolder whereUserId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\FileManagerFolder whereUserScope($value) + * @method static \Illuminate\Database\Query\Builder|\App\FileManagerFolder withTrashed() + * @method static \Illuminate\Database\Query\Builder|\App\FileManagerFolder withoutTrashed() + * @mixin \Eloquent + */ class FileManagerFolder extends Model { use Searchable, SoftDeletes; @@ -165,6 +212,16 @@ class FileManagerFolder extends Model return $this->hasMany('App\FileManagerFolder', 'parent_id', 'unique_id')->withTrashed(); } + /** + * Get sharing attributes + * + * @return \Illuminate\Database\Eloquent\Relations\HasOne + */ + public function shared() + { + return $this->hasOne('App\Share', 'item_id', 'unique_id'); + } + // Delete all folder childrens public static function boot() { @@ -203,4 +260,4 @@ class FileManagerFolder extends Model }); }); } -} +} \ No newline at end of file diff --git a/app/Http/Controllers/AppFunctionsController.php b/app/Http/Controllers/AppFunctionsController.php index 083a7c33..fb20afed 100644 --- a/app/Http/Controllers/AppFunctionsController.php +++ b/app/Http/Controllers/AppFunctionsController.php @@ -2,8 +2,9 @@ namespace App\Http\Controllers; -use Illuminate\Http\Request; use Illuminate\Support\Facades\File; +use Illuminate\Support\Facades\Auth; +use Illuminate\Http\Request; use Response; class AppFunctionsController extends Controller @@ -17,28 +18,4 @@ class AppFunctionsController extends Controller { return view("index"); } - - /** - * Get file - * - * @param $filename - * @return mixed - */ - public function get_avatar($basename) - { - // Get file path - $path = storage_path() . '/app/avatars/' . $basename; - - // Check if file exist - if (!File::exists($path)) abort(404); - - $file = File::get($path); - $type = File::mimeType($path); - - // Create response - $response = Response::make($file, 200); - $response->header("Content-Type", $type); - - return $response; - } } diff --git a/app/Http/Controllers/Auth/AuthController.php b/app/Http/Controllers/Auth/AuthController.php index 98e6147a..0764a820 100644 --- a/app/Http/Controllers/Auth/AuthController.php +++ b/app/Http/Controllers/Auth/AuthController.php @@ -59,7 +59,7 @@ class AuthController extends Controller $data = json_decode($response->content(), true); - return response('Login Successfull!', 200)->cookie('token', $data['access_token'], 43200); + return response('Login Successfull!', 200)->cookie('access_token', $data['access_token'], 43200); } else { return $response; @@ -97,7 +97,7 @@ class AuthController extends Controller $data = json_decode($response->content(), true); - return response('Register Successfull!', 200)->cookie('token', $data['access_token'], 43200); + return response('Register Successfull!', 200)->cookie('access_token', $data['access_token'], 43200); } else { return $response; @@ -118,7 +118,7 @@ class AuthController extends Controller $token->delete(); }); - return response('Logout successfull', 200)->cookie('token', '', -1); + return response('Logout successfull', 200)->cookie('access_token', '', -1); } /** @@ -136,7 +136,7 @@ class AuthController extends Controller 'client_secret' => config('services.passport.client_secret'), 'username' => $request->email, 'password' => $request->password, - 'scope' => '', + 'scope' => 'master', ]); return Request::create(url('/oauth/token'), 'POST', $request->all()); diff --git a/app/Http/Controllers/FileAccessController.php b/app/Http/Controllers/FileAccessController.php new file mode 100644 index 00000000..d85586aa --- /dev/null +++ b/app/Http/Controllers/FileAccessController.php @@ -0,0 +1,232 @@ +header("Content-Type", $type); + + return $response; + } + + /** + * Get file + * + * @param Request $request + * @param $filename + * @return mixed + * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException + */ + public function get_file(Request $request, $filename) + { + // Get user id + $user_id = Auth::id(); + + // Get file record + $file = FileManagerFile::withTrashed() + ->where('user_id', $user_id) + ->where('basename', $filename) + ->firstOrFail(); + + // Check user permission + if ( ! $request->user()->tokenCan('master') ) { + + // Get shared token + $shared = get_shared($request->cookie('shared_token')); + + // Check access to file + $this->check_file_access($shared, $file); + } + + return $this->download_file($file); + } + + /** + * Get file public + * + * @param $filename + * @param $token + * @return mixed + * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException + */ + public function get_file_public($filename, $token) + { + // Get sharing record + $shared = get_shared($token); + + // Abort if shared is protected + if ($shared->protected) { + abort(403, "Sorry, you don't have permission"); + } + + // Get file record + $file = FileManagerFile::where('user_id', $shared->user_id) + ->where('basename', $filename) + ->firstOrFail(); + + // Check file access + $this->check_file_access($shared, $file); + + return $this->download_file($file); + } + + /** + * Get image thumbnail + * + * @param Request $request + * @param $filename + * @return mixed + * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException + */ + public function get_thumbnail(Request $request, $filename) + { + // Get file record + $file = FileManagerFile::withTrashed() + ->where('user_id', $request->user()->id) + ->where('thumbnail', $filename) + ->firstOrFail(); + + // Check user permission + if ( ! $request->user()->tokenCan('master') ) { + $this->check_file_access($request, $file); + } + + return $this->thumbnail_file($file); + } + + /** + * Get public image thumbnail + * + * @param $filename + * @param $token + * @return mixed + * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException + */ + public function get_thumbnail_public($filename, $token) + { + // Get sharing record + $shared = get_shared($token); + + // Abort if thumbnail is protected + if ($shared->protected) { + abort(403, "Sorry, you don't have permission"); + } + + // Get file record + $file = FileManagerFile::where('user_id', $shared->user_id) + ->where('thumbnail', $filename) + ->firstOrFail(); + + // Check file access + $this->check_file_access($shared, $file); + + return $this->thumbnail_file($file); + } + + /** + * Check user file access + * + * @param $shared + * @param $file + */ + protected function check_file_access($shared, $file): void + { + // Check by parent folder permission + if ($shared->type === 'folder') { + Guardian::check_item_access($file->folder_id, $shared); + } + + // Check by single file permission + if ($shared->type === 'file') { + if ($shared->item_id !== $file->unique_id) abort(403); + } + } + + /** + * Call and download file + * + * @param $file + * @return mixed + * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException + */ + private function download_file($file) + { + // Format pretty filename + $file_pretty_name = $file->name . '.' . $file->mimetype; + + // Get file path + $path = storage_path() . '/app/file-manager/' . $file->basename; + + // Check if file exist + if (!File::exists($path)) abort(404); + + $file = File::get($path); + $type = File::mimeType($path); + $size = File::size($path); + + // Create response + $response = Response::make($file, 200); + $response->header("Content-Type", $type); + $response->header("Content-Disposition", 'attachment; filename=' . $file_pretty_name); + $response->header("Content-Length", $size); + $response->header("Accept-Ranges", "bytes"); + $response->header("Content-Range", "bytes 0-" . $size . "/" . $size); + + return $response; + } + + /** + * @param $file + * @return mixed + * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException + */ + private function thumbnail_file($file) + { + // Get file path + $path = storage_path() . '/app/file-manager/' . $file->getOriginal('thumbnail'); + + // Check if file exist + if (!File::exists($path)) abort(404); + + $file = File::get($path); + $type = File::mimeType($path); + + // Create response + $response = Response::make($file, 200); + $response->header("Content-Type", $type); + + return $response; + } +} diff --git a/app/Http/Controllers/FileBrowser/BrowseController.php b/app/Http/Controllers/FileBrowser/BrowseController.php new file mode 100644 index 00000000..3964132e --- /dev/null +++ b/app/Http/Controllers/FileBrowser/BrowseController.php @@ -0,0 +1,198 @@ +with(['trashed_folders']) + ->where('user_id', $user_id) + ->get(['parent_id', 'unique_id', 'name']); + + $folders = FileManagerFolder::onlyTrashed() + ->where('user_id', $user_id) + ->whereIn('unique_id', filter_folders_ids($folders_trashed)) + ->get(); + + // Get files trashed + $files_trashed = FileManagerFile::onlyTrashed() + ->where('user_id', $user_id) + ->whereNotIn('folder_id', array_values(array_unique(recursiveFind($folders_trashed->toArray(), 'unique_id')))) + ->get(); + + // Collect folders and files to single array + return collect([$folders, $files_trashed])->collapse(); + } + + /** + * Get user shared items + * + * @return Collection + */ + public function shared() + { + // Get user + $user_id = Auth::id(); + + // Get shared folders and files + $folder_ids = Share::where('user_id', $user_id) + ->where('type', 'folder') + ->pluck('item_id'); + + $file_ids = Share::where('user_id', $user_id) + ->where('type', '!=', 'folder') + ->pluck('item_id'); + + // Get folders and files + $folders = FileManagerFolder::with(['parent', 'shared:token,id,item_id,permission,protected']) + ->where('user_id', $user_id) + ->whereIn('unique_id', $folder_ids) + ->get(); + + $files = FileManagerFile::with(['parent', 'shared:token,id,item_id,permission,protected']) + ->where('user_id', $user_id) + ->whereIn('unique_id', $file_ids) + ->get(); + + // Collect folders and files to single array + return collect([$folders, $files])->collapse(); + } + + /** + * Get directory with files + * + * @param Request $request + * @param $unique_id + * @return Collection + */ + public function folder(Request $request, $unique_id) + { + // Get user + $user_id = Auth::id(); + + // Get folder trash items + if ($request->query('trash')) { + + // Get folders and files + $folders = FileManagerFolder::onlyTrashed() + ->where('user_id', $user_id) + ->with('parent') + ->where('parent_id', $unique_id) + ->get(); + + $files = FileManagerFile::onlyTrashed() + ->where('user_id', $user_id) + ->with('parent') + ->where('folder_id', $unique_id) + ->get(); + + // Collect folders and files to single array + return collect([$folders, $files])->collapse(); + } + + // Get folders and files + $folders = FileManagerFolder::with(['parent', 'shared:token,id,item_id,permission,protected']) + ->where('user_id', $user_id) + ->where('parent_id', $unique_id) + ->get(); + + $files = FileManagerFile::with(['parent', 'shared:token,id,item_id,permission,protected']) + ->where('user_id', $user_id) + ->where('folder_id', $unique_id) + ->get(); + + // Collect folders and files to single array + return collect([$folders, $files])->collapse(); + } + + /** + * Get user folder tree + * + * @return array + */ + public function navigation_tree() { + + $folders = FileManagerFolder::with('folders:id,parent_id,unique_id,name') + ->where('parent_id', 0) + ->where('user_id', Auth::id()) + ->get(['id', 'parent_id', 'unique_id', 'name']); + + return [ + [ + 'unique_id' => 0, + 'name' => __('vuefilemanager.home'), + 'location' => 'base', + 'folders' => $folders, + ] + ]; + } + + /** + * Search files + * + * @param Request $request + * @return \Illuminate\Database\Eloquent\Collection + */ + public function search(Request $request) + { + // Validate request + $validator = Validator::make($request->all(), [ + 'query' => 'required|string', + ]); + + // Return error + if ($validator->fails()) abort(400, 'Bad input'); + + // Get user + $user_id = Auth::id(); + + // Search files id db + $searched_files = FileManagerFile::search($request->input('query')) + ->where('user_id', $user_id) + ->get(); + $searched_folders = FileManagerFolder::search($request->input('query')) + ->where('user_id', $user_id) + ->get(); + + // Collect folders and files to single array + return collect([$searched_folders, $searched_files])->collapse(); + } + + /** + * Get file record + * + * @param $unique_id + * @return mixed + */ + public function file_detail($unique_id) + { + // Get user id + $user_id = Auth::id(); + + return FileManagerFile::with(['shared:token,id,item_id,permission,protected']) + ->where('user_id', $user_id) + ->where('unique_id', $unique_id) + ->firstOrFail(); + } +} diff --git a/app/Http/Controllers/FileFunctions/EditItemsController.php b/app/Http/Controllers/FileFunctions/EditItemsController.php new file mode 100644 index 00000000..cc018293 --- /dev/null +++ b/app/Http/Controllers/FileFunctions/EditItemsController.php @@ -0,0 +1,390 @@ +user()->tokenCan('editor')) { + + // check if shared_token cookie exist + if (!$request->hasCookie('shared_token')) abort('401'); + + // Get shared token + $shared = get_shared($request->cookie('shared_token')); + + // Check access to requested directory + Guardian::check_item_access($request->parent_id, $shared); + } + + // Create new folder + return Editor::create_folder($request); + } + + /** + * Create new folder for guest user with edit permission + * + * @param CreateFolderRequest $request + * @param $token + * @return array + * @throws Exception + */ + public function guest_create_folder(CreateFolderRequest $request, $token) + { + // Get shared record + $shared = get_shared($token); + + if (is_demo($shared->user_id)) { + return Demo::create_folder($request); + } + + // Check shared permission + if (!is_editor($shared)) abort(403); + + // Check access to requested directory + Guardian::check_item_access($request->parent_id, $shared); + + // Create folder + return Editor::create_folder($request, $shared); + } + + /** + * Rename item for authenticated master|editor user + * + * @param RenameItemRequest $request + * @param $unique_id + * @return mixed + * @throws Exception + */ + public function user_rename_item(RenameItemRequest $request, $unique_id) + { + // Demo preview + if (is_demo(Auth::id())) { + return Demo::rename_item($request, $unique_id); + } + + // Check permission to rename item for authenticated editor + if ($request->user()->tokenCan('editor')) { + + // check if shared_token cookie exist + if (!$request->hasCookie('shared_token')) abort('401'); + + // Get shared token + $shared = get_shared($request->cookie('shared_token')); + + // Get file|folder item + $item = get_item($request->type, $unique_id, Auth::id()); + + // Check access to requested directory + if ($request->type === 'folder') { + Guardian::check_item_access($item->unique_id, $shared); + } else { + Guardian::check_item_access($item->folder_id, $shared); + } + } + + // Rename Item + return Editor::rename_item($request, $unique_id); + } + + /** + * Rename item for guest user with edit permission + * + * @param RenameItemRequest $request + * @param $unique_id + * @param $token + * @return mixed + * @throws Exception + */ + public function guest_rename_item(RenameItemRequest $request, $unique_id, $token) + { + // Get shared record + $shared = get_shared($token); + + // Demo preview + if (is_demo($shared->user_id)) { + return Demo::rename_item($request, $unique_id); + } + + // Check shared permission + if (!is_editor($shared)) abort(403); + + // Get file|folder item + $item = get_item($request->type, $unique_id, $shared->user_id); + + // Check access to requested item + if ($request->type === 'folder') { + Guardian::check_item_access($item->unique_id, $shared); + } else { + Guardian::check_item_access($item->folder_id, $shared); + } + + // Rename item + $item = Editor::rename_item($request, $unique_id, $shared); + + // Set public url + if ($item->type !== 'folder') { + $item->setPublicUrl($token); + } + + return $item; + } + + /** + * Delete item for authenticated master|editor user + * + * @param DeleteItemRequest $request + * @param $unique_id + * @return ResponseFactory|\Illuminate\Http\Response + * @throws Exception + */ + public function user_delete_item(DeleteItemRequest $request, $unique_id) + { + // Demo preview + if (is_demo(Auth::id())) { + return Demo::response_204(); + } + + // Check permission to delete item for authenticated editor + if ($request->user()->tokenCan('editor')) { + + // Prevent force delete for non-master users + if ($request->force_delete) abort('401'); + + // check if shared_token cookie exist + if (!$request->hasCookie('shared_token')) abort('401'); + + // Get shared token + $shared = get_shared($request->cookie('shared_token')); + + // Get file|folder item + $item = get_item($request->type, $unique_id, Auth::id()); + + // Check access to requested directory + if ($request->type === 'folder') { + Guardian::check_item_access($item->unique_id, $shared); + } else { + Guardian::check_item_access($item->folder_id, $shared); + } + } + + // Delete item + Editor::delete_item($request, $unique_id); + + // Return response + return response(null, 204); + } + + /** + * Delete item for guest user with edit permission + * + * @param DeleteItemRequest $request + * @param $unique_id + * @param $token + * @return ResponseFactory|\Illuminate\Http\Response + * @throws Exception + */ + public function guest_delete_item(DeleteItemRequest $request, $unique_id, $token) + { + // Get shared record + $shared = get_shared($token); + + // Demo preview + if (is_demo($shared->user_id)) { + return Demo::response_204(); + } + + // Check shared permission + if (!is_editor($shared)) abort(403); + + // Get file|folder item + $item = get_item($request->type, $unique_id, $shared->user_id); + + // Check access to requested item + if ($request->type === 'folder') { + Guardian::check_item_access($item->unique_id, $shared); + } else { + Guardian::check_item_access($item->folder_id, $shared); + } + + // Delete item + Editor::delete_item($request, $unique_id, $shared); + + // Return response + return response(null, 204); + } + + /** + * Delete file for authenticated master|editor user + * + * @param UploadRequest $request + * @return FileManagerFile|Model + * @throws Exception + */ + public function user_upload(UploadRequest $request) + { + // Demo preview + if (is_demo(Auth::id())) { + return Demo::upload($request); + } + + // Check if user can upload + if (config('vuefilemanager.limit_storage_by_capacity') && user_storage_percentage() >= 100) { + abort(423, 'You exceed your storage limit!'); + } + + // Check permission to upload for authenticated editor + if ($request->user()->tokenCan('editor')) { + + // check if shared_token cookie exist + if (!$request->hasCookie('shared_token')) abort('401'); + + // Get shared token + $shared = get_shared($request->cookie('shared_token')); + + // Check access to requested directory + Guardian::check_item_access($request->parent_id, $shared); + } + + // Return new uploaded file + return Editor::upload($request); + } + + /** + * Delete file for guest user with edit permission + * + * @param UploadRequest $request + * @param $token + * @return FileManagerFile|Model + * @throws Exception + */ + public function guest_upload(UploadRequest $request, $token) + { + // Get shared record + $shared = get_shared($token); + + // Demo preview + if (is_demo($shared->user_id)) { + return Demo::upload($request); + } + + // Check shared permission + if (!is_editor($shared)) abort(403); + + // Check access to requested directory + Guardian::check_item_access($request->parent_id, $shared); + + // Return new uploaded file + $new_file = Editor::upload($request, $shared); + + // Set public access url + $new_file->setPublicUrl($token); + + return $new_file; + } + + /** + * Move item for authenticated master|editor user + * + * @param MoveItemRequest $request + * @param $unique_id + * @return ResponseFactory|\Illuminate\Http\Response + */ + public function user_move(MoveItemRequest $request, $unique_id) + { + // Demo preview + if (is_demo(Auth::id())) { + return Demo::response_204(); + } + + // Check permission to upload for authenticated editor + if ($request->user()->tokenCan('editor')) { + + // check if shared_token cookie exist + if (!$request->hasCookie('shared_token')) abort('401'); + + // Get shared token + $shared = get_shared($request->cookie('shared_token')); + + // Check access to requested directory + Guardian::check_item_access($request->to_unique_id, $shared); + } + + // Move item + Editor::move($request, $unique_id); + + return response('Done!', 204); + } + + /** + * Move item for guest user with edit permission + * + * @param MoveItemRequest $request + * @param $unique_id + * @param $token + * @return ResponseFactory|\Illuminate\Http\Response + */ + public function guest_move(MoveItemRequest $request, $unique_id, $token) + { + // Get shared record + $shared = get_shared($token); + + // Demo preview + if (is_demo(Auth::id())) { + return Demo::response_204(); + } + + // Check shared permission + if (!is_editor($shared)) abort(403); + + $moving_unique_id = $unique_id; + + if ($request->from_type !== 'folder') { + $file = FileManagerFile::where('unique_id', $unique_id) + ->where('user_id', $shared->user_id) + ->firstOrFail(); + + $moving_unique_id = $file->folder_id; + } + + // Check access to requested item + Guardian::check_item_access([ + $request->to_unique_id, $moving_unique_id + ], $shared); + + // Move item + Editor::move($request, $unique_id, $shared); + + return response('Done!', 204); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/FileFunctions/FavouriteController.php b/app/Http/Controllers/FileFunctions/FavouriteController.php new file mode 100644 index 00000000..3019ae16 --- /dev/null +++ b/app/Http/Controllers/FileFunctions/FavouriteController.php @@ -0,0 +1,69 @@ +all(), [ + 'unique_id' => 'required|integer', + ]); + + // Return error + if ($validator->fails()) abort(400, 'Bad input'); + + // Get user & folder + $user = Auth::user(); + $folder = FileManagerFolder::where('unique_id', $request->unique_id)->first(); + + if (is_demo($user->id)) { + return Demo::favourites($user); + } + + // Check ownership + if ($folder->user_id !== $user->id) abort(403); + + // Add folder to user favourites + $user->favourites()->syncWithoutDetaching($request->unique_id); + + // Return updated favourites + return $user->favourites->makeHidden(['pivot']); + } + + /** + * Remove folder from user favourites + * + * @param $unique_id + * @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response + */ + public function destroy($unique_id) + { + // Get user + $user = Auth::user(); + + if (is_demo($user->id)) { + return Demo::favourites($user); + } + + // Remove folder from user favourites + $user->favourites()->detach($unique_id); + + // Return updated favourites + return $user->favourites->makeHidden(['pivot']); + } +} diff --git a/app/Http/Controllers/FileFunctions/ShareController.php b/app/Http/Controllers/FileFunctions/ShareController.php new file mode 100644 index 00000000..bb99d672 --- /dev/null +++ b/app/Http/Controllers/FileFunctions/ShareController.php @@ -0,0 +1,107 @@ +firstOrFail(); + + return new ShareResource($shared); + } + + /** + * Generate file share link + * + * @param CreateShareRequest $request + * @return ShareResource + */ + public function store(CreateShareRequest $request) + { + do { + // Generate unique token + $token = Str::random(16); + + } while (Share::where(DB::raw('BINARY `token`'), $token)->exists()); + + // Create shared options + $options = [ + 'password' => $request->has('password') ? Hash::make($request->password) : null, + 'type' => $request->type === 'folder' ? 'folder' : 'file', + 'protected' => $request->isPassword, + 'permission' => $request->permission, + 'item_id' => $request->unique_id, + 'user_id' => Auth::id(), + 'token' => $token, + ]; + + // Return created shared record + return new ShareResource(Share::create($options)); + } + + /** + * Update sharing + * + * @param UpdateShareRequest $request + * @param $token + * @return ShareResource + */ + public function update(UpdateShareRequest $request, $token) + { + // Get sharing record + $shared = Share::where('token', $token) + ->where('user_id', Auth::id()) + ->firstOrFail(); + + // Update sharing record + $shared->update([ + 'permission' => $request->permission, + 'protected' => $request->protected, + 'password' => $request->password ? Hash::make($request->password) : $shared->password, + ]); + + // Return shared record + return new ShareResource($shared); + } + + /** + * Delete sharing item + * + * @param $token + * @return ResponseFactory|\Illuminate\Http\Response + * @throws \Exception + */ + public function destroy($token) + { + // Get sharing record + $shared = Share::where('token', $token) + ->where('user_id', Auth::id()) + ->firstOrFail(); + + // Delete shared record + $shared->delete(); + + // Done + return response('Done!', 204); + } +} diff --git a/app/Http/Controllers/FileFunctions/TrashController.php b/app/Http/Controllers/FileFunctions/TrashController.php new file mode 100644 index 00000000..b9a2fa59 --- /dev/null +++ b/app/Http/Controllers/FileFunctions/TrashController.php @@ -0,0 +1,115 @@ +where('user_id', $user_id)->get(); + $files = FileManagerFile::onlyTrashed()->where('user_id', $user_id)->get(); + + // Force delete folder + $folders->each->forceDelete(); + + // Force delete files + foreach ($files as $file) { + + // Delete file + Storage::disk('local')->delete('/file-manager/' . $file->basename); + + // Delete thumbnail if exist + if ($file->thumbnail) Storage::disk('local')->delete('/file-manager/' . $file->getOriginal('thumbnail')); + + // Delete file permanently + $file->forceDelete(); + } + + // Return response + return response('Done!', 204); + } + + /** + * Restore item from trash + * + * @param Request $request + * @param $unique_id + * @return ResponseFactory|\Illuminate\Http\Response + */ + public function restore(Request $request, $unique_id) + { + // Validate request + $validator = Validator::make($request->all(), [ + 'type' => 'required|string', + 'to_home' => 'boolean', + ]); + + // Return error + if ($validator->fails()) abort(400, 'Bad input'); + + // Get user id + $user_id = Auth::id(); + + if (is_demo($user_id)) { + return Demo::response_204(); + } + + // Get folder + if ($request->type === 'folder') { + + // Get folder + $item = FileManagerFolder::onlyTrashed() + ->where('user_id', $user_id) + ->where('unique_id', $unique_id) + ->first(); + + // Restore item to home directory + if ($request->has('to_home') && $request->to_home) { + $item->parent_id = 0; + $item->save(); + } + } else { + + // Get item + $item = FileManagerFile::onlyTrashed() + ->where('user_id', $user_id) + ->where('unique_id', $unique_id) + ->first(); + + // Restore item to home directory + if ($request->has('to_home') && $request->to_home) { + $item->folder_id = 0; + $item->save(); + } + } + + // Restore Item + $item->restore(); + + // Return response + return response('Done!', 204); + } +} diff --git a/app/Http/Controllers/FileManagerController.php b/app/Http/Controllers/FileManagerController.php deleted file mode 100644 index 9e59d12f..00000000 --- a/app/Http/Controllers/FileManagerController.php +++ /dev/null @@ -1,602 +0,0 @@ -with(['trashed_folders']) - ->where('user_id', $user_id) - ->get(['parent_id', 'unique_id', 'name']); - - $folders = FileManagerFolder::onlyTrashed() - ->where('user_id', $user_id) - ->whereIn('unique_id', filter_folders_ids($folders_trashed)) - ->get(); - - // Get files trashed - $files_trashed = FileManagerFile::onlyTrashed() - ->where('user_id', $user_id) - ->whereNotIn('folder_id', array_values(array_unique(recursiveFind($folders_trashed->toArray(), 'unique_id')))) - ->get(); - - // Collect folders and files to single array - return collect([$folders, $files_trashed])->collapse(); - } - - /** - * Get directory with files - * - * @return \Illuminate\Support\Collection - */ - public function folder(Request $request, $unique_id) - { - // Get user - $user_id = Auth::id(); - - // Get folder trash items - if ($request->query('trash')) { - - // Get folders and files - $folders = FileManagerFolder::onlyTrashed() - ->where('user_id', $user_id) - ->with('parent') - ->where('parent_id', $unique_id) - ->get(); - - $files = FileManagerFile::onlyTrashed() - ->where('user_id', $user_id) - ->with('parent') - ->where('folder_id', $unique_id) - ->get(); - - // Collect folders and files to single array - return collect([$folders, $files])->collapse(); - } - - // Get folders and files - $folders = FileManagerFolder::with('parent') - ->where('user_id', $user_id) - ->where('parent_id', $unique_id) - ->get(); - - $files = FileManagerFile::with('parent') - ->where('user_id', $user_id) - ->where('folder_id', $unique_id) - ->get(); - - // Collect folders and files to single array - return collect([$folders, $files])->collapse(); - } - - /** - * Search files - * - * @param Request $request - * @return \Illuminate\Database\Eloquent\Collection - */ - public function search(Request $request) - { - // Validate request - $validator = Validator::make($request->all(), [ - 'query' => 'required|string', - ]); - - // Return error - if ($validator->fails()) abort(400, 'Bad input'); - - // Get user - $user_id = Auth::id(); - - // Search files id db - $searched_files = FileManagerFile::search($request->input('query')) - ->where('user_id', $user_id) - ->get(); - $searched_folders = FileManagerFolder::search($request->input('query')) - ->where('user_id', $user_id) - ->get(); - - // Collect folders and files to single array - return collect([$searched_folders, $searched_files])->collapse(); - } - - /** - * Create new folder - * - * @param Request $request - * @return array - */ - public function create_folder(Request $request) - { - // Validate request - $validator = Validator::make($request->all(), [ - 'parent_id' => 'required|integer', - 'name' => 'string', - ]); - - // Return error - if ($validator->fails()) abort(400, 'Bad input'); - - // Get parent_id from request - $parent_id = $request->parent_id === 0 ? 0 : $request->parent_id; - - // Create folder - $folder = FileManagerFolder::create([ - 'user_id' => Auth::id(), - 'parent_id' => $parent_id, - 'name' => $request->has('name') ? $request->input('name') : 'New Folder', - 'type' => 'folder', - 'unique_id' => $this->get_unique_id(), - ]); - - // Return new folder - return $folder; - } - - /** - * Rename item name - * - * @param Request $request - * @return mixed - */ - public function rename_item(Request $request) - { - // Validate request - $validator = Validator::make($request->all(), [ - 'unique_id' => 'required|integer', - 'name' => 'required|string', - 'type' => 'required|string', - ]); - - // Return error - if ($validator->fails()) abort(400, 'Bad input'); - - // Get user id - $user_id = Auth::id(); - - // Update folder name - if ($request->type === 'folder') { - - $item = FileManagerFolder::where('unique_id', $request->unique_id) - ->where('user_id', $user_id) - ->firstOrFail(); - - $item->name = $request->name; - $item->save(); - - } else { - - $item = FileManagerFile::where('unique_id', $request->unique_id) - ->where('user_id', $user_id) - ->firstOrFail(); - - $item->name = $request->name; - $item->save(); - } - - // Return updated item - return $item; - } - - /** - * Delete item - * - * @param Request $request - * @throws \Exception - */ - public function delete_item(Request $request) - { - // Validate request - $validator = Validator::make($request->all(), [ - 'unique_id' => 'required|integer', - 'type' => 'required|string', - 'force_delete' => 'required|boolean', - ]); - - // Return error - if ($validator->fails()) abort(400, 'Bad input'); - - // Get user id - $user = Auth::user(); - - // Delete folder - if ($request->type === 'folder') { - - // Get folder - $folder = FileManagerFolder::withTrashed() - ->with(['folders']) - ->where('user_id', $user->id) - ->where('unique_id', $request->unique_id) - ->first(); - - // Force delete children files - if ($request->force_delete) { - - // Get children folder ids - $child_folders = filter_folders_ids($folder->trashed_folders, 'unique_id'); - - // Get children files - $files = FileManagerFile::onlyTrashed() - ->where('user_id', $user->id) - ->whereIn('folder_id', Arr::flatten([$request->unique_id, $child_folders])) - ->get(); - - // Remove all children files - foreach ($files as $file) { - - // Delete file - Storage::disk('local')->delete('/file-manager/' . $file->basename); - - // Delete thumbnail if exist - if (!is_null($file->thumbnail)) Storage::disk('local')->delete('/file-manager/' . $file->getOriginal('thumbnail')); - - // Delete file permanently - $file->forceDelete(); - } - - // Delete folder record - $folder->forceDelete(); - - } else { - - // Remove folder from user favourites - $user->favourites()->detach($request->unique_id); - - // Soft delete folder record - $folder->delete(); - } - } else { - - $file = FileManagerFile::withTrashed() - ->where('user_id', $user->id) - ->where('unique_id', $request->unique_id) - ->first(); - - if ($request->force_delete) { - - // Delete file - Storage::disk('local')->delete('/file-manager/' . $file->basename); - - // Delete thumbnail if exist - if ($file->thumbnail) Storage::disk('local')->delete('/file-manager/' . $file->getOriginal('thumbnail')); - - // Delete file permanently - $file->forceDelete(); - } else { - - // Soft delete file - $file->delete(); - } - } - } - - /** - * Empty user trash - * - * @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response - */ - public function empty_trash() - { - // Get user id - $user_id = Auth::id(); - - // Get files and folders - $folders = FileManagerFolder::onlyTrashed()->where('user_id', $user_id)->get(); - $files = FileManagerFile::onlyTrashed()->where('user_id', $user_id)->get(); - - // Force delete folder - $folders->each->forceDelete(); - - // Force delete files - foreach ($files as $file) { - - // Delete file - Storage::disk('local')->delete('/file-manager/' . $file->basename); - - // Delete thumbnail if exist - if ($file->thumbnail) Storage::disk('local')->delete('/file-manager/' . $file->getOriginal('thumbnail')); - - // Delete file permanently - $file->forceDelete(); - } - - // Return response - return response('Done!', 200); - } - - /** - * Restore item from trash - * - * @param Request $request - */ - public function restore_item(Request $request) - { - // Validate request - $validator = Validator::make($request->all(), [ - 'unique_id' => 'required|integer', - 'type' => 'required|string', - 'to_home' => 'boolean', - ]); - - // Return error - if ($validator->fails()) abort(400, 'Bad input'); - - // Get user id - $user_id = Auth::id(); - - // Get folder - if ($request->type === 'folder') { - - // Get folder - $item = FileManagerFolder::onlyTrashed()->where('user_id', $user_id)->where('unique_id', $request->unique_id)->first(); - - // Restore item to home directory - if ($request->has('to_home') && $request->to_home) { - $item->parent_id = 0; - $item->save(); - } - } else { - - // Get item - $item = FileManagerFile::onlyTrashed()->where('user_id', $user_id)->where('unique_id', $request->unique_id)->first(); - - // Restore item to home directory - if ($request->has('to_home') && $request->to_home) { - $item->folder_id = 0; - $item->save(); - } - } - - // Restore Item - $item->restore(); - } - - /** - * Upload items - * - * @param Request $request - * @return array - */ - public function upload_item(Request $request) - { - // Check if user can upload - if (config('vuefilemanager.limit_storage_by_capacity') && user_storage_percentage() >= 100) { - - abort(423, 'You exceed your storage limit!'); - } - - // Validate request - $validator = Validator::make($request->all(), [ - 'parent_id' => 'required|integer', - 'file' => 'required|file', - ]); - - // Return error - if ($validator->fails()) abort(400, 'Bad input'); - - // Get parent_id from request - $folder_id = $request->parent_id === 0 ? 0 : $request->parent_id; - $file = $request->file('file'); - - // File - $filename = Str::random() . '-' . str_replace(' ', '', $file->getClientOriginalName()); - $filetype = get_file_type($file); - $thumbnail = null; - $filesize = $file->getSize(); - $directory = 'file-manager'; - - // create directory if not exist - if (!Storage::disk('local')->exists($directory)) { - Storage::disk('local')->makeDirectory($directory); - } - - // Store to disk - Storage::disk('local')->putFileAs($directory, $file, $filename, 'public'); - - // Create image thumbnail - if ($filetype == 'image') { - - $thumbnail = 'thumbnail-' . $filename; - - // Create intervention image - $image = Image::make($file->getRealPath())->orientate(); - - $image->resize(256, null, function ($constraint) { - $constraint->aspectRatio(); - })->stream(); - - // Store thumbnail to s3 - Storage::disk('local')->put($directory . '/' . $thumbnail, $image); - } - - // Store file - $new_file = FileManagerFile::create([ - 'user_id' => Auth::id(), - 'name' => pathinfo($file->getClientOriginalName())['filename'], - 'basename' => $filename, - 'folder_id' => $folder_id, - 'mimetype' => $file->getClientOriginalExtension(), - 'filesize' => $filesize, - 'type' => $filetype, - 'thumbnail' => $thumbnail, - 'unique_id' => $this->get_unique_id(), - ]); - - return $new_file; - } - - /** - * Move item - * - * @param Request $request - */ - public function move_item(Request $request) - { - // Validate request - $validator = Validator::make($request->all(), [ - 'from_unique_id' => 'required|integer', - 'to_unique_id' => 'required|integer', - 'from_type' => 'required|string', - ]); - - // Return error - if ($validator->fails()) abort(400, 'Bad input'); - - // Get user id - $user_id = Auth::id(); - - if ($request->from_type === 'folder') { - - // Move folder - $item = FileManagerFolder::where('user_id', $user_id) - ->where('unique_id', $request->from_unique_id) - ->firstOrFail(); - - $item->parent_id = $request->to_unique_id; - - } else { - - // Move file under new folder - $item = FileManagerFile::where('user_id', $user_id) - ->where('unique_id', $request->from_unique_id) - ->firstOrFail(); - - $item->folder_id = $request->to_unique_id; - } - - $item->update(); - } - - /** - * Get file record - * - * @param $unique_id - * @return mixed - */ - public function get_file_detail($unique_id) - { - // Get user id - $user_id = Auth::id(); - - return FileManagerFile::where('user_id', $user_id)->where('unique_id', $unique_id)->firstOrFail(); - } - - /** - * Get file - * - * @param $filename - * @return mixed - */ - public function get_file($filename) - { - // Get user id - $user_id = Auth::id(); - - // Get file record - $file = FileManagerFile::withTrashed() - ->where('user_id', $user_id) - ->where('basename', $filename) - ->firstOrFail(); - - // Get file path - $path = storage_path() . '/app/file-manager/' . $file->basename; - - // Check if file exist - if (!File::exists($path)) abort(404); - - $file = File::get($path); - $type = File::mimeType($path); - $size = File::size($path); - - // Create response - $response = Response::make($file, 200); - $response->header("Content-Type", $type); - $response->header("Content-Disposition", 'attachment; filename=' . $filename); - $response->header("Content-Length", $size); - $response->header("Accept-Ranges", "bytes"); - $response->header("Content-Range", "bytes 0-" . $size . "/" . $size); - - return $response; - } - - /** - * Get image thumbnail - * - * @param $filename - * @return mixed - */ - public function get_thumbnail($filename) - { - // Get user id - $user_id = Auth::id(); - - // Get file record - $file = FileManagerFile::withTrashed() - ->where('user_id', $user_id) - ->where('thumbnail', $filename) - ->firstOrFail(); - - // Get file path - $path = storage_path() . '/app/file-manager/' . $file->getOriginal('thumbnail'); - - // Check if file exist - if (!File::exists($path)) abort(404); - - $file = File::get($path); - $type = File::mimeType($path); - - // Create response - $response = Response::make($file, 200); - $response->header("Content-Type", $type); - - return $response; - } - - /** - * Get unique id - * - * @return int - */ - private function get_unique_id(): int - { - // Get files and folders - $folders = FileManagerFolder::withTrashed()->get(); - $files = FileManagerFile::withTrashed()->get(); - - // Get last ids - $folders_unique = $folders->isEmpty() ? 0 : $folders->last()->unique_id; - $files_unique = $files->isEmpty() ? 0 : $files->last()->unique_id; - - // Count new unique id - $unique_id = $folders_unique > $files_unique ? $folders_unique + 1 : $files_unique + 1; - - return $unique_id; - } -} diff --git a/app/Http/Controllers/Sharing/FileSharingController.php b/app/Http/Controllers/Sharing/FileSharingController.php new file mode 100644 index 00000000..af703bd3 --- /dev/null +++ b/app/Http/Controllers/Sharing/FileSharingController.php @@ -0,0 +1,362 @@ +first(); + + if (!$shared) { + return view("index"); + } + + // Delete old access_token if exist + Cookie::queue('shared_access_token', '', -1); + + // Set cookies + if ($shared->protected) { + + // Set shared token + Cookie::queue('shared_token', $token, 43200); + } + + // Return page index + return view("index"); + } + + /** + * Check Password for protected item + * + * @param AuthenticateShareRequest $request + * @param $token + * @return array + */ + public function authenticate(AuthenticateShareRequest $request, $token) + { + // Get sharing record + $shared = Share::where(DB::raw('BINARY `token`'), $token)->firstOrFail(); + + // Check password + if (!Hash::check($request->password, $shared->password)) { + + abort(401, __('vuefilemanager.incorrect_password')); + } + + // Get owner of shared content + $user = User::find($shared->user_id); + + // Define scope + $scope = !is_null($shared->permission) ? $shared->permission : 'visitor'; + + // Generate token for visitor/editor + $access_token = $user->createToken('shared_access_token', [$scope])->accessToken; + + // Return authorize token with shared options + return response(new ShareResource($shared), 200) + ->cookie('shared_token', $shared->token, 43200) + ->cookie('shared_access_token', $access_token, 43200); + } + + /** + * Browse private folders + * + * @param Request $request + * @param $unique_id + * @return Collection + */ + public function get_private_folders(Request $request, $unique_id) + { + // Get sharing record + $shared = Share::where('token', $request->cookie('shared_token'))->firstOrFail(); + + // Check if user can get directory + Guardian::check_item_access($unique_id, $shared); + + // Get files and folders + list($folders, $files) = $this->get_items($unique_id, $shared); + + // Collect folders and files to single array + return collect([$folders, $files])->collapse(); + } + + /** + * Browse public folders + * + * @param $unique_id + * @return Collection + */ + public function get_public_folders($unique_id, $token) + { + // Get sharing record + $shared = Share::where(DB::raw('BINARY `token`'), $token)->firstOrFail(); + + // Abort if folder is protected + if ($shared->protected) { + abort(403, "Sorry, you don't have permission"); + } + + // Check if user can get directory + Guardian::check_item_access($unique_id, $shared); + + // Get files and folders + list($folders, $files) = $this->get_items($unique_id, $shared); + + // Set thumbnail links for public files + $files->map(function ($item) use ($token) { + $item->setPublicUrl($token); + }); + + // Collect folders and files to single array + return collect([$folders, $files])->collapse(); + } + + /** + * Get shared public file record + * + * @param $token + * @return mixed + */ + public function file_public($token) + { + // Get sharing record + $shared = Share::where(DB::raw('BINARY `token`'), $token)->firstOrFail(); + + // Abort if file is protected + if ($shared->protected) { + abort(403, "Sorry, you don't have permission"); + } + + // Get file + $file = FileManagerFile::where('user_id', $shared->user_id) + ->where('unique_id', $shared->item_id) + ->firstOrFail(['name', 'basename', 'thumbnail', 'type', 'filesize', 'mimetype']); + + // Set urls + $file->setPublicUrl($token); + + // Return record + return $file; + } + + /** + * Get shared private file record + * + * @param $token + * @return mixed + */ + public function file_private(Request $request) + { + // Get sharing record + $shared = Share::where('token', $request->cookie('shared_token'))->firstOrFail(); + + // Return record + return FileManagerFile::where('user_id', $shared->user_id) + ->where('unique_id', $shared->item_id) + ->firstOrFail(['name', 'basename', 'thumbnail', 'type', 'filesize', 'mimetype']); + } + + /** + * Get navigation tree + * + * @param Request $request + * @return array + */ + public function get_private_navigation_tree(Request $request) + { + // Get sharing record + $shared = get_shared($request->cookie('shared_token')); + + // Check if user can get directory + Guardian::check_item_access($shared->item_id, $shared); + + // Get folders + $folders = FileManagerFolder::with('folders:id,parent_id,unique_id,name') + ->where('parent_id', $shared->item_id) + ->where('user_id', $shared->user_id) + ->get(['id', 'parent_id', 'unique_id', 'name']); + + // Return folder tree + return [ + [ + 'unique_id' => $shared->item_id, + 'name' => __('vuefilemanager.home'), + 'location' => 'public', + 'folders' => $folders, + ] + ]; + } + + /** + * Get navigation tree + * + * @return array + */ + public function get_public_navigation_tree($token) + { + // Get sharing record + $shared = Share::where('token', $token)->firstOrFail(); + + // Check if user can get directory + Guardian::check_item_access($shared->item_id, $shared); + + // Get folders + $folders = FileManagerFolder::with('folders:id,parent_id,unique_id,name') + ->where('parent_id', $shared->item_id) + ->where('user_id', $shared->user_id) + ->get(['id', 'parent_id', 'unique_id', 'name']); + + // Return folder tree + return [ + [ + 'unique_id' => $shared->item_id, + 'name' => __('vuefilemanager.home'), + 'location' => 'public', + 'folders' => $folders, + ] + ]; + } + + /** + * Search private files + * + * @param Request $request + * @param $token + * @return Collection + */ + public function search_private(Request $request) + { + // Get shared + $shared = get_shared($request->cookie('shared_token')); + + // Search files id db + $searched_files = FileManagerFile::search($request->input('query')) + ->where('user_id', $shared->user_id) + ->get(); + $searched_folders = FileManagerFolder::search($request->input('query')) + ->where('user_id', $shared->user_id) + ->get(); + + // Get all children content + $foldersIds = FileManagerFolder::with('folders:id,parent_id,unique_id,name') + ->where('user_id', $shared->user_id) + ->where('parent_id', $shared->item_id) + ->get(); + + // Get accessible folders + $accessible_folder_ids = Arr::flatten([filter_folders_ids($foldersIds), $shared->item_id]); + + // Filter files to only accessible files + $files = $searched_files->filter(function ($file) use ($accessible_folder_ids) { + return in_array($file->folder_id, $accessible_folder_ids); + }); + + // Filter folders to only accessible folders + $folders = $searched_folders->filter(function ($folder) use ($accessible_folder_ids) { + return in_array($folder->unique_id, $accessible_folder_ids); + }); + + // Collect folders and files to single array + return collect([$folders, $files])->collapse(); + } + + /** + * Search public files + * + * @param Request $request + * @param $token + * @return Collection + */ + public function search_public(Request $request, $token) + { + // Get shared + $shared = get_shared($token); + + // Abort if folder is protected + if ($shared->protected) { + abort(403, "Sorry, you don't have permission"); + } + + // Search files id db + $searched_files = FileManagerFile::search($request->input('query')) + ->where('user_id', $shared->user_id) + ->get(); + $searched_folders = FileManagerFolder::search($request->input('query')) + ->where('user_id', $shared->user_id) + ->get(); + + // Get all children content + $foldersIds = FileManagerFolder::with('folders:id,parent_id,unique_id,name') + ->where('user_id', $shared->user_id) + ->where('parent_id', $shared->item_id) + ->get(); + + // Get accessible folders + $accessible_folder_ids = Arr::flatten([filter_folders_ids($foldersIds), $shared->item_id]); + + // Filter files + $files = $searched_files->filter(function ($file) use ($accessible_folder_ids, $token) { + + // Set public urls + $file->setPublicUrl($token); + + // check if item is in accessible folders + return in_array($file->folder_id, $accessible_folder_ids); + }); + + // Filter folders + $folders = $searched_folders->filter(function ($folder) use ($accessible_folder_ids) { + + // check if item is in accessible folders + return in_array($folder->unique_id, $accessible_folder_ids); + }); + + // Collect folders and files to single array + return collect([$folders, $files])->collapse(); + } + + /** + * Get folders and files + * + * @param $unique_id + * @param $shared + * @return array + */ + private function get_items($unique_id, $shared): array + { + $folders = FileManagerFolder::where('user_id', $shared->user_id) + ->where('parent_id', $unique_id) + ->get(); + + $files = FileManagerFile::where('user_id', $shared->user_id) + ->where('folder_id', $unique_id) + ->get(); + + return [$folders, $files]; + } +} diff --git a/app/Http/Controllers/User/AccountController.php b/app/Http/Controllers/User/AccountController.php new file mode 100644 index 00000000..f3f8d352 --- /dev/null +++ b/app/Http/Controllers/User/AccountController.php @@ -0,0 +1,109 @@ +where('id', Auth::id()) + ->first(); + + return [ + 'user' => $user->only(['name', 'email', 'avatar']), + 'favourites' => $user->favourites->makeHidden(['pivot']), + 'latest_uploads' => $user->latest_uploads->makeHidden(['user_id', 'basename']), + 'storage' => [ + 'used' => Metric::bytes($user->used_capacity)->format(), + 'capacity' => format_gigabytes(config('vuefilemanager.user_storage_capacity')), + 'percentage' => get_storage_fill_percentage($user->used_capacity, config('vuefilemanager.user_storage_capacity')), + ], + ]; + } + + /** + * Update user profile + * + * @param Request $request + * @return ResponseFactory|\Illuminate\Http\Response + */ + public function update_profile(Request $request) + { + // Validate request + $validator = Validator::make($request->all(), [ + 'avatar' => 'file', + 'name' => 'string', + 'value' => 'string', + ]); + + // Return error + if ($validator->fails()) abort(400, 'Bad input'); + + // Get user + $user = Auth::user(); + + if (is_demo($user->id)) { + return Demo::response_204(); + } + + if ($request->hasFile('avatar')) { + + // Update avatar + $avatar = store_avatar($request->file('avatar'), 'avatars'); + + // Update data + $user->update(['avatar' => $avatar]); + + } else { + + // Update text data + $user->update(make_single_input($request)); + } + + return response('Saved!', 204); + } + + /** + * Change user password + * + * @param Request $request + * @return ResponseFactory|\Illuminate\Http\Response + */ + public function change_password(Request $request) + { + // Validate request + $request->validate([ + 'password' => ['required', 'string', 'min:6', 'confirmed'], + ]); + + // Get user + $user = Auth::user(); + + if (is_demo($user->id)) { + return Demo::response_204(); + } + + // Change and store new password + $user->password = Hash::make($request->input('password')); + $user->save(); + + return response('Changed!', 204); + } +} diff --git a/app/Http/Controllers/UserAccountController.php b/app/Http/Controllers/UserAccountController.php deleted file mode 100644 index d0c75f81..00000000 --- a/app/Http/Controllers/UserAccountController.php +++ /dev/null @@ -1,177 +0,0 @@ -where('id', $user_id) - ->first(); - - return [ - 'user' => $user->only(['name', 'email', 'avatar']), - 'favourites' => $user->favourites->makeHidden(['pivot']), - 'latest_uploads' => $user->latest_uploads->makeHidden(['user_id', 'basename']), - 'storage' => [ - 'used' => Metric::bytes($user->used_capacity)->format(), - 'capacity' => format_gigabytes(config('vuefilemanager.user_storage_capacity')), - 'percentage' => get_storage_fill_percentage($user->used_capacity, config('vuefilemanager.user_storage_capacity')), - ], - ]; - } - - /** - * Get user folder tree - * - * @return array - */ - public function folder_tree() { - - $folders = FileManagerFolder::with('folders:id,parent_id,unique_id,name') - ->where('parent_id', 0) - ->where('user_id', Auth::id()) - ->get(['id', 'parent_id', 'unique_id', 'name']); - - return [ - [ - 'unique_id' => 0, - 'name' => __('vuefilemanager.home'), - 'location' => 'base', - 'folders' => $folders, - ] - ]; - } - - /** - * Update user profile - * - * @param Request $request - * @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response - */ - public function update_profile(Request $request) - { - // Validate request - $validator = Validator::make($request->all(), [ - 'avatar' => 'file', - '_method' => 'string', - 'name' => 'string', - 'value' => 'string', - ]); - - // Return error - if ($validator->fails()) abort(400, 'Bad input'); - - // Get user - $user = Auth::user(); - - if ($request->hasFile('avatar')) { - - // Update avatar - $avatar = store_avatar($request->file('avatar'), 'avatars'); - - // Update data - $user->update(['avatar' => $avatar]); - - } else { - - // Update text data - $user->update(make_single_input($request)); - } - - return response('Saved!', 200); - } - - /** - * Change user password - * - * @param Request $request - * @return array - */ - public function change_password(Request $request) - { - // Validate request - $request->validate([ - 'password' => ['required', 'string', 'min:6', 'confirmed'], - ]); - - // Get user - $user = Auth::user(); - - // Change and store new password - $user->password = Hash::make($request->input('password')); - $user->save(); - } - - /** - * Add folder to user favourites - * - * @param Request $request - * @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response - */ - public function add_to_favourites(Request $request) - { - // Validate request - $validator = Validator::make($request->all(), [ - 'unique_id' => 'required|integer', - ]); - - // Return error - if ($validator->fails()) abort(400, 'Bad input'); - - // Get user - $user = Auth::user(); - - // Add folder to user favourites - $user->favourites()->attach($request->unique_id); - - // Return updated favourites - return $user->favourites->makeHidden(['pivot']); - } - - /** - * Remove folder from user favourites - * - * @param Request $request - * @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response - */ - public function remove_from_favourites(Request $request) - { - // Validate request - $validator = Validator::make($request->all(), [ - 'unique_id' => 'required|integer', - ]); - - // Return error - if ($validator->fails()) abort(400, 'Bad input'); - - // Get user - $user = Auth::user(); - - // Remove folder from user favourites - $user->favourites()->detach($request->unique_id); - - // Return updated favourites - return $user->favourites->makeHidden(['pivot']); - } -} diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index a6faac49..9632d2ba 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -3,6 +3,8 @@ namespace App\Http; use App\Http\Middleware\CookieAuth; +use App\Http\Middleware\LastCheck; +use App\Http\Middleware\SharedAuth; use Illuminate\Foundation\Http\Kernel as HttpKernel; class Kernel extends HttpKernel @@ -40,6 +42,7 @@ class Kernel extends HttpKernel ], 'api' => [ + \App\Http\Middleware\EncryptCookies::class, //'throttle:60,1', \Illuminate\Routing\Middleware\SubstituteBindings::class, ], @@ -53,6 +56,8 @@ class Kernel extends HttpKernel * @var array */ protected $routeMiddleware = [ + 'auth.master' => CookieAuth::class, + 'auth.shared' => SharedAuth::class, 'auth' => \App\Http\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class, @@ -63,7 +68,8 @@ class Kernel extends HttpKernel 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, - 'auth.cookie' => CookieAuth::class, + 'scopes' => \Laravel\Passport\Http\Middleware\CheckScopes::class, + 'scope' => \Laravel\Passport\Http\Middleware\CheckForAnyScope::class, ]; /** @@ -77,6 +83,7 @@ class Kernel extends HttpKernel \Illuminate\Session\Middleware\StartSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, CookieAuth::class, + SharedAuth::class, \App\Http\Middleware\Authenticate::class, \Illuminate\Routing\Middleware\ThrottleRequests::class, \Illuminate\Session\Middleware\AuthenticateSession::class, diff --git a/app/Http/Middleware/CookieAuth.php b/app/Http/Middleware/CookieAuth.php index 3954664e..708f536c 100644 --- a/app/Http/Middleware/CookieAuth.php +++ b/app/Http/Middleware/CookieAuth.php @@ -3,6 +3,7 @@ namespace App\Http\Middleware; use Closure; +use Illuminate\Support\Facades\Auth; class CookieAuth { @@ -16,14 +17,12 @@ class CookieAuth public function handle($request, Closure $next) { if (!$request->bearerToken()) { - if ($request->hasCookie('token')) { + if ($request->hasCookie('access_token')) { - $token = $request->cookie('token'); + $access_token = $request->cookie('access_token'); - $request->headers->add(['Authorization' => 'Bearer ' . $token]); + $request->headers->add(['Authorization' => 'Bearer ' . $access_token]); - } else { - abort(401); } } return $next($request); diff --git a/app/Http/Middleware/SharedAuth.php b/app/Http/Middleware/SharedAuth.php new file mode 100644 index 00000000..27457a3e --- /dev/null +++ b/app/Http/Middleware/SharedAuth.php @@ -0,0 +1,29 @@ +bearerToken()) { + if ($request->hasCookie('shared_access_token')) { + + $shared_access_token = $request->cookie('shared_access_token'); + + $request->headers->add(['Authorization' => 'Bearer ' . $shared_access_token]); + + } + } + return $next($request); + } +} diff --git a/app/Http/Requests/FileFunctions/CreateFolderRequest.php b/app/Http/Requests/FileFunctions/CreateFolderRequest.php new file mode 100644 index 00000000..272697d0 --- /dev/null +++ b/app/Http/Requests/FileFunctions/CreateFolderRequest.php @@ -0,0 +1,32 @@ + 'required|integer', + 'name' => 'string', + ]; + } +} diff --git a/app/Http/Requests/FileFunctions/DeleteItemRequest.php b/app/Http/Requests/FileFunctions/DeleteItemRequest.php new file mode 100644 index 00000000..032767ec --- /dev/null +++ b/app/Http/Requests/FileFunctions/DeleteItemRequest.php @@ -0,0 +1,32 @@ + 'required|string', + 'force_delete' => 'required|boolean', + ]; + } +} diff --git a/app/Http/Requests/FileFunctions/MoveItemRequest.php b/app/Http/Requests/FileFunctions/MoveItemRequest.php new file mode 100644 index 00000000..407f4cb3 --- /dev/null +++ b/app/Http/Requests/FileFunctions/MoveItemRequest.php @@ -0,0 +1,32 @@ + 'required|integer', + 'from_type' => 'required|string', + ]; + } +} diff --git a/app/Http/Requests/FileFunctions/RenameItemRequest.php b/app/Http/Requests/FileFunctions/RenameItemRequest.php new file mode 100644 index 00000000..865fda41 --- /dev/null +++ b/app/Http/Requests/FileFunctions/RenameItemRequest.php @@ -0,0 +1,32 @@ + 'required|string', + 'type' => 'required|string', + ]; + } +} diff --git a/app/Http/Requests/FileFunctions/UploadRequest.php b/app/Http/Requests/FileFunctions/UploadRequest.php new file mode 100644 index 00000000..da425a6a --- /dev/null +++ b/app/Http/Requests/FileFunctions/UploadRequest.php @@ -0,0 +1,32 @@ + 'required|integer', + 'file' => 'required|file', + ]; + } +} diff --git a/app/Http/Requests/Share/AuthenticateShareRequest.php b/app/Http/Requests/Share/AuthenticateShareRequest.php new file mode 100644 index 00000000..0813ed7d --- /dev/null +++ b/app/Http/Requests/Share/AuthenticateShareRequest.php @@ -0,0 +1,20 @@ + 'required|string', + ]; + } +} diff --git a/app/Http/Requests/Share/CreateShareRequest.php b/app/Http/Requests/Share/CreateShareRequest.php new file mode 100644 index 00000000..0b34e4c0 --- /dev/null +++ b/app/Http/Requests/Share/CreateShareRequest.php @@ -0,0 +1,35 @@ + 'required|boolean', + 'unique_id' => 'required|integer', + 'type' => 'required|string', + 'permission' => 'string', + 'password' => 'string', + ]; + } +} diff --git a/app/Http/Requests/Share/UpdateShareRequest.php b/app/Http/Requests/Share/UpdateShareRequest.php new file mode 100644 index 00000000..3465c72d --- /dev/null +++ b/app/Http/Requests/Share/UpdateShareRequest.php @@ -0,0 +1,33 @@ + 'required|boolean', + 'permission' => 'nullable|string', + 'password' => 'string', + ]; + } +} diff --git a/app/Http/Resources/ShareResource.php b/app/Http/Resources/ShareResource.php new file mode 100644 index 00000000..cbd4a726 --- /dev/null +++ b/app/Http/Resources/ShareResource.php @@ -0,0 +1,34 @@ + [ + 'id' => (string)$this->id, + 'type' => 'shares', + 'attributes' => [ + 'permission' => $this->permission, + 'protected' => $this->protected, + 'item_id' => $this->item_id, + 'token' => $this->token, + 'link' => $this->link, + 'type' => $this->type, + 'created_at' => $this->created_at, + 'updated_at' => $this->updated_at, + ] + ] + ]; + } +} diff --git a/app/Http/Tools/Demo.php b/app/Http/Tools/Demo.php new file mode 100644 index 00000000..6e358080 --- /dev/null +++ b/app/Http/Tools/Demo.php @@ -0,0 +1,143 @@ +user() ? $request->user()->token()->scopes[0] : 'editor'; + $name = $request->has('name') ? $request->input('name') : 'New Folder'; + + return [ + 'user_id' => 1, + 'id' => random_int(1000, 9999), + 'parent_id' => random_int(1000, 9999), + 'name' => $name, + 'type' => 'folder', + 'unique_id' => random_int(1000, 9999), + 'user_scope' => $user_scope, + 'items' => '0', + 'updated_at' => Carbon::now()->format('j M Y \a\t H:i'), + 'created_at' => Carbon::now()->format('j M Y \a\t H:i'), + ]; + } + + /** + * Rename item name + * + * @param RenameItemRequest $request + * @param $unique_id + * @return mixed + */ + public static function rename_item($request, $unique_id) + { + // Get item + if ($request->type === 'folder') { + + $item = FileManagerFolder::where('unique_id', $unique_id) + ->where('user_id', 1) + ->first(); + + } else { + + $item = FileManagerFile::where('unique_id', $unique_id) + ->where('user_id', 1) + ->first(); + } + + if ($item) { + $item->name = $request->name; + + return $item; + + } else { + + return [ + 'unique_id' => $request->unique_id, + 'name' => $request->name, + 'type' => $request->type, + ]; + } + } + + /** + * Upload file + * + * @param $request + * @return array + * @throws \Exception + */ + public static function upload($request) + { + // Get user data + $user_scope = $request->user() ? $request->user()->token()->scopes[0] : 'editor'; + + // File + $file = $request->file('file'); + $filename = Str::random() . '-' . str_replace(' ', '', $file->getClientOriginalName()); + $thumbnail = null; + $filesize = $file->getSize(); + $filetype = get_file_type($file); + + return [ + 'id' => random_int(1000, 9999), + 'unique_id' => random_int(1000, 9999), + 'folder_id' => $request->parent_id, + 'thumbnail' => 'data:' . $request->file('file')->getMimeType() . ';base64, ' . base64_encode(file_get_contents($request->file('file'))), + 'name' => $file->getClientOriginalName(), + 'basename' => $filename, + 'mimetype' => $file->getClientOriginalExtension(), + 'filesize' => Metric::bytes($filesize)->format(), + 'type' => $filetype, + 'file_url' => 'https://vuefilemanager.hi5ve.digital/assets/vue-file-manager-preview.jpg', + 'user_scope' => $user_scope, + 'created_at' => Carbon::now()->format('j M Y \a\t H:i'), + 'updated_at' => Carbon::now()->format('j M Y \a\t H:i'), + ]; + } + + /** + * Return 204 status + * + * @return ResponseFactory|\Illuminate\Http\Response + */ + public static function response_204() { + + return response('Done!', 204); + } + + /** + * Return 204 status + * + * @return ResponseFactory|\Illuminate\Http\Response + */ + public static function favourites($user) { + + return $user->favourites->makeHidden(['pivot']); + } +} \ No newline at end of file diff --git a/app/Http/Tools/Editor.php b/app/Http/Tools/Editor.php new file mode 100644 index 00000000..1b5d5b85 --- /dev/null +++ b/app/Http/Tools/Editor.php @@ -0,0 +1,294 @@ +user()->token()->scopes[0] : 'editor'; + $name = $request->has('name') ? $request->input('name') : 'New Folder'; + $user_id = is_null($shared) ? Auth::id() : $shared->user_id; + + // Create folder + $folder = FileManagerFolder::create([ + 'parent_id' => $request->parent_id, + 'unique_id' => get_unique_id(), + 'user_scope' => $user_scope, + 'user_id' => $user_id, + 'type' => 'folder', + 'name' => $name, + ]); + + // Return new folder + return $folder; + } + + /** + * Rename item name + * + * @param RenameItemRequest $request + * @param $unique_id + * @param null $shared + * @return \Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Eloquent\Model + * @throws \Exception + */ + public static function rename_item($request, $unique_id, $shared = null) + { + // Get user id + $user_id = is_null($shared) ? Auth::id() : $shared->user_id; + + // Get item + $item = get_item($request->type, $unique_id, $user_id); + + // Rename item + $item->update([ + 'name' => $request->name + ]); + + // Return updated item + return $item; + } + + /** + * Delete file or folder + * + * @param $request + * @param $unique_id + * @param null $shared + * @throws \Exception + */ + public static function delete_item($request, $unique_id, $shared = null) + { + // Get user id + $user = is_null($shared) ? Auth::user() : User::findOrFail($shared->user_id); + + // Delete folder + if ($request->type === 'folder') { + + // Get folder + $folder = FileManagerFolder::withTrashed() + ->with(['folders']) + ->where('user_id', $user->id) + ->where('unique_id', $unique_id) + ->first(); + + // Get folder shared record + $shared = Share::where('user_id', $user->id) + ->where('type', '=', 'folder') + ->where('item_id', $unique_id) + ->first(); + + // Delete folder shared record + if ($shared) { + $shared->delete(); + } + + // Force delete children files + if ($request->force_delete) { + + // Get children folder ids + $child_folders = filter_folders_ids($folder->trashed_folders, 'unique_id'); + + // Get children files + $files = FileManagerFile::onlyTrashed() + ->where('user_id', $user->id) + ->whereIn('folder_id', Arr::flatten([$unique_id, $child_folders])) + ->get(); + + // Remove all children files + foreach ($files as $file) { + + // Delete file + Storage::disk('local')->delete('/file-manager/' . $file->basename); + + // Delete thumbnail if exist + if (!is_null($file->thumbnail)) Storage::disk('local')->delete('/file-manager/' . $file->getOriginal('thumbnail')); + + // Delete file permanently + $file->forceDelete(); + } + + // Delete folder record + $folder->forceDelete(); + } + + // Soft delete items + if (!$request->force_delete) { + + // Remove folder from user favourites + $user->favourites()->detach($unique_id); + + // Soft delete folder record + $folder->delete(); + } + } + + // Delete item + if ($request->type !== 'folder') { + + // Get file + $file = FileManagerFile::withTrashed() + ->where('user_id', $user->id) + ->where('unique_id', $unique_id) + ->first(); + + // Get folder shared record + $shared = Share::where('user_id', $user->id) + ->where('type', '=', 'file') + ->where('item_id', $unique_id) + ->first(); + + // Delete file shared record + if ($shared) { + $shared->delete(); + } + + // Force delete file + if ($request->force_delete) { + + // Delete file + Storage::disk('local')->delete('/file-manager/' . $file->basename); + + // Delete thumbnail if exist + if ($file->thumbnail) Storage::disk('local')->delete('/file-manager/' . $file->getOriginal('thumbnail')); + + // Delete file permanently + $file->forceDelete(); + } + + // Soft delete file + if (!$request->force_delete) { + + // Soft delete file + $file->delete(); + } + } + } + + /** + * Upload file + * + * @param $request + * @param null $shared + * @return FileManagerFile|\Illuminate\Database\Eloquent\Model + * @throws \Exception + */ + public static function upload($request, $shared = null) + { + // Get user data + $user_scope = is_null($shared) ? $request->user()->token()->scopes[0] : 'editor'; + $user_id = is_null($shared) ? Auth::id() : $shared->user_id; + + // Get parent_id from request + $folder_id = $request->parent_id === 0 ? 0 : $request->parent_id; + $file = $request->file('file'); + + // File + $filename = Str::random() . '-' . str_replace(' ', '', $file->getClientOriginalName()); + $filetype = get_file_type($file); + $filesize = $file->getSize(); + $directory = 'file-manager'; + $thumbnail = null; + + // create directory if not exist + if (!Storage::disk('local')->exists($directory)) { + Storage::disk('local')->makeDirectory($directory); + } + + // Store to disk + Storage::disk('local')->putFileAs($directory, $file, $filename, 'public'); + + // Create image thumbnail + if ($filetype == 'image') { + + // Get thumbnail name + $thumbnail = 'thumbnail-' . $filename; + + // Create intervention image + $image = Image::make($file->getRealPath())->orientate(); + + // Resize image + $image->resize(256, null, function ($constraint) { + $constraint->aspectRatio(); + })->stream(); + + // Store thumbnail to disk + Storage::disk('local')->put($directory . '/' . $thumbnail, $image); + } + + // Store file + $options = [ + 'name' => pathinfo($file->getClientOriginalName())['filename'], + 'mimetype' => $file->getClientOriginalExtension(), + 'unique_id' => get_unique_id(), + 'user_scope' => $user_scope, + 'folder_id' => $folder_id, + 'thumbnail' => $thumbnail, + 'basename' => $filename, + 'filesize' => $filesize, + 'type' => $filetype, + 'user_id' => $user_id, + ]; + + // Return new file + return FileManagerFile::create($options); + } + + /** + * Move folder or file to new location + * + * @param $request + * @param $unique_id + * @param null $shared + */ + public static function move($request, $unique_id, $shared = null) + { + // Get user id + $user_id = is_null($shared) ? Auth::id() : $shared->user_id; + + if ($request->from_type === 'folder') { + + // Move folder + $item = FileManagerFolder::where('user_id', $user_id) + ->where('unique_id', $unique_id) + ->firstOrFail(); + + $item->update([ + 'parent_id' => $request->to_unique_id + ]); + + } else { + + // Move file under new folder + $item = FileManagerFile::where('user_id', $user_id) + ->where('unique_id', $unique_id) + ->firstOrFail(); + + $item->update([ + 'folder_id' => $request->to_unique_id + ]); + } + } +} \ No newline at end of file diff --git a/app/Http/Tools/Guardian.php b/app/Http/Tools/Guardian.php new file mode 100644 index 00000000..0cef6609 --- /dev/null +++ b/app/Http/Tools/Guardian.php @@ -0,0 +1,42 @@ +where('user_id', $shared->user_id) + ->where('parent_id', $shared->item_id) + ->get(); + + // Get all authorized parent folders by shared folder as root of tree + $accessible_folder_ids = Arr::flatten([filter_folders_ids($foldersIds), $shared->item_id]); + + // Check user access + if ( is_array($requested_id) ) { + foreach ($requested_id as $id) { + if (!in_array($id, $accessible_folder_ids)) + abort(403); + } + } + + if (! is_array($requested_id)) { + if (! in_array($requested_id, $accessible_folder_ids)) + abort(403); + } + } +} \ No newline at end of file diff --git a/app/Http/helpers.php b/app/Http/helpers.php index 7adbaf47..61abc910 100644 --- a/app/Http/helpers.php +++ b/app/Http/helpers.php @@ -1,11 +1,93 @@ where('user_id', $user_id) + ->firstOrFail(); + } + + // Return file item + return FileManagerFile::where('unique_id', $unique_id) + ->where('user_id', $user_id) + ->firstOrFail(); +} + +/** + * Get shared token + * + * @param $token + * @return \Illuminate\Database\Eloquent\Builder|Model + */ +function get_shared($token) { + + return Share::where(DB::raw('BINARY `token`'), $token) + ->firstOrFail(); +} + +/** + * Check if shared permission is editor + * + * @param $shared + * @return bool + */ +function is_editor($shared) { + + return $shared->permission === 'editor'; +} + +/** + * Get unique id + * + * @return int + */ +function get_unique_id(): int +{ + // Get files and folders + $folders = FileManagerFolder::withTrashed()->get(); + $files = FileManagerFile::withTrashed()->get(); + + // Get last ids + $folders_unique = $folders->isEmpty() ? 0 : $folders->last()->unique_id; + $files_unique = $files->isEmpty() ? 0 : $files->last()->unique_id; + + // Count new unique id + $unique_id = $folders_unique > $files_unique ? $folders_unique + 1 : $files_unique + 1; + + return $unique_id; +} /** * Store user avatar to storage @@ -102,8 +184,7 @@ function get_storage_fill_percentage($used, $capacity) */ function user_storage_percentage() { - - $user = \Illuminate\Support\Facades\Auth::user(); + $user = Auth::user(); return get_storage_fill_percentage($user->used_capacity, config('vuefilemanager.user_storage_capacity')); } diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php index 90ce09b8..0a41da0d 100644 --- a/app/Providers/AuthServiceProvider.php +++ b/app/Providers/AuthServiceProvider.php @@ -27,5 +27,17 @@ class AuthServiceProvider extends ServiceProvider $this->registerPolicies(); Passport::routes(); + + Passport::tokensCan([ + 'master' => 'Master', + 'editor' => 'Editor', + 'visitor' => 'Visitor', + ]); + + Passport::setDefaultScope([ + 'master', + 'editor', + 'visitor', + ]); } } diff --git a/app/Share.php b/app/Share.php new file mode 100644 index 00000000..9780b734 --- /dev/null +++ b/app/Share.php @@ -0,0 +1,51 @@ + $this->attributes['token']]); + } +} diff --git a/app/User.php b/app/User.php index a6ba92c2..5454aae4 100644 --- a/app/User.php +++ b/app/User.php @@ -12,6 +12,47 @@ use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Notification; use Laravel\Passport\HasApiTokens; +/** + * App\User + * + * @property int $id + * @property string $name + * @property string $email + * @property \Illuminate\Support\Carbon|null $email_verified_at + * @property string $password + * @property \Illuminate\Contracts\Routing\UrlGenerator|string $avatar + * @property string|null $remember_token + * @property \Illuminate\Support\Carbon|null $created_at + * @property \Illuminate\Support\Carbon|null $updated_at + * @property-read \Illuminate\Database\Eloquent\Collection|\Laravel\Passport\Client[] $clients + * @property-read int|null $clients_count + * @property-read \Illuminate\Database\Eloquent\Collection|\App\FileManagerFolder[] $favourites + * @property-read int|null $favourites_count + * @property-read \Illuminate\Database\Eloquent\Collection|\App\FileManagerFile[] $files + * @property-read int|null $files_count + * @property-read \Illuminate\Database\Eloquent\Collection|\App\FileManagerFile[] $files_with_trashed + * @property-read int|null $files_with_trashed_count + * @property-read mixed $used_capacity + * @property-read \Illuminate\Database\Eloquent\Collection|\App\FileManagerFile[] $latest_uploads + * @property-read int|null $latest_uploads_count + * @property-read \Illuminate\Notifications\DatabaseNotificationCollection|\Illuminate\Notifications\DatabaseNotification[] $notifications + * @property-read int|null $notifications_count + * @property-read \Illuminate\Database\Eloquent\Collection|\Laravel\Passport\Token[] $tokens + * @property-read int|null $tokens_count + * @method static \Illuminate\Database\Eloquent\Builder|\App\User newModelQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\User newQuery() + * @method static \Illuminate\Database\Eloquent\Builder|\App\User query() + * @method static \Illuminate\Database\Eloquent\Builder|\App\User whereAvatar($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\User whereCreatedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\User whereEmail($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\User whereEmailVerifiedAt($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\User whereId($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\User whereName($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\User wherePassword($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\User whereRememberToken($value) + * @method static \Illuminate\Database\Eloquent\Builder|\App\User whereUpdatedAt($value) + * @mixin \Eloquent + */ class User extends Authenticatable { use HasApiTokens, Notifiable; diff --git a/composer.json b/composer.json index 0499c2f8..b6462300 100644 --- a/composer.json +++ b/composer.json @@ -21,6 +21,7 @@ "teamtnt/laravel-scout-tntsearch-driver": "^7.2" }, "require-dev": { + "barryvdh/laravel-ide-helper": "^2.7", "facade/ignition": "^1.4", "fzaninotto/faker": "^1.4", "mockery/mockery": "^1.0", diff --git a/composer.lock b/composer.lock index 77d3e9b0..6f48a29c 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": "cb7238478d8414abefd514b51afc8993", + "content-hash": "3e3a0dfbec5dd01d1b88b57db1c18bbf", "packages": [ { "name": "asm89/stack-cors", @@ -238,16 +238,16 @@ }, { "name": "doctrine/dbal", - "version": "v2.10.1", + "version": "2.10.2", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "c2b8e6e82732a64ecde1cddf9e1e06cb8556e3d8" + "reference": "aab745e7b6b2de3b47019da81e7225e14dcfdac8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/c2b8e6e82732a64ecde1cddf9e1e06cb8556e3d8", - "reference": "c2b8e6e82732a64ecde1cddf9e1e06cb8556e3d8", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/aab745e7b6b2de3b47019da81e7225e14dcfdac8", + "reference": "aab745e7b6b2de3b47019da81e7225e14dcfdac8", "shasum": "" }, "require": { @@ -259,9 +259,11 @@ "require-dev": { "doctrine/coding-standard": "^6.0", "jetbrains/phpstorm-stubs": "^2019.1", - "phpstan/phpstan": "^0.11.3", + "nikic/php-parser": "^4.4", + "phpstan/phpstan": "^0.12", "phpunit/phpunit": "^8.4.1", - "symfony/console": "^2.0.5|^3.0|^4.0|^5.0" + "symfony/console": "^2.0.5|^3.0|^4.0|^5.0", + "vimeo/psalm": "^3.11" }, "suggest": { "symfony/console": "For helpful console commands such as SQL execution and import of files." @@ -326,7 +328,7 @@ "sqlserver", "sqlsrv" ], - "time": "2020-01-04T12:56:21+00:00" + "time": "2020-04-20T17:19:26+00:00" }, { "name": "doctrine/event-manager", @@ -751,16 +753,16 @@ }, { "name": "fruitcake/laravel-cors", - "version": "v1.0.5", + "version": "v1.0.6", "source": { "type": "git", "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "0e0500133dbb6325266133dd72f040617c9cdbd0" + "reference": "1d127dbec313e2e227d65e0c483765d8d7559bf6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/0e0500133dbb6325266133dd72f040617c9cdbd0", - "reference": "0e0500133dbb6325266133dd72f040617c9cdbd0", + "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/1d127dbec313e2e227d65e0c483765d8d7559bf6", + "reference": "1d127dbec313e2e227d65e0c483765d8d7559bf6", "shasum": "" }, "require": { @@ -815,7 +817,7 @@ "crossdomain", "laravel" ], - "time": "2020-03-11T21:05:07+00:00" + "time": "2020-04-28T08:47:37+00:00" }, { "name": "gabrielelana/byte-units", @@ -871,23 +873,24 @@ }, { "name": "guzzlehttp/guzzle", - "version": "6.5.2", + "version": "6.5.3", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "43ece0e75098b7ecd8d13918293029e555a50f82" + "reference": "aab4ebd862aa7d04f01a4b51849d657db56d882e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/43ece0e75098b7ecd8d13918293029e555a50f82", - "reference": "43ece0e75098b7ecd8d13918293029e555a50f82", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/aab4ebd862aa7d04f01a4b51849d657db56d882e", + "reference": "aab4ebd862aa7d04f01a4b51849d657db56d882e", "shasum": "" }, "require": { "ext-json": "*", "guzzlehttp/promises": "^1.0", "guzzlehttp/psr7": "^1.6.1", - "php": ">=5.5" + "php": ">=5.5", + "symfony/polyfill-intl-idn": "^1.11" }, "require-dev": { "ext-curl": "*", @@ -895,7 +898,6 @@ "psr/log": "^1.1" }, "suggest": { - "ext-intl": "Required for Internationalized Domain Name (IDN) support", "psr/log": "Required for using the Log middleware" }, "type": "library", @@ -934,7 +936,7 @@ "rest", "web service" ], - "time": "2019-12-23T11:57:10+00:00" + "time": "2020-04-18T10:38:46+00:00" }, { "name": "guzzlehttp/promises", @@ -1130,16 +1132,16 @@ }, { "name": "laminas/laminas-diactoros", - "version": "2.2.3", + "version": "2.3.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-diactoros.git", - "reference": "b596c7141f5093aefec94cb5e8745212299e290f" + "reference": "5ab185dba63ec655a2380c97711b09adc7061f89" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-diactoros/zipball/b596c7141f5093aefec94cb5e8745212299e290f", - "reference": "b596c7141f5093aefec94cb5e8745212299e290f", + "url": "https://api.github.com/repos/laminas/laminas-diactoros/zipball/5ab185dba63ec655a2380c97711b09adc7061f89", + "reference": "5ab185dba63ec655a2380c97711b09adc7061f89", "shasum": "" }, "require": { @@ -1170,9 +1172,12 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1.x-dev", - "dev-develop": "2.2.x-dev", - "dev-release-1.8": "1.8.x-dev" + "dev-master": "2.3.x-dev", + "dev-develop": "2.4.x-dev" + }, + "laminas": { + "config-provider": "Laminas\\Diactoros\\ConfigProvider", + "module": "Laminas\\Diactoros" } }, "autoload": { @@ -1210,7 +1215,7 @@ "psr", "psr-7" ], - "time": "2020-03-29T12:30:54+00:00" + "time": "2020-04-27T17:07:01+00:00" }, { "name": "laminas/laminas-zendframework-bridge", @@ -1266,16 +1271,17 @@ }, { "name": "laravel/framework", - "version": "v6.18.5", + + "version": "v6.18.11", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "5b7f541a3c075b394793f4d7884a24ad6f00288a" + "reference": "73bc10bb23aab7539c8ffae6d5dc3c4b277de557" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/5b7f541a3c075b394793f4d7884a24ad6f00288a", - "reference": "5b7f541a3c075b394793f4d7884a24ad6f00288a", + "url": "https://api.github.com/repos/laravel/framework/zipball/73bc10bb23aab7539c8ffae6d5dc3c4b277de557", + "reference": "73bc10bb23aab7539c8ffae6d5dc3c4b277de557", "shasum": "" }, "require": { @@ -1408,20 +1414,20 @@ "framework", "laravel" ], - "time": "2020-04-07T18:54:55+00:00" + "time": "2020-04-28T15:18:58+00:00" }, { "name": "laravel/passport", - "version": "v8.4.3", + "version": "v8.4.4", "source": { "type": "git", "url": "https://github.com/laravel/passport.git", - "reference": "edb9ccb9993ca98c7347da2fae20e1b8b4895f31" + "reference": "dd4b1d96eb1fe556a6eb2c55c942360364aa02c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/passport/zipball/edb9ccb9993ca98c7347da2fae20e1b8b4895f31", - "reference": "edb9ccb9993ca98c7347da2fae20e1b8b4895f31", + "url": "https://api.github.com/repos/laravel/passport/zipball/dd4b1d96eb1fe556a6eb2c55c942360364aa02c1", + "reference": "dd4b1d96eb1fe556a6eb2c55c942360364aa02c1", "shasum": "" }, "require": { @@ -1481,7 +1487,7 @@ "oauth", "passport" ], - "time": "2020-03-31T15:48:43+00:00" + "time": "2020-04-21T19:24:59+00:00" }, { "name": "laravel/scout", @@ -1669,16 +1675,16 @@ }, { "name": "league/commonmark", - "version": "1.3.3", + "version": "1.4.2", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "5a67afc2572ec6d430526cdc9c637ef124812389" + "reference": "9e780d972185e4f737a03bade0fd34a9e67bbf31" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/5a67afc2572ec6d430526cdc9c637ef124812389", - "reference": "5a67afc2572ec6d430526cdc9c637ef124812389", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/9e780d972185e4f737a03bade0fd34a9e67bbf31", + "reference": "9e780d972185e4f737a03bade0fd34a9e67bbf31", "shasum": "" }, "require": { @@ -1696,7 +1702,7 @@ "github/gfm": "0.29.0", "michelf/php-markdown": "~1.4", "mikehaertl/php-shellcommand": "^1.4", - "phpstan/phpstan-shim": "^0.11.5", + "phpstan/phpstan": "^0.12", "phpunit/phpunit": "^7.5", "scrutinizer/ocular": "^1.5", "symfony/finder": "^4.2" @@ -1739,7 +1745,7 @@ "md", "parser" ], - "time": "2020-04-05T16:01:48+00:00" + "time": "2020-04-24T13:39:56+00:00" }, { "name": "league/event", @@ -1793,16 +1799,16 @@ }, { "name": "league/flysystem", - "version": "1.0.66", + "version": "1.0.67", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "021569195e15f8209b1c4bebb78bd66aa4f08c21" + "reference": "5b1f36c75c4bdde981294c2a0ebdb437ee6f275e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/021569195e15f8209b1c4bebb78bd66aa4f08c21", - "reference": "021569195e15f8209b1c4bebb78bd66aa4f08c21", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/5b1f36c75c4bdde981294c2a0ebdb437ee6f275e", + "reference": "5b1f36c75c4bdde981294c2a0ebdb437ee6f275e", "shasum": "" }, "require": { @@ -1873,20 +1879,20 @@ "sftp", "storage" ], - "time": "2020-03-17T18:58:12+00:00" + "time": "2020-04-16T13:21:26+00:00" }, { "name": "league/oauth2-server", - "version": "8.0.0", + "version": "8.1.0", "source": { "type": "git", "url": "https://github.com/thephpleague/oauth2-server.git", - "reference": "e1dc4d708c56fcfa205be4bb1862b6d525b4baac" + "reference": "b53d324f774eb782250f7d8973811a33a75ecdef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/oauth2-server/zipball/e1dc4d708c56fcfa205be4bb1862b6d525b4baac", - "reference": "e1dc4d708c56fcfa205be4bb1862b6d525b4baac", + "url": "https://api.github.com/repos/thephpleague/oauth2-server/zipball/b53d324f774eb782250f7d8973811a33a75ecdef", + "reference": "b53d324f774eb782250f7d8973811a33a75ecdef", "shasum": "" }, "require": { @@ -1895,7 +1901,7 @@ "ext-openssl": "*", "lcobucci/jwt": "^3.3.1", "league/event": "^2.2", - "php": ">=7.1.0", + "php": ">=7.2.0", "psr/http-message": "^1.0.1" }, "replace": { @@ -1903,11 +1909,11 @@ "lncd/oauth2": "*" }, "require-dev": { - "phpstan/phpstan": "^0.11.8", + "laminas/laminas-diactoros": "^2.3.0", + "phpstan/phpstan": "^0.11.19", "phpstan/phpstan-phpunit": "^0.11.2", - "phpunit/phpunit": "^7.5.13 || ^8.2.3", - "roave/security-advisories": "dev-master", - "zendframework/zend-diactoros": "^2.1.2" + "phpunit/phpunit": "^8.5.4 || ^9.1.3", + "roave/security-advisories": "dev-master" }, "type": "library", "autoload": { @@ -1950,7 +1956,7 @@ "secure", "server" ], - "time": "2019-07-13T18:58:26+00:00" + "time": "2020-04-29T22:14:38+00:00" }, { "name": "monolog/monolog", @@ -2035,21 +2041,22 @@ }, { "name": "nesbot/carbon", - "version": "2.32.2", + "version": "2.33.0", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "f10e22cf546704fab1db4ad4b9dedbc5c797a0dc" + "reference": "4d93cb95a80d9ffbff4018fe58ae3b7dd7f4b99b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/f10e22cf546704fab1db4ad4b9dedbc5c797a0dc", - "reference": "f10e22cf546704fab1db4ad4b9dedbc5c797a0dc", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/4d93cb95a80d9ffbff4018fe58ae3b7dd7f4b99b", + "reference": "4d93cb95a80d9ffbff4018fe58ae3b7dd7f4b99b", "shasum": "" }, "require": { "ext-json": "*", "php": "^7.1.8 || ^8.0", + "symfony/polyfill-mbstring": "^1.0", "symfony/translation": "^3.4 || ^4.0 || ^5.0" }, "require-dev": { @@ -2102,20 +2109,20 @@ "datetime", "time" ], - "time": "2020-03-31T13:43:19+00:00" + "time": "2020-04-20T15:05:43+00:00" }, { "name": "nikic/php-parser", - "version": "v4.3.0", + "version": "v4.4.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "9a9981c347c5c49d6dfe5cf826bb882b824080dc" + "reference": "bd43ec7152eaaab3bd8c6d0aa95ceeb1df8ee120" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/9a9981c347c5c49d6dfe5cf826bb882b824080dc", - "reference": "9a9981c347c5c49d6dfe5cf826bb882b824080dc", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/bd43ec7152eaaab3bd8c6d0aa95ceeb1df8ee120", + "reference": "bd43ec7152eaaab3bd8c6d0aa95ceeb1df8ee120", "shasum": "" }, "require": { @@ -2154,7 +2161,7 @@ "parser", "php" ], - "time": "2019-11-08T13:50:10+00:00" + "time": "2020-04-10T16:34:50+00:00" }, { "name": "nyholm/psr7", @@ -3030,7 +3037,7 @@ }, { "name": "symfony/console", - "version": "v4.4.7", + "version": "v4.4.8", "source": { "type": "git", "url": "https://github.com/symfony/console.git", @@ -3106,7 +3113,7 @@ }, { "name": "symfony/css-selector", - "version": "v5.0.7", + "version": "v5.0.8", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", @@ -3159,7 +3166,7 @@ }, { "name": "symfony/debug", - "version": "v4.4.7", + "version": "v4.4.8", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", @@ -3215,7 +3222,7 @@ }, { "name": "symfony/error-handler", - "version": "v4.4.7", + "version": "v4.4.8", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", @@ -3271,7 +3278,7 @@ }, { "name": "symfony/event-dispatcher", - "version": "v4.4.7", + "version": "v4.4.8", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", @@ -3399,7 +3406,7 @@ }, { "name": "symfony/finder", - "version": "v4.4.7", + "version": "v4.4.8", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", @@ -3448,16 +3455,16 @@ }, { "name": "symfony/http-foundation", - "version": "v4.4.7", + "version": "v4.4.8", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "62f92509c9abfd1f73e17b8cf1b72c0bdac6611b" + "reference": "ec5bd254c223786f5fa2bb49a1e705c1b8e7cee2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/62f92509c9abfd1f73e17b8cf1b72c0bdac6611b", - "reference": "62f92509c9abfd1f73e17b8cf1b72c0bdac6611b", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ec5bd254c223786f5fa2bb49a1e705c1b8e7cee2", + "reference": "ec5bd254c223786f5fa2bb49a1e705c1b8e7cee2", "shasum": "" }, "require": { @@ -3499,20 +3506,20 @@ ], "description": "Symfony HttpFoundation Component", "homepage": "https://symfony.com", - "time": "2020-03-30T14:07:33+00:00" + "time": "2020-04-18T20:40:08+00:00" }, { "name": "symfony/http-kernel", - "version": "v4.4.7", + "version": "v4.4.8", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "f356a489e51856b99908005eb7f2c51a1dfc95dc" + "reference": "1799a6c01f0db5851f399151abdb5d6393fec277" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/f356a489e51856b99908005eb7f2c51a1dfc95dc", - "reference": "f356a489e51856b99908005eb7f2c51a1dfc95dc", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/1799a6c01f0db5851f399151abdb5d6393fec277", + "reference": "1799a6c01f0db5851f399151abdb5d6393fec277", "shasum": "" }, "require": { @@ -3589,20 +3596,20 @@ ], "description": "Symfony HttpKernel Component", "homepage": "https://symfony.com", - "time": "2020-03-30T14:59:15+00:00" + "time": "2020-04-28T18:47:42+00:00" }, { "name": "symfony/mime", - "version": "v5.0.7", + "version": "v5.0.8", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "481b7d6da88922fb1e0d86a943987722b08f3955" + "reference": "5d6c81c39225a750f3f43bee15f03093fb9aaa0b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/481b7d6da88922fb1e0d86a943987722b08f3955", - "reference": "481b7d6da88922fb1e0d86a943987722b08f3955", + "url": "https://api.github.com/repos/symfony/mime/zipball/5d6c81c39225a750f3f43bee15f03093fb9aaa0b", + "reference": "5d6c81c39225a750f3f43bee15f03093fb9aaa0b", "shasum": "" }, "require": { @@ -3651,7 +3658,7 @@ "mime", "mime-type" ], - "time": "2020-03-27T16:56:45+00:00" + "time": "2020-04-17T03:29:44+00:00" }, { "name": "symfony/polyfill-ctype", @@ -4006,16 +4013,16 @@ }, { "name": "symfony/process", - "version": "v4.4.7", + "version": "v4.4.8", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "3e40e87a20eaf83a1db825e1fa5097ae89042db3" + "reference": "4b6a9a4013baa65d409153cbb5a895bf093dc7f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/3e40e87a20eaf83a1db825e1fa5097ae89042db3", - "reference": "3e40e87a20eaf83a1db825e1fa5097ae89042db3", + "url": "https://api.github.com/repos/symfony/process/zipball/4b6a9a4013baa65d409153cbb5a895bf093dc7f4", + "reference": "4b6a9a4013baa65d409153cbb5a895bf093dc7f4", "shasum": "" }, "require": { @@ -4051,7 +4058,7 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2020-03-27T16:54:36+00:00" + "time": "2020-04-15T15:56:18+00:00" }, { "name": "symfony/psr-http-message-bridge", @@ -4119,16 +4126,16 @@ }, { "name": "symfony/routing", - "version": "v4.4.7", + "version": "v4.4.8", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "0f562fa613e288d7dbae6c63abbc9b33ed75a8f8" + "reference": "67b4e1f99c050cbc310b8f3d0dbdc4b0212c052c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/0f562fa613e288d7dbae6c63abbc9b33ed75a8f8", - "reference": "0f562fa613e288d7dbae6c63abbc9b33ed75a8f8", + "url": "https://api.github.com/repos/symfony/routing/zipball/67b4e1f99c050cbc310b8f3d0dbdc4b0212c052c", + "reference": "67b4e1f99c050cbc310b8f3d0dbdc4b0212c052c", "shasum": "" }, "require": { @@ -4191,7 +4198,7 @@ "uri", "url" ], - "time": "2020-03-30T11:41:10+00:00" + "time": "2020-04-21T19:59:53+00:00" }, { "name": "symfony/service-contracts", @@ -4253,16 +4260,16 @@ }, { "name": "symfony/translation", - "version": "v4.4.7", + "version": "v4.4.8", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "4e54d336f2eca5facad449d0b0118bb449375b76" + "reference": "8272bbd2b7e220ef812eba2a2b30068a5c64b191" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/4e54d336f2eca5facad449d0b0118bb449375b76", - "reference": "4e54d336f2eca5facad449d0b0118bb449375b76", + "url": "https://api.github.com/repos/symfony/translation/zipball/8272bbd2b7e220ef812eba2a2b30068a5c64b191", + "reference": "8272bbd2b7e220ef812eba2a2b30068a5c64b191", "shasum": "" }, "require": { @@ -4325,7 +4332,7 @@ ], "description": "Symfony Translation Component", "homepage": "https://symfony.com", - "time": "2020-03-27T16:54:36+00:00" + "time": "2020-04-12T16:45:36+00:00" }, { "name": "symfony/translation-contracts", @@ -4386,16 +4393,16 @@ }, { "name": "symfony/var-dumper", - "version": "v4.4.7", + "version": "v4.4.8", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "5a0c2d93006131a36cf6f767d10e2ca8333b0d4a" + "reference": "c587e04ce5d1aa62d534a038f574d9a709e814cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/5a0c2d93006131a36cf6f767d10e2ca8333b0d4a", - "reference": "5a0c2d93006131a36cf6f767d10e2ca8333b0d4a", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/c587e04ce5d1aa62d534a038f574d9a709e814cf", + "reference": "c587e04ce5d1aa62d534a038f574d9a709e814cf", "shasum": "" }, "require": { @@ -4458,7 +4465,7 @@ "debug", "dump" ], - "time": "2020-03-27T16:54:36+00:00" + "time": "2020-04-12T16:14:02+00:00" }, { "name": "teamtnt/laravel-scout-tntsearch-driver", @@ -4634,16 +4641,16 @@ }, { "name": "vlucas/phpdotenv", - "version": "v3.6.2", + "version": "v3.6.3", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "786a947e57086cf236cefdee80784634224b99fa" + "reference": "1b3103013797f04521c6cae5560f604649484066" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/786a947e57086cf236cefdee80784634224b99fa", - "reference": "786a947e57086cf236cefdee80784634224b99fa", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1b3103013797f04521c6cae5560f604649484066", + "reference": "1b3103013797f04521c6cae5560f604649484066", "shasum": "" }, "require": { @@ -4693,10 +4700,431 @@ "env", "environment" ], - "time": "2020-03-27T23:36:02+00:00" + "time": "2020-04-12T15:18:03+00:00" } ], "packages-dev": [ + { + "name": "barryvdh/laravel-ide-helper", + "version": "v2.7.0", + "source": { + "type": "git", + "url": "https://github.com/barryvdh/laravel-ide-helper.git", + "reference": "5f677edc14bdcfdcac36633e6eea71b2728a4dbc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/5f677edc14bdcfdcac36633e6eea71b2728a4dbc", + "reference": "5f677edc14bdcfdcac36633e6eea71b2728a4dbc", + "shasum": "" + }, + "require": { + "barryvdh/reflection-docblock": "^2.0.6", + "composer/composer": "^1.6", + "doctrine/dbal": "~2.3", + "illuminate/console": "^5.5|^6|^7", + "illuminate/filesystem": "^5.5|^6|^7", + "illuminate/support": "^5.5|^6|^7", + "php": ">=7.2" + }, + "require-dev": { + "illuminate/config": "^5.5|^6|^7", + "illuminate/view": "^5.5|^6|^7", + "mockery/mockery": "^1.3", + "orchestra/testbench": "^3|^4|^5", + "phpro/grumphp": "^0.17.1", + "squizlabs/php_codesniffer": "^3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6-dev" + }, + "laravel": { + "providers": [ + "Barryvdh\\LaravelIdeHelper\\IdeHelperServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Barryvdh\\LaravelIdeHelper\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Barry vd. Heuvel", + "email": "barryvdh@gmail.com" + } + ], + "description": "Laravel IDE Helper, generates correct PHPDocs for all Facade classes, to improve auto-completion.", + "keywords": [ + "autocomplete", + "codeintel", + "helper", + "ide", + "laravel", + "netbeans", + "phpdoc", + "phpstorm", + "sublime" + ], + "time": "2020-04-22T09:57:26+00:00" + }, + { + "name": "barryvdh/reflection-docblock", + "version": "v2.0.6", + "source": { + "type": "git", + "url": "https://github.com/barryvdh/ReflectionDocBlock.git", + "reference": "6b69015d83d3daf9004a71a89f26e27d27ef6a16" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/barryvdh/ReflectionDocBlock/zipball/6b69015d83d3daf9004a71a89f26e27d27ef6a16", + "reference": "6b69015d83d3daf9004a71a89f26e27d27ef6a16", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.0,<4.5" + }, + "suggest": { + "dflydev/markdown": "~1.0", + "erusev/parsedown": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "Barryvdh": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "mike.vanriel@naenius.com" + } + ], + "time": "2018-12-13T10:34:14+00:00" + }, + { + "name": "composer/ca-bundle", + "version": "1.2.7", + "source": { + "type": "git", + "url": "https://github.com/composer/ca-bundle.git", + "reference": "95c63ab2117a72f48f5a55da9740a3273d45b7fd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/95c63ab2117a72f48f5a55da9740a3273d45b7fd", + "reference": "95c63ab2117a72f48f5a55da9740a3273d45b7fd", + "shasum": "" + }, + "require": { + "ext-openssl": "*", + "ext-pcre": "*", + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8", + "psr/log": "^1.0", + "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\CaBundle\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", + "keywords": [ + "cabundle", + "cacert", + "certificate", + "ssl", + "tls" + ], + "time": "2020-04-08T08:27:21+00:00" + }, + { + "name": "composer/composer", + "version": "1.10.5", + "source": { + "type": "git", + "url": "https://github.com/composer/composer.git", + "reference": "7a4d5b6aa30d2118af27c04f5e897b57156ccfa9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/composer/zipball/7a4d5b6aa30d2118af27c04f5e897b57156ccfa9", + "reference": "7a4d5b6aa30d2118af27c04f5e897b57156ccfa9", + "shasum": "" + }, + "require": { + "composer/ca-bundle": "^1.0", + "composer/semver": "^1.0", + "composer/spdx-licenses": "^1.2", + "composer/xdebug-handler": "^1.1", + "justinrainbow/json-schema": "^3.0 || ^4.0 || ^5.0", + "php": "^5.3.2 || ^7.0", + "psr/log": "^1.0", + "seld/jsonlint": "^1.4", + "seld/phar-utils": "^1.0", + "symfony/console": "^2.7 || ^3.0 || ^4.0 || ^5.0", + "symfony/filesystem": "^2.7 || ^3.0 || ^4.0 || ^5.0", + "symfony/finder": "^2.7 || ^3.0 || ^4.0 || ^5.0", + "symfony/process": "^2.7 || ^3.0 || ^4.0 || ^5.0" + }, + "conflict": { + "symfony/console": "2.8.38" + }, + "require-dev": { + "phpspec/prophecy": "^1.10", + "symfony/phpunit-bridge": "^3.4" + }, + "suggest": { + "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", + "ext-zip": "Enabling the zip extension allows you to unzip archives", + "ext-zlib": "Allow gzip compression of HTTP requests" + }, + "bin": [ + "bin/composer" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\": "src/Composer" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Composer helps you declare, manage and install dependencies of PHP projects. It ensures you have the right stack everywhere.", + "homepage": "https://getcomposer.org/", + "keywords": [ + "autoload", + "dependency", + "package" + ], + "time": "2020-04-10T09:44:22+00:00" + }, + { + "name": "composer/semver", + "version": "1.5.1", + "source": { + "type": "git", + "url": "https://github.com/composer/semver.git", + "reference": "c6bea70230ef4dd483e6bbcab6005f682ed3a8de" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/semver/zipball/c6bea70230ef4dd483e6bbcab6005f682ed3a8de", + "reference": "c6bea70230ef4dd483e6bbcab6005f682ed3a8de", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.5 || ^5.0.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Semver\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "Semver library that offers utilities, version constraint parsing and validation.", + "keywords": [ + "semantic", + "semver", + "validation", + "versioning" + ], + "time": "2020-01-13T12:06:48+00:00" + }, + { + "name": "composer/spdx-licenses", + "version": "1.5.3", + "source": { + "type": "git", + "url": "https://github.com/composer/spdx-licenses.git", + "reference": "0c3e51e1880ca149682332770e25977c70cf9dae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/0c3e51e1880ca149682332770e25977c70cf9dae", + "reference": "0c3e51e1880ca149682332770e25977c70cf9dae", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Spdx\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "SPDX licenses list and validation library.", + "keywords": [ + "license", + "spdx", + "validator" + ], + "time": "2020-02-14T07:44:31+00:00" + }, + { + "name": "composer/xdebug-handler", + "version": "1.4.1", + "source": { + "type": "git", + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "1ab9842d69e64fb3a01be6b656501032d1b78cb7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/1ab9842d69e64fb3a01be6b656501032d1b78cb7", + "reference": "1ab9842d69e64fb3a01be6b656501032d1b78cb7", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0", + "psr/log": "^1.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8" + }, + "type": "library", + "autoload": { + "psr-4": { + "Composer\\XdebugHandler\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" + } + ], + "description": "Restarts a process without Xdebug.", + "keywords": [ + "Xdebug", + "performance" + ], + "time": "2020-03-01T12:26:26+00:00" + }, { "name": "doctrine/instantiator", "version": "1.3.0", @@ -5171,6 +5599,72 @@ "abandoned": "php-parallel-lint/php-console-highlighter", "time": "2018-09-29T18:48:56+00:00" }, + { + "name": "justinrainbow/json-schema", + "version": "5.2.9", + "source": { + "type": "git", + "url": "https://github.com/justinrainbow/json-schema.git", + "reference": "44c6787311242a979fa15c704327c20e7221a0e4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/44c6787311242a979fa15c704327c20e7221a0e4", + "reference": "44c6787311242a979fa15c704327c20e7221a0e4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1", + "json-schema/json-schema-test-suite": "1.2.0", + "phpunit/phpunit": "^4.8.35" + }, + "bin": [ + "bin/validate-json" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "JsonSchema\\": "src/JsonSchema/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bruno Prieto Reis", + "email": "bruno.p.reis@gmail.com" + }, + { + "name": "Justin Rainbow", + "email": "justin.rainbow@gmail.com" + }, + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + }, + { + "name": "Robert Schönthal", + "email": "seroscho@googlemail.com" + } + ], + "description": "A library to validate a json schema.", + "homepage": "https://github.com/justinrainbow/json-schema", + "keywords": [ + "json", + "schema" + ], + "time": "2019-09-25T14:49:45+00:00" + }, { "name": "mockery/mockery", "version": "1.3.1", @@ -5452,24 +5946,21 @@ }, { "name": "phpdocumentor/reflection-common", - "version": "2.0.0", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a" + "reference": "6568f4687e5b41b054365f9ae03fcb1ed5f2069b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/63a995caa1ca9e5590304cd845c15ad6d482a62a", - "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/6568f4687e5b41b054365f9ae03fcb1ed5f2069b", + "reference": "6568f4687e5b41b054365f9ae03fcb1ed5f2069b", "shasum": "" }, "require": { "php": ">=7.1" }, - "require-dev": { - "phpunit/phpunit": "~6" - }, "type": "library", "extra": { "branch-alias": { @@ -5500,7 +5991,7 @@ "reflection", "static analysis" ], - "time": "2018-08-07T13:53:10+00:00" + "time": "2020-04-27T09:25:28+00:00" }, { "name": "phpdocumentor/reflection-docblock", @@ -5918,16 +6409,16 @@ }, { "name": "phpunit/phpunit", - "version": "8.5.3", + "version": "8.5.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "67750516bc02f300e2742fed2f50177f8f37bedf" + "reference": "8474e22d7d642f665084ba5ec780626cbd1efd23" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/67750516bc02f300e2742fed2f50177f8f37bedf", - "reference": "67750516bc02f300e2742fed2f50177f8f37bedf", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/8474e22d7d642f665084ba5ec780626cbd1efd23", + "reference": "8474e22d7d642f665084ba5ec780626cbd1efd23", "shasum": "" }, "require": { @@ -5997,7 +6488,7 @@ "testing", "xunit" ], - "time": "2020-03-31T08:52:04+00:00" + "time": "2020-04-23T04:39:42+00:00" }, { "name": "scrivo/highlight.php", @@ -6683,6 +7174,149 @@ "homepage": "https://github.com/sebastianbergmann/version", "time": "2016-10-03T07:35:21+00:00" }, + { + "name": "seld/jsonlint", + "version": "1.8.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/jsonlint.git", + "reference": "ff2aa5420bfbc296cf6a0bc785fa5b35736de7c1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/ff2aa5420bfbc296cf6a0bc785fa5b35736de7c1", + "reference": "ff2aa5420bfbc296cf6a0bc785fa5b35736de7c1", + "shasum": "" + }, + "require": { + "php": "^5.3 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + }, + "bin": [ + "bin/jsonlint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Seld\\JsonLint\\": "src/Seld/JsonLint/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "JSON Linter", + "keywords": [ + "json", + "linter", + "parser", + "validator" + ], + "time": "2020-04-30T19:05:18+00:00" + }, + { + "name": "seld/phar-utils", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/phar-utils.git", + "reference": "8800503d56b9867d43d9c303b9cbcc26016e82f0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/8800503d56b9867d43d9c303b9cbcc26016e82f0", + "reference": "8800503d56b9867d43d9c303b9cbcc26016e82f0", + "shasum": "" + }, + "require": { + "php": ">=5.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Seld\\PharUtils\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be" + } + ], + "description": "PHAR file format utilities, for when PHP phars you up", + "keywords": [ + "phar" + ], + "time": "2020-02-14T15:25:33+00:00" + }, + { + "name": "symfony/filesystem", + "version": "v5.0.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "7cd0dafc4353a0f62e307df90b48466379c8cc91" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/7cd0dafc4353a0f62e307df90b48466379c8cc91", + "reference": "7cd0dafc4353a0f62e307df90b48466379c8cc91", + "shasum": "" + }, + "require": { + "php": "^7.2.5", + "symfony/polyfill-ctype": "~1.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Filesystem Component", + "homepage": "https://symfony.com", + "time": "2020-04-12T14:40:17+00:00" + }, { "name": "theseer/tokenizer", "version": "1.1.3", @@ -6725,16 +7359,16 @@ }, { "name": "webmozart/assert", - "version": "1.7.0", + "version": "1.8.0", "source": { "type": "git", "url": "https://github.com/webmozart/assert.git", - "reference": "aed98a490f9a8f78468232db345ab9cf606cf598" + "reference": "ab2cb0b3b559010b75981b1bdce728da3ee90ad6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/aed98a490f9a8f78468232db345ab9cf606cf598", - "reference": "aed98a490f9a8f78468232db345ab9cf606cf598", + "url": "https://api.github.com/repos/webmozart/assert/zipball/ab2cb0b3b559010b75981b1bdce728da3ee90ad6", + "reference": "ab2cb0b3b559010b75981b1bdce728da3ee90ad6", "shasum": "" }, "require": { @@ -6742,7 +7376,7 @@ "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "vimeo/psalm": "<3.6.0" + "vimeo/psalm": "<3.9.1" }, "require-dev": { "phpunit/phpunit": "^4.8.36 || ^7.5.13" @@ -6769,7 +7403,7 @@ "check", "validate" ], - "time": "2020-02-14T12:15:55+00:00" + "time": "2020-04-18T12:12:48+00:00" } ], "aliases": [], diff --git a/config/vuefilemanager.php b/config/vuefilemanager.php index 8ebb8b11..8705ba0e 100644 --- a/config/vuefilemanager.php +++ b/config/vuefilemanager.php @@ -15,5 +15,5 @@ return [ 'limit_storage_by_capacity' => true, // Define user storage capacity in MB. E.g. value 2000 is 2.00GB - 'user_storage_capacity' => 5000, + 'user_storage_capacity' => 300, ]; \ No newline at end of file diff --git a/database/migrations/2020_04_20_071047_create_shares_table.php b/database/migrations/2020_04_20_071047_create_shares_table.php new file mode 100644 index 00000000..ba542743 --- /dev/null +++ b/database/migrations/2020_04_20_071047_create_shares_table.php @@ -0,0 +1,38 @@ +bigIncrements('id'); + $table->bigInteger('user_id'); + $table->string('token', 16)->unique(); + $table->bigInteger('item_id'); + $table->enum('type', ['file', 'files', 'folder']); + $table->enum('permission', ['visitor', 'editor'])->nullable(); + $table->boolean('protected'); + $table->string('password')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('shares'); + } +} diff --git a/database/migrations/2020_04_24_055817_add_user_scope_to_file_manager_files_table.php b/database/migrations/2020_04_24_055817_add_user_scope_to_file_manager_files_table.php new file mode 100644 index 00000000..ae0b3772 --- /dev/null +++ b/database/migrations/2020_04_24_055817_add_user_scope_to_file_manager_files_table.php @@ -0,0 +1,32 @@ +string('user_scope')->after('type')->default('master'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('file_manager_files', function (Blueprint $table) { + // + }); + } +} diff --git a/database/migrations/2020_04_24_080943_add_user_scope_to_file_manager_folders_table.php b/database/migrations/2020_04_24_080943_add_user_scope_to_file_manager_folders_table.php new file mode 100644 index 00000000..99eb3230 --- /dev/null +++ b/database/migrations/2020_04_24_080943_add_user_scope_to_file_manager_folders_table.php @@ -0,0 +1,32 @@ +string('user_scope')->after('type')->default('master'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('file_manager_folders', function (Blueprint $table) { + // + }); + } +} diff --git a/package-lock.json b/package-lock.json index ac0d558d..1f0ef992 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5328,9 +5328,9 @@ "dev": true }, "in-publish": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", - "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz", + "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==" }, "indent-string": { "version": "4.0.0", @@ -6645,9 +6645,9 @@ "dev": true }, "node-sass": { - "version": "4.13.1", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.13.1.tgz", - "integrity": "sha512-TTWFx+ZhyDx1Biiez2nB0L3YrCZ/8oHagaDalbuBSlqXgUPsdkUSzJsVxeDO9LtPB49+Fh3WQl3slABo6AotNw==", + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.14.0.tgz", + "integrity": "sha512-AxqU+DFpk0lEz95sI6jO0hU0Rwyw7BXVEv6o9OItoXLyeygPeaSpiV4rwQb10JiTghHaa0gZeD21sz+OsQluaw==", "requires": { "async-foreach": "^0.1.3", "chalk": "^1.1.1", @@ -8051,9 +8051,9 @@ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, "psl": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz", - "integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ==" + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" }, "public-encrypt": { "version": "4.0.3", @@ -9316,9 +9316,9 @@ } }, "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" }, "spdx-expression-parse": { "version": "3.0.0", @@ -10328,9 +10328,9 @@ "dev": true }, "vee-validate": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/vee-validate/-/vee-validate-3.2.5.tgz", - "integrity": "sha512-qUgx4fcD077aNYuaRmK5qZ6G/qRHI0igC5tvGP1IRtvkScOyhCHuZwCcto4VPy5Cip0yAOqrbFudD9JOevwZhw==" + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/vee-validate/-/vee-validate-3.3.0.tgz", + "integrity": "sha512-+QQZgA0I9ZTDsYNOSFlUqOvGIqW4yxjloxQCC6TD0rPn407G9hifn6RnId8kzl6+zHfl3/dE+bko49mYzgNNGg==" }, "vendors": { "version": "1.0.4", @@ -10366,9 +10366,9 @@ "dev": true }, "vue-i18n": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-8.16.0.tgz", - "integrity": "sha512-cp9JOsx4ETzlCsnD22FE8ZhAmD8kcyNLRKV0DPsS7bBNTCdIlOKuyTGonWKYcGCUtNMtwemDWRBevRm8eevBVg==" + "version": "8.17.4", + "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-8.17.4.tgz", + "integrity": "sha512-wpk/drIkPf6gHCtvHc8zAZ1nsWBZ+/OOJYtJxqhYD6CKT0FJAG5oypwgF9kABt30FBWhl8NEb/QY+vaaBARlFg==" }, "vue-loader": { "version": "15.9.1", @@ -10383,6 +10383,11 @@ "vue-style-loader": "^4.1.0" } }, + "vue-router": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.1.6.tgz", + "integrity": "sha512-GYhn2ynaZlysZMkFE5oCHRUTqE8BWs/a9YbKpNLi0i7xD6KG1EzDqpHQmv1F5gXjr8kL5iIVS8EOtRaVUEXTqA==" + }, "vue-style-loader": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.2.tgz", @@ -10410,9 +10415,9 @@ "dev": true }, "vuex": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.1.3.tgz", - "integrity": "sha512-k8vZqNMSNMgKelVZAPYw5MNb2xWSmVgCKtYKAptvm9YtZiOXnRXFWu//Y9zQNORTrm3dNj1n/WaZZI26tIX6Mw==" + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.3.0.tgz", + "integrity": "sha512-1MfcBt+YFd20DPwKe0ThhYm1UEXZya4gVKUvCy7AtS11YAOUR+9a6u4fsv1Rr6ePZCDNxW/M1zuIaswp6nNv8Q==" }, "watchpack": { "version": "1.6.1", diff --git a/package.json b/package.json index 3f085282..ab9148a2 100644 --- a/package.json +++ b/package.json @@ -23,10 +23,11 @@ "@fortawesome/vue-fontawesome": "^0.1.9", "css-element-queries": "^1.2.3", "lodash": "^4.17.15", - "node-sass": "^4.13.1", - "vee-validate": "^3.2.5", + "node-sass": "^4.14.0", + "vee-validate": "^3.3.0", "vue": "^2.6.10", - "vue-i18n": "^8.16.0", - "vuex": "^3.0.1" + "vue-i18n": "^8.17.4", + "vue-router": "^3.1.6", + "vuex": "^3.3.0" } } diff --git a/public/css/app.css b/public/css/app.css index 61f64b29..4cab12f7 100644 --- a/public/css/app.css +++ b/public/css/app.css @@ -1 +1,3 @@ -@import url(https://fonts.googleapis.com/css2?family=Nunito:wght@200;300;400;600;700;900&display=swap); \ No newline at end of file +@import url(https://fonts.googleapis.com/css2?family=Nunito:wght@200; + +300;400;600;700;900&display=swap);#application-wrapper{display:flex;height:100%}#application-wrapper #content{position:relative;width:100%} \ No newline at end of file diff --git a/public/js/main.js b/public/js/main.js index f62ba3be..e69de29b 100644 --- a/public/js/main.js +++ b/public/js/main.js @@ -1,2 +0,0 @@ -/*! For license information please see main.js.LICENSE.txt */ -!function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=68)}([function(e,t,n){"use strict";(function(e){n.d(t,"b",(function(){return w}));var r=("undefined"!=typeof window?window:void 0!==e?e:{}).__VUE_DEVTOOLS_GLOBAL_HOOK__;function i(e,t){Object.keys(e).forEach((function(n){return t(e[n],n)}))}function o(e){return null!==e&&"object"==typeof e}var a=function(e,t){this.runtime=t,this._children=Object.create(null),this._rawModule=e;var n=e.state;this.state=("function"==typeof n?n():n)||{}},s={namespaced:{configurable:!0}};s.namespaced.get=function(){return!!this._rawModule.namespaced},a.prototype.addChild=function(e,t){this._children[e]=t},a.prototype.removeChild=function(e){delete this._children[e]},a.prototype.getChild=function(e){return this._children[e]},a.prototype.update=function(e){this._rawModule.namespaced=e.namespaced,e.actions&&(this._rawModule.actions=e.actions),e.mutations&&(this._rawModule.mutations=e.mutations),e.getters&&(this._rawModule.getters=e.getters)},a.prototype.forEachChild=function(e){i(this._children,e)},a.prototype.forEachGetter=function(e){this._rawModule.getters&&i(this._rawModule.getters,e)},a.prototype.forEachAction=function(e){this._rawModule.actions&&i(this._rawModule.actions,e)},a.prototype.forEachMutation=function(e){this._rawModule.mutations&&i(this._rawModule.mutations,e)},Object.defineProperties(a.prototype,s);var l=function(e){this.register([],e,!1)};l.prototype.get=function(e){return e.reduce((function(e,t){return e.getChild(t)}),this.root)},l.prototype.getNamespace=function(e){var t=this.root;return e.reduce((function(e,n){return e+((t=t.getChild(n)).namespaced?n+"/":"")}),"")},l.prototype.update=function(e){!function e(t,n,r){0;if(n.update(r),r.modules)for(var i in r.modules){if(!n.getChild(i))return void 0;e(t.concat(i),n.getChild(i),r.modules[i])}}([],this.root,e)},l.prototype.register=function(e,t,n){var r=this;void 0===n&&(n=!0);var o=new a(t,n);0===e.length?this.root=o:this.get(e.slice(0,-1)).addChild(e[e.length-1],o);t.modules&&i(t.modules,(function(t,i){r.register(e.concat(i),t,n)}))},l.prototype.unregister=function(e){var t=this.get(e.slice(0,-1)),n=e[e.length-1];t.getChild(n).runtime&&t.removeChild(n)};var c;var u=function(e){var t=this;void 0===e&&(e={}),!c&&"undefined"!=typeof window&&window.Vue&&b(window.Vue);var n=e.plugins;void 0===n&&(n=[]);var i=e.strict;void 0===i&&(i=!1),this._committing=!1,this._actions=Object.create(null),this._actionSubscribers=[],this._mutations=Object.create(null),this._wrappedGetters=Object.create(null),this._modules=new l(e),this._modulesNamespaceMap=Object.create(null),this._subscribers=[],this._watcherVM=new c,this._makeLocalGettersCache=Object.create(null);var o=this,a=this.dispatch,s=this.commit;this.dispatch=function(e,t){return a.call(o,e,t)},this.commit=function(e,t,n){return s.call(o,e,t,n)},this.strict=i;var u=this._modules.root.state;m(this,u,[],this._modules.root),v(this,u),n.forEach((function(e){return e(t)})),(void 0!==e.devtools?e.devtools:c.config.devtools)&&function(e){r&&(e._devtoolHook=r,r.emit("vuex:init",e),r.on("vuex:travel-to-state",(function(t){e.replaceState(t)})),e.subscribe((function(e,t){r.emit("vuex:mutation",e,t)})))}(this)},f={state:{configurable:!0}};function p(e,t){return t.indexOf(e)<0&&t.push(e),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}function d(e,t){e._actions=Object.create(null),e._mutations=Object.create(null),e._wrappedGetters=Object.create(null),e._modulesNamespaceMap=Object.create(null);var n=e.state;m(e,n,[],e._modules.root,!0),v(e,n,t)}function v(e,t,n){var r=e._vm;e.getters={},e._makeLocalGettersCache=Object.create(null);var o=e._wrappedGetters,a={};i(o,(function(t,n){a[n]=function(e,t){return function(){return e(t)}}(t,e),Object.defineProperty(e.getters,n,{get:function(){return e._vm[n]},enumerable:!0})}));var s=c.config.silent;c.config.silent=!0,e._vm=new c({data:{$$state:t},computed:a}),c.config.silent=s,e.strict&&function(e){e._vm.$watch((function(){return this._data.$$state}),(function(){0}),{deep:!0,sync:!0})}(e),r&&(n&&e._withCommit((function(){r._data.$$state=null})),c.nextTick((function(){return r.$destroy()})))}function m(e,t,n,r,i){var o=!n.length,a=e._modules.getNamespace(n);if(r.namespaced&&(e._modulesNamespaceMap[a],e._modulesNamespaceMap[a]=r),!o&&!i){var s=h(t,n.slice(0,-1)),l=n[n.length-1];e._withCommit((function(){c.set(s,l,r.state)}))}var u=r.context=function(e,t,n){var r=""===t,i={dispatch:r?e.dispatch:function(n,r,i){var o=g(n,r,i),a=o.payload,s=o.options,l=o.type;return s&&s.root||(l=t+l),e.dispatch(l,a)},commit:r?e.commit:function(n,r,i){var o=g(n,r,i),a=o.payload,s=o.options,l=o.type;s&&s.root||(l=t+l),e.commit(l,a,s)}};return Object.defineProperties(i,{getters:{get:r?function(){return e.getters}:function(){return function(e,t){if(!e._makeLocalGettersCache[t]){var n={},r=t.length;Object.keys(e.getters).forEach((function(i){if(i.slice(0,r)===t){var o=i.slice(r);Object.defineProperty(n,o,{get:function(){return e.getters[i]},enumerable:!0})}})),e._makeLocalGettersCache[t]=n}return e._makeLocalGettersCache[t]}(e,t)}},state:{get:function(){return h(e.state,n)}}}),i}(e,a,n);r.forEachMutation((function(t,n){!function(e,t,n,r){(e._mutations[t]||(e._mutations[t]=[])).push((function(t){n.call(e,r.state,t)}))}(e,a+n,t,u)})),r.forEachAction((function(t,n){var r=t.root?n:a+n,i=t.handler||t;!function(e,t,n,r){(e._actions[t]||(e._actions[t]=[])).push((function(t){var i,o=n.call(e,{dispatch:r.dispatch,commit:r.commit,getters:r.getters,state:r.state,rootGetters:e.getters,rootState:e.state},t);return(i=o)&&"function"==typeof i.then||(o=Promise.resolve(o)),e._devtoolHook?o.catch((function(t){throw e._devtoolHook.emit("vuex:error",t),t})):o}))}(e,r,i,u)})),r.forEachGetter((function(t,n){!function(e,t,n,r){if(e._wrappedGetters[t])return void 0;e._wrappedGetters[t]=function(e){return n(r.state,r.getters,e.state,e.getters)}}(e,a+n,t,u)})),r.forEachChild((function(r,o){m(e,t,n.concat(o),r,i)}))}function h(e,t){return t.reduce((function(e,t){return e[t]}),e)}function g(e,t,n){return o(e)&&e.type&&(n=t,t=e,e=e.type),{type:e,payload:t,options:n}}function b(e){c&&e===c||function(e){if(Number(e.version.split(".")[0])>=2)e.mixin({beforeCreate:n});else{var t=e.prototype._init;e.prototype._init=function(e){void 0===e&&(e={}),e.init=e.init?[n].concat(e.init):n,t.call(this,e)}}function n(){var e=this.$options;e.store?this.$store="function"==typeof e.store?e.store():e.store:e.parent&&e.parent.$store&&(this.$store=e.parent.$store)}}(c=e)}f.state.get=function(){return this._vm._data.$$state},f.state.set=function(e){0},u.prototype.commit=function(e,t,n){var r=this,i=g(e,t,n),o=i.type,a=i.payload,s=(i.options,{type:o,payload:a}),l=this._mutations[o];l&&(this._withCommit((function(){l.forEach((function(e){e(a)}))})),this._subscribers.slice().forEach((function(e){return e(s,r.state)})))},u.prototype.dispatch=function(e,t){var n=this,r=g(e,t),i=r.type,o=r.payload,a={type:i,payload:o},s=this._actions[i];if(s){try{this._actionSubscribers.slice().filter((function(e){return e.before})).forEach((function(e){return e.before(a,n.state)}))}catch(e){0}return(s.length>1?Promise.all(s.map((function(e){return e(o)}))):s[0](o)).then((function(e){try{n._actionSubscribers.filter((function(e){return e.after})).forEach((function(e){return e.after(a,n.state)}))}catch(e){0}return e}))}},u.prototype.subscribe=function(e){return p(e,this._subscribers)},u.prototype.subscribeAction=function(e){return p("function"==typeof e?{before:e}:e,this._actionSubscribers)},u.prototype.watch=function(e,t,n){var r=this;return this._watcherVM.$watch((function(){return e(r.state,r.getters)}),t,n)},u.prototype.replaceState=function(e){var t=this;this._withCommit((function(){t._vm._data.$$state=e}))},u.prototype.registerModule=function(e,t,n){void 0===n&&(n={}),"string"==typeof e&&(e=[e]),this._modules.register(e,t),m(this,this.state,e,this._modules.get(e),n.preserveState),v(this,this.state)},u.prototype.unregisterModule=function(e){var t=this;"string"==typeof e&&(e=[e]),this._modules.unregister(e),this._withCommit((function(){var n=h(t.state,e.slice(0,-1));c.delete(n,e[e.length-1])})),d(this)},u.prototype.hotUpdate=function(e){this._modules.update(e),d(this,!0)},u.prototype._withCommit=function(e){var t=this._committing;this._committing=!0,e(),this._committing=t},Object.defineProperties(u.prototype,f);var _=O((function(e,t){var n={};return k(t).forEach((function(t){var r=t.key,i=t.val;n[r]=function(){var t=this.$store.state,n=this.$store.getters;if(e){var r=$(this.$store,"mapState",e);if(!r)return;t=r.context.state,n=r.context.getters}return"function"==typeof i?i.call(this,t,n):t[i]},n[r].vuex=!0})),n})),y=O((function(e,t){var n={};return k(t).forEach((function(t){var r=t.key,i=t.val;n[r]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var r=this.$store.commit;if(e){var o=$(this.$store,"mapMutations",e);if(!o)return;r=o.context.commit}return"function"==typeof i?i.apply(this,[r].concat(t)):r.apply(this.$store,[i].concat(t))}})),n})),w=O((function(e,t){var n={};return k(t).forEach((function(t){var r=t.key,i=t.val;i=e+i,n[r]=function(){if(!e||$(this.$store,"mapGetters",e))return this.$store.getters[i]},n[r].vuex=!0})),n})),x=O((function(e,t){var n={};return k(t).forEach((function(t){var r=t.key,i=t.val;n[r]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var r=this.$store.dispatch;if(e){var o=$(this.$store,"mapActions",e);if(!o)return;r=o.context.dispatch}return"function"==typeof i?i.apply(this,[r].concat(t)):r.apply(this.$store,[i].concat(t))}})),n}));function k(e){return function(e){return Array.isArray(e)||o(e)}(e)?Array.isArray(e)?e.map((function(e){return{key:e,val:e}})):Object.keys(e).map((function(t){return{key:t,val:e[t]}})):[]}function O(e){return function(t,n){return"string"!=typeof t?(n=t,t=""):"/"!==t.charAt(t.length-1)&&(t+="/"),e(t,n)}}function $(e,t,n){return e._modulesNamespaceMap[n]}var C={Store:u,install:b,version:"3.1.3",mapState:_,mapMutations:y,mapGetters:w,mapActions:x,createNamespacedHelpers:function(e){return{mapState:_.bind(null,e),mapGetters:w.bind(null,e),mapMutations:y.bind(null,e),mapActions:x.bind(null,e)}}};t.a=C}).call(this,n(9))},function(e,t){e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n=function(e,t){var n=e[1]||"",r=e[3];if(!r)return n;if(t&&"function"==typeof btoa){var i=(a=r,"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(a))))+" */"),o=r.sources.map((function(e){return"/*# sourceURL="+r.sourceRoot+e+" */"}));return[n].concat(o).concat([i]).join("\n")}var a;return[n].join("\n")}(t,e);return t[2]?"@media "+t[2]+"{"+n+"}":n})).join("")},t.i=function(e,n){"string"==typeof e&&(e=[[null,e,""]]);for(var r={},i=0;i=0&&f.splice(t,1)}function g(e){var t=document.createElement("style");if(void 0===e.attrs.type&&(e.attrs.type="text/css"),void 0===e.attrs.nonce){var r=function(){0;return n.nc}();r&&(e.attrs.nonce=r)}return b(t,e.attrs),m(e,t),t}function b(e,t){Object.keys(t).forEach((function(n){e.setAttribute(n,t[n])}))}function _(e,t){var n,r,i,o;if(t.transform&&e.css){if(!(o="function"==typeof t.transform?t.transform(e.css):t.transform.default(e.css)))return function(){};e.css=o}if(t.singleton){var a=u++;n=c||(c=g(t)),r=x.bind(null,n,a,!1),i=x.bind(null,n,a,!0)}else e.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=function(e){var t=document.createElement("link");return void 0===e.attrs.type&&(e.attrs.type="text/css"),e.attrs.rel="stylesheet",b(t,e.attrs),m(e,t),t}(t),r=O.bind(null,n,t),i=function(){h(n),n.href&&URL.revokeObjectURL(n.href)}):(n=g(t),r=k.bind(null,n),i=function(){h(n)});return r(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;r(e=t)}else i()}}e.exports=function(e,t){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");(t=t||{}).attrs="object"==typeof t.attrs?t.attrs:{},t.singleton||"boolean"==typeof t.singleton||(t.singleton=a()),t.insertInto||(t.insertInto="head"),t.insertAt||(t.insertAt="bottom");var n=v(e,t);return d(n,t),function(e){for(var r=[],i=0;i"']/g,M=RegExp(z.source),N=RegExp(L.source),R=/<%-([\s\S]+?)%>/g,B=/<%([\s\S]+?)%>/g,V=/<%=([\s\S]+?)%>/g,U=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,H=/^\w*$/,q=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,W=/[\\^$.*+?()[\]{}|]/g,Z=RegExp(W.source),G=/^\s+|\s+$/g,Y=/^\s+/,K=/\s+$/,X=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,J=/\{\n\/\* \[wrapped with (.+)\] \*/,Q=/,? & /,ee=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,te=/\\(\\)?/g,ne=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,re=/\w*$/,ie=/^[-+]0x[0-9a-f]+$/i,oe=/^0b[01]+$/i,ae=/^\[object .+?Constructor\]$/,se=/^0o[0-7]+$/i,le=/^(?:0|[1-9]\d*)$/,ce=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,ue=/($^)/,fe=/['\n\r\u2028\u2029\\]/g,pe="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",de="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",ve="[\\ud800-\\udfff]",me="["+de+"]",he="["+pe+"]",ge="\\d+",be="[\\u2700-\\u27bf]",_e="[a-z\\xdf-\\xf6\\xf8-\\xff]",ye="[^\\ud800-\\udfff"+de+ge+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",we="\\ud83c[\\udffb-\\udfff]",xe="[^\\ud800-\\udfff]",ke="(?:\\ud83c[\\udde6-\\uddff]){2}",Oe="[\\ud800-\\udbff][\\udc00-\\udfff]",$e="[A-Z\\xc0-\\xd6\\xd8-\\xde]",Ce="(?:"+_e+"|"+ye+")",Ae="(?:"+$e+"|"+ye+")",Ee="(?:"+he+"|"+we+")"+"?",Se="[\\ufe0e\\ufe0f]?"+Ee+("(?:\\u200d(?:"+[xe,ke,Oe].join("|")+")[\\ufe0e\\ufe0f]?"+Ee+")*"),je="(?:"+[be,ke,Oe].join("|")+")"+Se,Ie="(?:"+[xe+he+"?",he,ke,Oe,ve].join("|")+")",Te=RegExp("['’]","g"),Pe=RegExp(he,"g"),Fe=RegExp(we+"(?="+we+")|"+Ie+Se,"g"),De=RegExp([$e+"?"+_e+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[me,$e,"$"].join("|")+")",Ae+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[me,$e+Ce,"$"].join("|")+")",$e+"?"+Ce+"+(?:['’](?:d|ll|m|re|s|t|ve))?",$e+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",ge,je].join("|"),"g"),ze=RegExp("[\\u200d\\ud800-\\udfff"+pe+"\\ufe0e\\ufe0f]"),Le=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Me=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Ne=-1,Re={};Re[$]=Re[C]=Re[A]=Re[E]=Re[S]=Re[j]=Re["[object Uint8ClampedArray]"]=Re[I]=Re[T]=!0,Re[l]=Re[c]=Re[k]=Re[u]=Re[O]=Re[f]=Re[p]=Re[d]=Re[m]=Re[h]=Re[g]=Re[b]=Re[_]=Re[y]=Re[x]=!1;var Be={};Be[l]=Be[c]=Be[k]=Be[O]=Be[u]=Be[f]=Be[$]=Be[C]=Be[A]=Be[E]=Be[S]=Be[m]=Be[h]=Be[g]=Be[b]=Be[_]=Be[y]=Be[w]=Be[j]=Be["[object Uint8ClampedArray]"]=Be[I]=Be[T]=!0,Be[p]=Be[d]=Be[x]=!1;var Ve={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Ue=parseFloat,He=parseInt,qe="object"==typeof e&&e&&e.Object===Object&&e,We="object"==typeof self&&self&&self.Object===Object&&self,Ze=qe||We||Function("return this")(),Ge=t&&!t.nodeType&&t,Ye=Ge&&"object"==typeof r&&r&&!r.nodeType&&r,Ke=Ye&&Ye.exports===Ge,Xe=Ke&&qe.process,Je=function(){try{var e=Ye&&Ye.require&&Ye.require("util").types;return e||Xe&&Xe.binding&&Xe.binding("util")}catch(e){}}(),Qe=Je&&Je.isArrayBuffer,et=Je&&Je.isDate,tt=Je&&Je.isMap,nt=Je&&Je.isRegExp,rt=Je&&Je.isSet,it=Je&&Je.isTypedArray;function ot(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function at(e,t,n,r){for(var i=-1,o=null==e?0:e.length;++i-1}function pt(e,t,n){for(var r=-1,i=null==e?0:e.length;++r-1;);return n}function Ft(e,t){for(var n=e.length;n--&&wt(t,e[n],0)>-1;);return n}function Dt(e,t){for(var n=e.length,r=0;n--;)e[n]===t&&++r;return r}var zt=Ct({"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"}),Lt=Ct({"&":"&","<":"<",">":">",'"':""","'":"'"});function Mt(e){return"\\"+Ve[e]}function Nt(e){return ze.test(e)}function Rt(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n}function Bt(e,t){return function(n){return e(t(n))}}function Vt(e,t){for(var n=-1,r=e.length,i=0,o=[];++n",""":'"',"'":"'"});var Gt=function e(t){var n,r=(t=null==t?Ze:Gt.defaults(Ze.Object(),t,Gt.pick(Ze,Me))).Array,i=t.Date,pe=t.Error,de=t.Function,ve=t.Math,me=t.Object,he=t.RegExp,ge=t.String,be=t.TypeError,_e=r.prototype,ye=de.prototype,we=me.prototype,xe=t["__core-js_shared__"],ke=ye.toString,Oe=we.hasOwnProperty,$e=0,Ce=(n=/[^.]+$/.exec(xe&&xe.keys&&xe.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",Ae=we.toString,Ee=ke.call(me),Se=Ze._,je=he("^"+ke.call(Oe).replace(W,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Ie=Ke?t.Buffer:void 0,Fe=t.Symbol,ze=t.Uint8Array,Ve=Ie?Ie.allocUnsafe:void 0,qe=Bt(me.getPrototypeOf,me),We=me.create,Ge=we.propertyIsEnumerable,Ye=_e.splice,Xe=Fe?Fe.isConcatSpreadable:void 0,Je=Fe?Fe.iterator:void 0,bt=Fe?Fe.toStringTag:void 0,Ct=function(){try{var e=Qi(me,"defineProperty");return e({},"",{}),e}catch(e){}}(),Yt=t.clearTimeout!==Ze.clearTimeout&&t.clearTimeout,Kt=i&&i.now!==Ze.Date.now&&i.now,Xt=t.setTimeout!==Ze.setTimeout&&t.setTimeout,Jt=ve.ceil,Qt=ve.floor,en=me.getOwnPropertySymbols,tn=Ie?Ie.isBuffer:void 0,nn=t.isFinite,rn=_e.join,on=Bt(me.keys,me),an=ve.max,sn=ve.min,ln=i.now,cn=t.parseInt,un=ve.random,fn=_e.reverse,pn=Qi(t,"DataView"),dn=Qi(t,"Map"),vn=Qi(t,"Promise"),mn=Qi(t,"Set"),hn=Qi(t,"WeakMap"),gn=Qi(me,"create"),bn=hn&&new hn,_n={},yn=Ao(pn),wn=Ao(dn),xn=Ao(vn),kn=Ao(mn),On=Ao(hn),$n=Fe?Fe.prototype:void 0,Cn=$n?$n.valueOf:void 0,An=$n?$n.toString:void 0;function En(e){if(Ha(e)&&!Pa(e)&&!(e instanceof Tn)){if(e instanceof In)return e;if(Oe.call(e,"__wrapped__"))return Eo(e)}return new In(e)}var Sn=function(){function e(){}return function(t){if(!Ua(t))return{};if(We)return We(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();function jn(){}function In(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}function Tn(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}function Pn(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t=t?e:t)),e}function Kn(e,t,n,r,i,o){var a,s=1&t,c=2&t,p=4&t;if(n&&(a=i?n(e,r,i,o):n(e)),void 0!==a)return a;if(!Ua(e))return e;var x=Pa(e);if(x){if(a=function(e){var t=e.length,n=new e.constructor(t);t&&"string"==typeof e[0]&&Oe.call(e,"index")&&(n.index=e.index,n.input=e.input);return n}(e),!s)return gi(e,a)}else{var P=no(e),F=P==d||P==v;if(La(e))return fi(e,s);if(P==g||P==l||F&&!i){if(a=c||F?{}:io(e),!s)return c?function(e,t){return bi(e,to(e),t)}(e,function(e,t){return e&&bi(t,ws(t),e)}(a,e)):function(e,t){return bi(e,eo(e),t)}(e,Wn(a,e))}else{if(!Be[P])return i?e:{};a=function(e,t,n){var r=e.constructor;switch(t){case k:return pi(e);case u:case f:return new r(+e);case O:return function(e,t){var n=t?pi(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}(e,n);case $:case C:case A:case E:case S:case j:case"[object Uint8ClampedArray]":case I:case T:return di(e,n);case m:return new r;case h:case y:return new r(e);case b:return function(e){var t=new e.constructor(e.source,re.exec(e));return t.lastIndex=e.lastIndex,t}(e);case _:return new r;case w:return i=e,Cn?me(Cn.call(i)):{}}var i}(e,P,s)}}o||(o=new Ln);var D=o.get(e);if(D)return D;o.set(e,a),Ya(e)?e.forEach((function(r){a.add(Kn(r,t,n,r,e,o))})):qa(e)&&e.forEach((function(r,i){a.set(i,Kn(r,t,n,i,e,o))}));var z=x?void 0:(p?c?Wi:qi:c?ws:ys)(e);return st(z||e,(function(r,i){z&&(r=e[i=r]),Un(a,i,Kn(r,t,n,i,e,o))})),a}function Xn(e,t,n){var r=n.length;if(null==e)return!r;for(e=me(e);r--;){var i=n[r],o=t[i],a=e[i];if(void 0===a&&!(i in e)||!o(a))return!1}return!0}function Jn(e,t,n){if("function"!=typeof e)throw new be(o);return yo((function(){e.apply(void 0,n)}),t)}function Qn(e,t,n,r){var i=-1,o=ft,a=!0,s=e.length,l=[],c=t.length;if(!s)return l;n&&(t=dt(t,jt(n))),r?(o=pt,a=!1):t.length>=200&&(o=Tt,a=!1,t=new zn(t));e:for(;++i-1},Fn.prototype.set=function(e,t){var n=this.__data__,r=Hn(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this},Dn.prototype.clear=function(){this.size=0,this.__data__={hash:new Pn,map:new(dn||Fn),string:new Pn}},Dn.prototype.delete=function(e){var t=Xi(this,e).delete(e);return this.size-=t?1:0,t},Dn.prototype.get=function(e){return Xi(this,e).get(e)},Dn.prototype.has=function(e){return Xi(this,e).has(e)},Dn.prototype.set=function(e,t){var n=Xi(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this},zn.prototype.add=zn.prototype.push=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this},zn.prototype.has=function(e){return this.__data__.has(e)},Ln.prototype.clear=function(){this.__data__=new Fn,this.size=0},Ln.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},Ln.prototype.get=function(e){return this.__data__.get(e)},Ln.prototype.has=function(e){return this.__data__.has(e)},Ln.prototype.set=function(e,t){var n=this.__data__;if(n instanceof Fn){var r=n.__data__;if(!dn||r.length<199)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new Dn(r)}return n.set(e,t),this.size=n.size,this};var er=wi(lr),tr=wi(cr,!0);function nr(e,t){var n=!0;return er(e,(function(e,r,i){return n=!!t(e,r,i)})),n}function rr(e,t,n){for(var r=-1,i=e.length;++r0&&n(s)?t>1?or(s,t-1,n,r,i):vt(i,s):r||(i[i.length]=s)}return i}var ar=xi(),sr=xi(!0);function lr(e,t){return e&&ar(e,t,ys)}function cr(e,t){return e&&sr(e,t,ys)}function ur(e,t){return ut(t,(function(t){return Ra(e[t])}))}function fr(e,t){for(var n=0,r=(t=si(t,e)).length;null!=e&&nt}function mr(e,t){return null!=e&&Oe.call(e,t)}function hr(e,t){return null!=e&&t in me(e)}function gr(e,t,n){for(var i=n?pt:ft,o=e[0].length,a=e.length,s=a,l=r(a),c=1/0,u=[];s--;){var f=e[s];s&&t&&(f=dt(f,jt(t))),c=sn(f.length,c),l[s]=!n&&(t||o>=120&&f.length>=120)?new zn(s&&f):void 0}f=e[0];var p=-1,d=l[0];e:for(;++p=s)return l;var c=n[r];return l*("desc"==c?-1:1)}}return e.index-t.index}(e,t,n)}))}function Pr(e,t,n){for(var r=-1,i=t.length,o={};++r-1;)s!==e&&Ye.call(s,l,1),Ye.call(e,l,1);return e}function Dr(e,t){for(var n=e?t.length:0,r=n-1;n--;){var i=t[n];if(n==r||i!==o){var o=i;ao(i)?Ye.call(e,i,1):Qr(e,i)}}return e}function zr(e,t){return e+Qt(un()*(t-e+1))}function Lr(e,t){var n="";if(!e||t<1||t>9007199254740991)return n;do{t%2&&(n+=e),(t=Qt(t/2))&&(e+=e)}while(t);return n}function Mr(e,t){return wo(mo(e,t,Ws),e+"")}function Nr(e){return Nn(Ss(e))}function Rr(e,t){var n=Ss(e);return Oo(n,Yn(t,0,n.length))}function Br(e,t,n,r){if(!Ua(e))return e;for(var i=-1,o=(t=si(t,e)).length,a=o-1,s=e;null!=s&&++io?0:o+t),(n=n>o?o:n)<0&&(n+=o),o=t>n?0:n-t>>>0,t>>>=0;for(var a=r(o);++i>>1,a=e[o];null!==a&&!Xa(a)&&(n?a<=t:a=200){var c=t?null:Li(e);if(c)return Ut(c);a=!1,i=Tt,l=new zn}else l=t?[]:s;e:for(;++r=r?e:qr(e,t,n)}var ui=Yt||function(e){return Ze.clearTimeout(e)};function fi(e,t){if(t)return e.slice();var n=e.length,r=Ve?Ve(n):new e.constructor(n);return e.copy(r),r}function pi(e){var t=new e.constructor(e.byteLength);return new ze(t).set(new ze(e)),t}function di(e,t){var n=t?pi(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}function vi(e,t){if(e!==t){var n=void 0!==e,r=null===e,i=e==e,o=Xa(e),a=void 0!==t,s=null===t,l=t==t,c=Xa(t);if(!s&&!c&&!o&&e>t||o&&a&&l&&!s&&!c||r&&a&&l||!n&&l||!i)return 1;if(!r&&!o&&!c&&e1?n[i-1]:void 0,a=i>2?n[2]:void 0;for(o=e.length>3&&"function"==typeof o?(i--,o):void 0,a&&so(n[0],n[1],a)&&(o=i<3?void 0:o,i=1),t=me(t);++r-1?i[o?t[a]:a]:void 0}}function Ai(e){return Hi((function(t){var n=t.length,r=n,i=In.prototype.thru;for(e&&t.reverse();r--;){var a=t[r];if("function"!=typeof a)throw new be(o);if(i&&!s&&"wrapper"==Gi(a))var s=new In([],!0)}for(r=s?r:n;++r1&&_.reverse(),f&&cs))return!1;var c=o.get(e);if(c&&o.get(t))return c==t;var u=-1,f=!0,p=2&n?new zn:void 0;for(o.set(e,t),o.set(t,e);++u-1&&e%1==0&&e1?"& ":"")+t[r],t=t.join(n>2?", ":" "),e.replace(X,"{\n/* [wrapped with "+t+"] */\n")}(r,function(e,t){return st(s,(function(n){var r="_."+n[0];t&n[1]&&!ft(e,r)&&e.push(r)})),e.sort()}(function(e){var t=e.match(J);return t?t[1].split(Q):[]}(r),n)))}function ko(e){var t=0,n=0;return function(){var r=ln(),i=16-(r-n);if(n=r,i>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function Oo(e,t){var n=-1,r=e.length,i=r-1;for(t=void 0===t?r:t;++n1?e[t-1]:void 0;return n="function"==typeof n?(e.pop(),n):void 0,Go(e,n)}));function ta(e){var t=En(e);return t.__chain__=!0,t}function na(e,t){return t(e)}var ra=Hi((function(e){var t=e.length,n=t?e[0]:0,r=this.__wrapped__,i=function(t){return Gn(t,e)};return!(t>1||this.__actions__.length)&&r instanceof Tn&&ao(n)?((r=r.slice(n,+n+(t?1:0))).__actions__.push({func:na,args:[i],thisArg:void 0}),new In(r,this.__chain__).thru((function(e){return t&&!e.length&&e.push(void 0),e}))):this.thru(i)}));var ia=_i((function(e,t,n){Oe.call(e,n)?++e[n]:Zn(e,n,1)}));var oa=Ci(To),aa=Ci(Po);function sa(e,t){return(Pa(e)?st:er)(e,Ki(t,3))}function la(e,t){return(Pa(e)?lt:tr)(e,Ki(t,3))}var ca=_i((function(e,t,n){Oe.call(e,n)?e[n].push(t):Zn(e,n,[t])}));var ua=Mr((function(e,t,n){var i=-1,o="function"==typeof t,a=Da(e)?r(e.length):[];return er(e,(function(e){a[++i]=o?ot(t,e,n):br(e,t,n)})),a})),fa=_i((function(e,t,n){Zn(e,n,t)}));function pa(e,t){return(Pa(e)?dt:Ar)(e,Ki(t,3))}var da=_i((function(e,t,n){e[n?0:1].push(t)}),(function(){return[[],[]]}));var va=Mr((function(e,t){if(null==e)return[];var n=t.length;return n>1&&so(e,t[0],t[1])?t=[]:n>2&&so(t[0],t[1],t[2])&&(t=[t[0]]),Tr(e,or(t,1),[])})),ma=Kt||function(){return Ze.Date.now()};function ha(e,t,n){return t=n?void 0:t,Ni(e,128,void 0,void 0,void 0,void 0,t=e&&null==t?e.length:t)}function ga(e,t){var n;if("function"!=typeof t)throw new be(o);return e=rs(e),function(){return--e>0&&(n=t.apply(this,arguments)),e<=1&&(t=void 0),n}}var ba=Mr((function(e,t,n){var r=1;if(n.length){var i=Vt(n,Yi(ba));r|=32}return Ni(e,r,t,n,i)})),_a=Mr((function(e,t,n){var r=3;if(n.length){var i=Vt(n,Yi(_a));r|=32}return Ni(t,r,e,n,i)}));function ya(e,t,n){var r,i,a,s,l,c,u=0,f=!1,p=!1,d=!0;if("function"!=typeof e)throw new be(o);function v(t){var n=r,o=i;return r=i=void 0,u=t,s=e.apply(o,n)}function m(e){return u=e,l=yo(g,t),f?v(e):s}function h(e){var n=e-c;return void 0===c||n>=t||n<0||p&&e-u>=a}function g(){var e=ma();if(h(e))return b(e);l=yo(g,function(e){var n=t-(e-c);return p?sn(n,a-(e-u)):n}(e))}function b(e){return l=void 0,d&&r?v(e):(r=i=void 0,s)}function _(){var e=ma(),n=h(e);if(r=arguments,i=this,c=e,n){if(void 0===l)return m(c);if(p)return ui(l),l=yo(g,t),v(c)}return void 0===l&&(l=yo(g,t)),s}return t=os(t)||0,Ua(n)&&(f=!!n.leading,a=(p="maxWait"in n)?an(os(n.maxWait)||0,t):a,d="trailing"in n?!!n.trailing:d),_.cancel=function(){void 0!==l&&ui(l),u=0,r=c=i=l=void 0},_.flush=function(){return void 0===l?s:b(ma())},_}var wa=Mr((function(e,t){return Jn(e,1,t)})),xa=Mr((function(e,t,n){return Jn(e,os(t)||0,n)}));function ka(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new be(o);var n=function(){var r=arguments,i=t?t.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var a=e.apply(this,r);return n.cache=o.set(i,a)||o,a};return n.cache=new(ka.Cache||Dn),n}function Oa(e){if("function"!=typeof e)throw new be(o);return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}ka.Cache=Dn;var $a=li((function(e,t){var n=(t=1==t.length&&Pa(t[0])?dt(t[0],jt(Ki())):dt(or(t,1),jt(Ki()))).length;return Mr((function(r){for(var i=-1,o=sn(r.length,n);++i=t})),Ta=_r(function(){return arguments}())?_r:function(e){return Ha(e)&&Oe.call(e,"callee")&&!Ge.call(e,"callee")},Pa=r.isArray,Fa=Qe?jt(Qe):function(e){return Ha(e)&&dr(e)==k};function Da(e){return null!=e&&Va(e.length)&&!Ra(e)}function za(e){return Ha(e)&&Da(e)}var La=tn||ol,Ma=et?jt(et):function(e){return Ha(e)&&dr(e)==f};function Na(e){if(!Ha(e))return!1;var t=dr(e);return t==p||"[object DOMException]"==t||"string"==typeof e.message&&"string"==typeof e.name&&!Za(e)}function Ra(e){if(!Ua(e))return!1;var t=dr(e);return t==d||t==v||"[object AsyncFunction]"==t||"[object Proxy]"==t}function Ba(e){return"number"==typeof e&&e==rs(e)}function Va(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}function Ua(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function Ha(e){return null!=e&&"object"==typeof e}var qa=tt?jt(tt):function(e){return Ha(e)&&no(e)==m};function Wa(e){return"number"==typeof e||Ha(e)&&dr(e)==h}function Za(e){if(!Ha(e)||dr(e)!=g)return!1;var t=qe(e);if(null===t)return!0;var n=Oe.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&ke.call(n)==Ee}var Ga=nt?jt(nt):function(e){return Ha(e)&&dr(e)==b};var Ya=rt?jt(rt):function(e){return Ha(e)&&no(e)==_};function Ka(e){return"string"==typeof e||!Pa(e)&&Ha(e)&&dr(e)==y}function Xa(e){return"symbol"==typeof e||Ha(e)&&dr(e)==w}var Ja=it?jt(it):function(e){return Ha(e)&&Va(e.length)&&!!Re[dr(e)]};var Qa=Fi(Cr),es=Fi((function(e,t){return e<=t}));function ts(e){if(!e)return[];if(Da(e))return Ka(e)?Wt(e):gi(e);if(Je&&e[Je])return function(e){for(var t,n=[];!(t=e.next()).done;)n.push(t.value);return n}(e[Je]());var t=no(e);return(t==m?Rt:t==_?Ut:Ss)(e)}function ns(e){return e?(e=os(e))===1/0||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}function rs(e){var t=ns(e),n=t%1;return t==t?n?t-n:t:0}function is(e){return e?Yn(rs(e),0,4294967295):0}function os(e){if("number"==typeof e)return e;if(Xa(e))return NaN;if(Ua(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=Ua(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(G,"");var n=oe.test(e);return n||se.test(e)?He(e.slice(2),n?2:8):ie.test(e)?NaN:+e}function as(e){return bi(e,ws(e))}function ss(e){return null==e?"":Xr(e)}var ls=yi((function(e,t){if(fo(t)||Da(t))bi(t,ys(t),e);else for(var n in t)Oe.call(t,n)&&Un(e,n,t[n])})),cs=yi((function(e,t){bi(t,ws(t),e)})),us=yi((function(e,t,n,r){bi(t,ws(t),e,r)})),fs=yi((function(e,t,n,r){bi(t,ys(t),e,r)})),ps=Hi(Gn);var ds=Mr((function(e,t){e=me(e);var n=-1,r=t.length,i=r>2?t[2]:void 0;for(i&&so(t[0],t[1],i)&&(r=1);++n1),t})),bi(e,Wi(e),n),r&&(n=Kn(n,7,Vi));for(var i=t.length;i--;)Qr(n,t[i]);return n}));var $s=Hi((function(e,t){return null==e?{}:function(e,t){return Pr(e,t,(function(t,n){return hs(e,n)}))}(e,t)}));function Cs(e,t){if(null==e)return{};var n=dt(Wi(e),(function(e){return[e]}));return t=Ki(t),Pr(e,n,(function(e,n){return t(e,n[0])}))}var As=Mi(ys),Es=Mi(ws);function Ss(e){return null==e?[]:It(e,ys(e))}var js=Oi((function(e,t,n){return t=t.toLowerCase(),e+(n?Is(t):t)}));function Is(e){return Ns(ss(e).toLowerCase())}function Ts(e){return(e=ss(e))&&e.replace(ce,zt).replace(Pe,"")}var Ps=Oi((function(e,t,n){return e+(n?"-":"")+t.toLowerCase()})),Fs=Oi((function(e,t,n){return e+(n?" ":"")+t.toLowerCase()})),Ds=ki("toLowerCase");var zs=Oi((function(e,t,n){return e+(n?"_":"")+t.toLowerCase()}));var Ls=Oi((function(e,t,n){return e+(n?" ":"")+Ns(t)}));var Ms=Oi((function(e,t,n){return e+(n?" ":"")+t.toUpperCase()})),Ns=ki("toUpperCase");function Rs(e,t,n){return e=ss(e),void 0===(t=n?void 0:t)?function(e){return Le.test(e)}(e)?function(e){return e.match(De)||[]}(e):function(e){return e.match(ee)||[]}(e):e.match(t)||[]}var Bs=Mr((function(e,t){try{return ot(e,void 0,t)}catch(e){return Na(e)?e:new pe(e)}})),Vs=Hi((function(e,t){return st(t,(function(t){t=Co(t),Zn(e,t,ba(e[t],e))})),e}));function Us(e){return function(){return e}}var Hs=Ai(),qs=Ai(!0);function Ws(e){return e}function Zs(e){return kr("function"==typeof e?e:Kn(e,1))}var Gs=Mr((function(e,t){return function(n){return br(n,e,t)}})),Ys=Mr((function(e,t){return function(n){return br(e,n,t)}}));function Ks(e,t,n){var r=ys(t),i=ur(t,r);null!=n||Ua(t)&&(i.length||!r.length)||(n=t,t=e,e=this,i=ur(t,ys(t)));var o=!(Ua(n)&&"chain"in n&&!n.chain),a=Ra(e);return st(i,(function(n){var r=t[n];e[n]=r,a&&(e.prototype[n]=function(){var t=this.__chain__;if(o||t){var n=e(this.__wrapped__),i=n.__actions__=gi(this.__actions__);return i.push({func:r,args:arguments,thisArg:e}),n.__chain__=t,n}return r.apply(e,vt([this.value()],arguments))})})),e}function Xs(){}var Js=Ii(dt),Qs=Ii(ct),el=Ii(gt);function tl(e){return lo(e)?$t(Co(e)):function(e){return function(t){return fr(t,e)}}(e)}var nl=Pi(),rl=Pi(!0);function il(){return[]}function ol(){return!1}var al=ji((function(e,t){return e+t}),0),sl=zi("ceil"),ll=ji((function(e,t){return e/t}),1),cl=zi("floor");var ul,fl=ji((function(e,t){return e*t}),1),pl=zi("round"),dl=ji((function(e,t){return e-t}),0);return En.after=function(e,t){if("function"!=typeof t)throw new be(o);return e=rs(e),function(){if(--e<1)return t.apply(this,arguments)}},En.ary=ha,En.assign=ls,En.assignIn=cs,En.assignInWith=us,En.assignWith=fs,En.at=ps,En.before=ga,En.bind=ba,En.bindAll=Vs,En.bindKey=_a,En.castArray=function(){if(!arguments.length)return[];var e=arguments[0];return Pa(e)?e:[e]},En.chain=ta,En.chunk=function(e,t,n){t=(n?so(e,t,n):void 0===t)?1:an(rs(t),0);var i=null==e?0:e.length;if(!i||t<1)return[];for(var o=0,a=0,s=r(Jt(i/t));oi?0:i+n),(r=void 0===r||r>i?i:rs(r))<0&&(r+=i),r=n>r?0:is(r);n>>0)?(e=ss(e))&&("string"==typeof t||null!=t&&!Ga(t))&&!(t=Xr(t))&&Nt(e)?ci(Wt(e),0,n):e.split(t,n):[]},En.spread=function(e,t){if("function"!=typeof e)throw new be(o);return t=null==t?0:an(rs(t),0),Mr((function(n){var r=n[t],i=ci(n,0,t);return r&&vt(i,r),ot(e,this,i)}))},En.tail=function(e){var t=null==e?0:e.length;return t?qr(e,1,t):[]},En.take=function(e,t,n){return e&&e.length?qr(e,0,(t=n||void 0===t?1:rs(t))<0?0:t):[]},En.takeRight=function(e,t,n){var r=null==e?0:e.length;return r?qr(e,(t=r-(t=n||void 0===t?1:rs(t)))<0?0:t,r):[]},En.takeRightWhile=function(e,t){return e&&e.length?ti(e,Ki(t,3),!1,!0):[]},En.takeWhile=function(e,t){return e&&e.length?ti(e,Ki(t,3)):[]},En.tap=function(e,t){return t(e),e},En.throttle=function(e,t,n){var r=!0,i=!0;if("function"!=typeof e)throw new be(o);return Ua(n)&&(r="leading"in n?!!n.leading:r,i="trailing"in n?!!n.trailing:i),ya(e,t,{leading:r,maxWait:t,trailing:i})},En.thru=na,En.toArray=ts,En.toPairs=As,En.toPairsIn=Es,En.toPath=function(e){return Pa(e)?dt(e,Co):Xa(e)?[e]:gi($o(ss(e)))},En.toPlainObject=as,En.transform=function(e,t,n){var r=Pa(e),i=r||La(e)||Ja(e);if(t=Ki(t,4),null==n){var o=e&&e.constructor;n=i?r?new o:[]:Ua(e)&&Ra(o)?Sn(qe(e)):{}}return(i?st:lr)(e,(function(e,r,i){return t(n,e,r,i)})),n},En.unary=function(e){return ha(e,1)},En.union=Ho,En.unionBy=qo,En.unionWith=Wo,En.uniq=function(e){return e&&e.length?Jr(e):[]},En.uniqBy=function(e,t){return e&&e.length?Jr(e,Ki(t,2)):[]},En.uniqWith=function(e,t){return t="function"==typeof t?t:void 0,e&&e.length?Jr(e,void 0,t):[]},En.unset=function(e,t){return null==e||Qr(e,t)},En.unzip=Zo,En.unzipWith=Go,En.update=function(e,t,n){return null==e?e:ei(e,t,ai(n))},En.updateWith=function(e,t,n,r){return r="function"==typeof r?r:void 0,null==e?e:ei(e,t,ai(n),r)},En.values=Ss,En.valuesIn=function(e){return null==e?[]:It(e,ws(e))},En.without=Yo,En.words=Rs,En.wrap=function(e,t){return Ca(ai(t),e)},En.xor=Ko,En.xorBy=Xo,En.xorWith=Jo,En.zip=Qo,En.zipObject=function(e,t){return ii(e||[],t||[],Un)},En.zipObjectDeep=function(e,t){return ii(e||[],t||[],Br)},En.zipWith=ea,En.entries=As,En.entriesIn=Es,En.extend=cs,En.extendWith=us,Ks(En,En),En.add=al,En.attempt=Bs,En.camelCase=js,En.capitalize=Is,En.ceil=sl,En.clamp=function(e,t,n){return void 0===n&&(n=t,t=void 0),void 0!==n&&(n=(n=os(n))==n?n:0),void 0!==t&&(t=(t=os(t))==t?t:0),Yn(os(e),t,n)},En.clone=function(e){return Kn(e,4)},En.cloneDeep=function(e){return Kn(e,5)},En.cloneDeepWith=function(e,t){return Kn(e,5,t="function"==typeof t?t:void 0)},En.cloneWith=function(e,t){return Kn(e,4,t="function"==typeof t?t:void 0)},En.conformsTo=function(e,t){return null==t||Xn(e,t,ys(t))},En.deburr=Ts,En.defaultTo=function(e,t){return null==e||e!=e?t:e},En.divide=ll,En.endsWith=function(e,t,n){e=ss(e),t=Xr(t);var r=e.length,i=n=void 0===n?r:Yn(rs(n),0,r);return(n-=t.length)>=0&&e.slice(n,i)==t},En.eq=Sa,En.escape=function(e){return(e=ss(e))&&N.test(e)?e.replace(L,Lt):e},En.escapeRegExp=function(e){return(e=ss(e))&&Z.test(e)?e.replace(W,"\\$&"):e},En.every=function(e,t,n){var r=Pa(e)?ct:nr;return n&&so(e,t,n)&&(t=void 0),r(e,Ki(t,3))},En.find=oa,En.findIndex=To,En.findKey=function(e,t){return _t(e,Ki(t,3),lr)},En.findLast=aa,En.findLastIndex=Po,En.findLastKey=function(e,t){return _t(e,Ki(t,3),cr)},En.floor=cl,En.forEach=sa,En.forEachRight=la,En.forIn=function(e,t){return null==e?e:ar(e,Ki(t,3),ws)},En.forInRight=function(e,t){return null==e?e:sr(e,Ki(t,3),ws)},En.forOwn=function(e,t){return e&&lr(e,Ki(t,3))},En.forOwnRight=function(e,t){return e&&cr(e,Ki(t,3))},En.get=ms,En.gt=ja,En.gte=Ia,En.has=function(e,t){return null!=e&&ro(e,t,mr)},En.hasIn=hs,En.head=Do,En.identity=Ws,En.includes=function(e,t,n,r){e=Da(e)?e:Ss(e),n=n&&!r?rs(n):0;var i=e.length;return n<0&&(n=an(i+n,0)),Ka(e)?n<=i&&e.indexOf(t,n)>-1:!!i&&wt(e,t,n)>-1},En.indexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=null==n?0:rs(n);return i<0&&(i=an(r+i,0)),wt(e,t,i)},En.inRange=function(e,t,n){return t=ns(t),void 0===n?(n=t,t=0):n=ns(n),function(e,t,n){return e>=sn(t,n)&&e=-9007199254740991&&e<=9007199254740991},En.isSet=Ya,En.isString=Ka,En.isSymbol=Xa,En.isTypedArray=Ja,En.isUndefined=function(e){return void 0===e},En.isWeakMap=function(e){return Ha(e)&&no(e)==x},En.isWeakSet=function(e){return Ha(e)&&"[object WeakSet]"==dr(e)},En.join=function(e,t){return null==e?"":rn.call(e,t)},En.kebabCase=Ps,En.last=No,En.lastIndexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=r;return void 0!==n&&(i=(i=rs(n))<0?an(r+i,0):sn(i,r-1)),t==t?function(e,t,n){for(var r=n+1;r--;)if(e[r]===t)return r;return r}(e,t,i):yt(e,kt,i,!0)},En.lowerCase=Fs,En.lowerFirst=Ds,En.lt=Qa,En.lte=es,En.max=function(e){return e&&e.length?rr(e,Ws,vr):void 0},En.maxBy=function(e,t){return e&&e.length?rr(e,Ki(t,2),vr):void 0},En.mean=function(e){return Ot(e,Ws)},En.meanBy=function(e,t){return Ot(e,Ki(t,2))},En.min=function(e){return e&&e.length?rr(e,Ws,Cr):void 0},En.minBy=function(e,t){return e&&e.length?rr(e,Ki(t,2),Cr):void 0},En.stubArray=il,En.stubFalse=ol,En.stubObject=function(){return{}},En.stubString=function(){return""},En.stubTrue=function(){return!0},En.multiply=fl,En.nth=function(e,t){return e&&e.length?Ir(e,rs(t)):void 0},En.noConflict=function(){return Ze._===this&&(Ze._=Se),this},En.noop=Xs,En.now=ma,En.pad=function(e,t,n){e=ss(e);var r=(t=rs(t))?qt(e):0;if(!t||r>=t)return e;var i=(t-r)/2;return Ti(Qt(i),n)+e+Ti(Jt(i),n)},En.padEnd=function(e,t,n){e=ss(e);var r=(t=rs(t))?qt(e):0;return t&&rt){var r=e;e=t,t=r}if(n||e%1||t%1){var i=un();return sn(e+i*(t-e+Ue("1e-"+((i+"").length-1))),t)}return zr(e,t)},En.reduce=function(e,t,n){var r=Pa(e)?mt:At,i=arguments.length<3;return r(e,Ki(t,4),n,i,er)},En.reduceRight=function(e,t,n){var r=Pa(e)?ht:At,i=arguments.length<3;return r(e,Ki(t,4),n,i,tr)},En.repeat=function(e,t,n){return t=(n?so(e,t,n):void 0===t)?1:rs(t),Lr(ss(e),t)},En.replace=function(){var e=arguments,t=ss(e[0]);return e.length<3?t:t.replace(e[1],e[2])},En.result=function(e,t,n){var r=-1,i=(t=si(t,e)).length;for(i||(i=1,e=void 0);++r9007199254740991)return[];var n=4294967295,r=sn(e,4294967295);e-=4294967295;for(var i=St(r,t=Ki(t));++n=o)return e;var s=n-qt(r);if(s<1)return r;var l=a?ci(a,0,s).join(""):e.slice(0,s);if(void 0===i)return l+r;if(a&&(s+=l.length-s),Ga(i)){if(e.slice(s).search(i)){var c,u=l;for(i.global||(i=he(i.source,ss(re.exec(i))+"g")),i.lastIndex=0;c=i.exec(u);)var f=c.index;l=l.slice(0,void 0===f?s:f)}}else if(e.indexOf(Xr(i),s)!=s){var p=l.lastIndexOf(i);p>-1&&(l=l.slice(0,p))}return l+r},En.unescape=function(e){return(e=ss(e))&&M.test(e)?e.replace(z,Zt):e},En.uniqueId=function(e){var t=++$e;return ss(e)+t},En.upperCase=Ms,En.upperFirst=Ns,En.each=sa,En.eachRight=la,En.first=Do,Ks(En,(ul={},lr(En,(function(e,t){Oe.call(En.prototype,t)||(ul[t]=e)})),ul),{chain:!1}),En.VERSION="4.17.15",st(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(e){En[e].placeholder=En})),st(["drop","take"],(function(e,t){Tn.prototype[e]=function(n){n=void 0===n?1:an(rs(n),0);var r=this.__filtered__&&!t?new Tn(this):this.clone();return r.__filtered__?r.__takeCount__=sn(n,r.__takeCount__):r.__views__.push({size:sn(n,4294967295),type:e+(r.__dir__<0?"Right":"")}),r},Tn.prototype[e+"Right"]=function(t){return this.reverse()[e](t).reverse()}})),st(["filter","map","takeWhile"],(function(e,t){var n=t+1,r=1==n||3==n;Tn.prototype[e]=function(e){var t=this.clone();return t.__iteratees__.push({iteratee:Ki(e,3),type:n}),t.__filtered__=t.__filtered__||r,t}})),st(["head","last"],(function(e,t){var n="take"+(t?"Right":"");Tn.prototype[e]=function(){return this[n](1).value()[0]}})),st(["initial","tail"],(function(e,t){var n="drop"+(t?"":"Right");Tn.prototype[e]=function(){return this.__filtered__?new Tn(this):this[n](1)}})),Tn.prototype.compact=function(){return this.filter(Ws)},Tn.prototype.find=function(e){return this.filter(e).head()},Tn.prototype.findLast=function(e){return this.reverse().find(e)},Tn.prototype.invokeMap=Mr((function(e,t){return"function"==typeof e?new Tn(this):this.map((function(n){return br(n,e,t)}))})),Tn.prototype.reject=function(e){return this.filter(Oa(Ki(e)))},Tn.prototype.slice=function(e,t){e=rs(e);var n=this;return n.__filtered__&&(e>0||t<0)?new Tn(n):(e<0?n=n.takeRight(-e):e&&(n=n.drop(e)),void 0!==t&&(n=(t=rs(t))<0?n.dropRight(-t):n.take(t-e)),n)},Tn.prototype.takeRightWhile=function(e){return this.reverse().takeWhile(e).reverse()},Tn.prototype.toArray=function(){return this.take(4294967295)},lr(Tn.prototype,(function(e,t){var n=/^(?:filter|find|map|reject)|While$/.test(t),r=/^(?:head|last)$/.test(t),i=En[r?"take"+("last"==t?"Right":""):t],o=r||/^find/.test(t);i&&(En.prototype[t]=function(){var t=this.__wrapped__,a=r?[1]:arguments,s=t instanceof Tn,l=a[0],c=s||Pa(t),u=function(e){var t=i.apply(En,vt([e],a));return r&&f?t[0]:t};c&&n&&"function"==typeof l&&1!=l.length&&(s=c=!1);var f=this.__chain__,p=!!this.__actions__.length,d=o&&!f,v=s&&!p;if(!o&&c){t=v?t:new Tn(this);var m=e.apply(t,a);return m.__actions__.push({func:na,args:[u],thisArg:void 0}),new In(m,f)}return d&&v?e.apply(this,a):(m=this.thru(u),d?r?m.value()[0]:m.value():m)})})),st(["pop","push","shift","sort","splice","unshift"],(function(e){var t=_e[e],n=/^(?:push|sort|unshift)$/.test(e)?"tap":"thru",r=/^(?:pop|shift)$/.test(e);En.prototype[e]=function(){var e=arguments;if(r&&!this.__chain__){var i=this.value();return t.apply(Pa(i)?i:[],e)}return this[n]((function(n){return t.apply(Pa(n)?n:[],e)}))}})),lr(Tn.prototype,(function(e,t){var n=En[t];if(n){var r=n.name+"";Oe.call(_n,r)||(_n[r]=[]),_n[r].push({name:t,func:n})}})),_n[Ei(void 0,2).name]=[{name:"wrapper",func:void 0}],Tn.prototype.clone=function(){var e=new Tn(this.__wrapped__);return e.__actions__=gi(this.__actions__),e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=gi(this.__iteratees__),e.__takeCount__=this.__takeCount__,e.__views__=gi(this.__views__),e},Tn.prototype.reverse=function(){if(this.__filtered__){var e=new Tn(this);e.__dir__=-1,e.__filtered__=!0}else(e=this.clone()).__dir__*=-1;return e},Tn.prototype.value=function(){var e=this.__wrapped__.value(),t=this.__dir__,n=Pa(e),r=t<0,i=n?e.length:0,o=function(e,t,n){var r=-1,i=n.length;for(;++r=this.__values__.length;return{done:e,value:e?void 0:this.__values__[this.__index__++]}},En.prototype.plant=function(e){for(var t,n=this;n instanceof jn;){var r=Eo(n);r.__index__=0,r.__values__=void 0,t?i.__wrapped__=r:t=r;var i=r;n=n.__wrapped__}return i.__wrapped__=e,t},En.prototype.reverse=function(){var e=this.__wrapped__;if(e instanceof Tn){var t=e;return this.__actions__.length&&(t=new Tn(this)),(t=t.reverse()).__actions__.push({func:na,args:[Uo],thisArg:void 0}),new In(t,this.__chain__)}return this.thru(Uo)},En.prototype.toJSON=En.prototype.valueOf=En.prototype.value=function(){return ni(this.__wrapped__,this.__actions__)},En.prototype.first=En.prototype.head,Je&&(En.prototype[Je]=function(){return this}),En}();Ze._=Gt,void 0===(i=function(){return Gt}.call(t,n,t,r))||(r.exports=i)}).call(this)}).call(this,n(9),n(70)(e))},function(e,t,n){"use strict";var r=n(54),i=Object.prototype.toString;function o(e){return"[object Array]"===i.call(e)}function a(e){return void 0===e}function s(e){return null!==e&&"object"==typeof e}function l(e){return"[object Function]"===i.call(e)}function c(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),o(e))for(var n=0,r=e.length;n-1;i--){var o=n[i],a=(o.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(a)>-1&&(r=o)}return g.head.insertBefore(t,r),e}}function K(){for(var e=12,t="";e-- >0;)t+="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"[62*Math.random()|0];return t}function X(e){return"".concat(e).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function J(e){return Object.keys(e||{}).reduce((function(t,n){return t+"".concat(n,": ").concat(e[n],";")}),"")}function Q(e){return e.size!==G.size||e.x!==G.x||e.y!==G.y||e.rotate!==G.rotate||e.flipX||e.flipY}function ee(e){var t=e.transform,n=e.containerWidth,r=e.iconWidth,i={transform:"translate(".concat(n/2," 256)")},o="translate(".concat(32*t.x,", ").concat(32*t.y,") "),a="scale(".concat(t.size/16*(t.flipX?-1:1),", ").concat(t.size/16*(t.flipY?-1:1),") "),s="rotate(".concat(t.rotate," 0 0)");return{outer:i,inner:{transform:"".concat(o," ").concat(a," ").concat(s)},path:{transform:"translate(".concat(r/2*-1," -256)")}}}var te={x:0,y:0,width:"100%",height:"100%"};function ne(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return e.attributes&&(e.attributes.fill||t)&&(e.attributes.fill="black"),e}function re(e){var t=e.icons,n=t.main,r=t.mask,i=e.prefix,o=e.iconName,a=e.transform,l=e.symbol,c=e.title,u=e.maskId,f=e.titleId,p=e.extra,d=e.watchable,v=void 0!==d&&d,m=r.found?r:n,h=m.width,g=m.height,b="fa-w-".concat(Math.ceil(h/g*16)),_=[C.replacementClass,o?"".concat(C.familyPrefix,"-").concat(o):"",b].filter((function(e){return-1===p.classes.indexOf(e)})).concat(p.classes).join(" "),y={children:[],attributes:s({},p.attributes,{"data-prefix":i,"data-icon":o,class:_,role:p.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(h," ").concat(g)})};v&&(y.attributes["data-fa-i2svg"]=""),c&&y.children.push({tag:"title",attributes:{id:y.attributes["aria-labelledby"]||"title-".concat(f||K())},children:[c]});var w=s({},y,{prefix:i,iconName:o,main:n,mask:r,maskId:u,transform:a,symbol:l,styles:p.styles}),x=r.found&&n.found?function(e){var t,n=e.children,r=e.attributes,i=e.main,o=e.mask,a=e.maskId,l=e.transform,c=i.width,u=i.icon,f=o.width,p=o.icon,d=ee({transform:l,containerWidth:f,iconWidth:c}),v={tag:"rect",attributes:s({},te,{fill:"white"})},m=u.children?{children:u.children.map(ne)}:{},h={tag:"g",attributes:s({},d.inner),children:[ne(s({tag:u.tag,attributes:s({},u.attributes,d.path)},m))]},g={tag:"g",attributes:s({},d.outer),children:[h]},b="mask-".concat(a||K()),_="clip-".concat(a||K()),y={tag:"mask",attributes:s({},te,{id:b,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[v,g]},w={tag:"defs",children:[{tag:"clipPath",attributes:{id:_},children:(t=p,"g"===t.tag?t.children:[t])},y]};return n.push(w,{tag:"rect",attributes:s({fill:"currentColor","clip-path":"url(#".concat(_,")"),mask:"url(#".concat(b,")")},te)}),{children:n,attributes:r}}(w):function(e){var t=e.children,n=e.attributes,r=e.main,i=e.transform,o=J(e.styles);if(o.length>0&&(n.style=o),Q(i)){var a=ee({transform:i,containerWidth:r.width,iconWidth:r.width});t.push({tag:"g",attributes:s({},a.outer),children:[{tag:"g",attributes:s({},a.inner),children:[{tag:r.icon.tag,children:r.icon.children,attributes:s({},r.icon.attributes,a.path)}]}]})}else t.push(r.icon);return{children:t,attributes:n}}(w),k=x.children,O=x.attributes;return w.children=k,w.attributes=O,l?function(e){var t=e.prefix,n=e.iconName,r=e.children,i=e.attributes,o=e.symbol;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:s({},i,{id:!0===o?"".concat(t,"-").concat(C.familyPrefix,"-").concat(n):o}),children:r}]}]}(w):function(e){var t=e.children,n=e.main,r=e.mask,i=e.attributes,o=e.styles,a=e.transform;if(Q(a)&&n.found&&!r.found){var l={x:n.width/n.height/2,y:.5};i.style=J(s({},o,{"transform-origin":"".concat(l.x+a.x/16,"em ").concat(l.y+a.y/16,"em")}))}return[{tag:"svg",attributes:i,children:t}]}(w)}function ie(e){var t=e.content,n=e.width,r=e.height,i=e.transform,o=e.title,a=e.extra,l=e.watchable,c=void 0!==l&&l,u=s({},a.attributes,o?{title:o}:{},{class:a.classes.join(" ")});c&&(u["data-fa-i2svg"]="");var f=s({},a.styles);Q(i)&&(f.transform=function(e){var t=e.transform,n=e.width,r=void 0===n?16:n,i=e.height,o=void 0===i?16:i,a=e.startCentered,s=void 0!==a&&a,l="";return l+=s&&y?"translate(".concat(t.x/Z-r/2,"em, ").concat(t.y/Z-o/2,"em) "):s?"translate(calc(-50% + ".concat(t.x/Z,"em), calc(-50% + ").concat(t.y/Z,"em)) "):"translate(".concat(t.x/Z,"em, ").concat(t.y/Z,"em) "),l+="scale(".concat(t.size/Z*(t.flipX?-1:1),", ").concat(t.size/Z*(t.flipY?-1:1),") "),l+="rotate(".concat(t.rotate,"deg) ")}({transform:i,startCentered:!0,width:n,height:r}),f["-webkit-transform"]=f.transform);var p=J(f);p.length>0&&(u.style=p);var d=[];return d.push({tag:"span",attributes:u,children:[t]}),o&&d.push({tag:"span",attributes:{class:"sr-only"},children:[o]}),d}var oe=function(){},ae=(C.measurePerformance&&b&&b.mark&&b.measure,function(e,t,n,r){var i,o,a,s=Object.keys(e),l=s.length,c=void 0!==r?function(e,t){return function(n,r,i,o){return e.call(t,n,r,i,o)}}(t,r):t;for(void 0===n?(i=1,a=e[s[0]]):(i=0,a=n);i2&&void 0!==arguments[2]?arguments[2]:{},r=n.skipHooks,i=void 0!==r&&r,o=Object.keys(t).reduce((function(e,n){var r=t[n];return!!r.icon?e[r.iconName]=r.icon:e[n]=r,e}),{});"function"!=typeof E.hooks.addPack||i?E.styles[e]=s({},E.styles[e]||{},o):E.hooks.addPack(e,o),"fas"===e&&se("fa",t)}var le=E.styles,ce=E.shims,ue=function(){var e=function(e){return ae(le,(function(t,n,r){return t[r]=ae(n,e,{}),t}),{})};e((function(e,t,n){return t[3]&&(e[t[3]]=n),e})),e((function(e,t,n){var r=t[2];return e[n]=n,r.forEach((function(t){e[t]=n})),e}));var t="far"in le;ae(ce,(function(e,n){var r=n[0],i=n[1],o=n[2];return"far"!==i||t||(i="fas"),e[r]={prefix:i,iconName:o},e}),{})};ue();E.styles;function fe(e,t,n){if(e&&e[t]&&e[t][n])return{prefix:t,iconName:n,icon:e[t][n]}}function pe(e){var t=e.tag,n=e.attributes,r=void 0===n?{}:n,i=e.children,o=void 0===i?[]:i;return"string"==typeof e?X(e):"<".concat(t," ").concat(function(e){return Object.keys(e||{}).reduce((function(t,n){return t+"".concat(n,'="').concat(X(e[n]),'" ')}),"").trim()}(r),">").concat(o.map(pe).join(""),"")}var de=function(e){var t={size:16,x:0,y:0,flipX:!1,flipY:!1,rotate:0};return e?e.toLowerCase().split(" ").reduce((function(e,t){var n=t.toLowerCase().split("-"),r=n[0],i=n.slice(1).join("-");if(r&&"h"===i)return e.flipX=!0,e;if(r&&"v"===i)return e.flipY=!0,e;if(i=parseFloat(i),isNaN(i))return e;switch(r){case"grow":e.size=e.size+i;break;case"shrink":e.size=e.size-i;break;case"left":e.x=e.x-i;break;case"right":e.x=e.x+i;break;case"up":e.y=e.y-i;break;case"down":e.y=e.y+i;break;case"rotate":e.rotate=e.rotate+i}return e}),t):t};function ve(e){this.name="MissingIcon",this.message=e||"Icon unavailable",this.stack=(new Error).stack}ve.prototype=Object.create(Error.prototype),ve.prototype.constructor=ve;var me={fill:"currentColor"},he={attributeType:"XML",repeatCount:"indefinite",dur:"2s"},ge={tag:"path",attributes:s({},me,{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"})},be=s({},he,{attributeName:"opacity"});s({},me,{cx:"256",cy:"364",r:"28"}),s({},he,{attributeName:"r",values:"28;14;28;28;14;28;"}),s({},be,{values:"1;0;1;1;0;1;"}),s({},me,{opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"}),s({},be,{values:"1;0;0;0;0;1;"}),s({},me,{opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"}),s({},be,{values:"0;0;1;1;0;0;"}),E.styles;function _e(e){var t=e[0],n=e[1],r=l(e.slice(4),1)[0];return{found:!0,width:t,height:n,icon:Array.isArray(r)?{tag:"g",attributes:{class:"".concat(C.familyPrefix,"-").concat(k.GROUP)},children:[{tag:"path",attributes:{class:"".concat(C.familyPrefix,"-").concat(k.SECONDARY),fill:"currentColor",d:r[0]}},{tag:"path",attributes:{class:"".concat(C.familyPrefix,"-").concat(k.PRIMARY),fill:"currentColor",d:r[1]}}]}:{tag:"path",attributes:{fill:"currentColor",d:r}}}}E.styles;function ye(){var e="svg-inline--fa",t=C.familyPrefix,n=C.replacementClass,r='svg:not(:root).svg-inline--fa {\n overflow: visible;\n}\n\n.svg-inline--fa {\n display: inline-block;\n font-size: inherit;\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n}\n.svg-inline--fa.fa-lg {\n vertical-align: -0.225em;\n}\n.svg-inline--fa.fa-w-1 {\n width: 0.0625em;\n}\n.svg-inline--fa.fa-w-2 {\n width: 0.125em;\n}\n.svg-inline--fa.fa-w-3 {\n width: 0.1875em;\n}\n.svg-inline--fa.fa-w-4 {\n width: 0.25em;\n}\n.svg-inline--fa.fa-w-5 {\n width: 0.3125em;\n}\n.svg-inline--fa.fa-w-6 {\n width: 0.375em;\n}\n.svg-inline--fa.fa-w-7 {\n width: 0.4375em;\n}\n.svg-inline--fa.fa-w-8 {\n width: 0.5em;\n}\n.svg-inline--fa.fa-w-9 {\n width: 0.5625em;\n}\n.svg-inline--fa.fa-w-10 {\n width: 0.625em;\n}\n.svg-inline--fa.fa-w-11 {\n width: 0.6875em;\n}\n.svg-inline--fa.fa-w-12 {\n width: 0.75em;\n}\n.svg-inline--fa.fa-w-13 {\n width: 0.8125em;\n}\n.svg-inline--fa.fa-w-14 {\n width: 0.875em;\n}\n.svg-inline--fa.fa-w-15 {\n width: 0.9375em;\n}\n.svg-inline--fa.fa-w-16 {\n width: 1em;\n}\n.svg-inline--fa.fa-w-17 {\n width: 1.0625em;\n}\n.svg-inline--fa.fa-w-18 {\n width: 1.125em;\n}\n.svg-inline--fa.fa-w-19 {\n width: 1.1875em;\n}\n.svg-inline--fa.fa-w-20 {\n width: 1.25em;\n}\n.svg-inline--fa.fa-pull-left {\n margin-right: 0.3em;\n width: auto;\n}\n.svg-inline--fa.fa-pull-right {\n margin-left: 0.3em;\n width: auto;\n}\n.svg-inline--fa.fa-border {\n height: 1.5em;\n}\n.svg-inline--fa.fa-li {\n width: 2em;\n}\n.svg-inline--fa.fa-fw {\n width: 1.25em;\n}\n\n.fa-layers svg.svg-inline--fa {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.fa-layers {\n display: inline-block;\n height: 1em;\n position: relative;\n text-align: center;\n vertical-align: -0.125em;\n width: 1em;\n}\n.fa-layers svg.svg-inline--fa {\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-counter, .fa-layers-text {\n display: inline-block;\n position: absolute;\n text-align: center;\n}\n\n.fa-layers-text {\n left: 50%;\n top: 50%;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-counter {\n background-color: #ff253a;\n border-radius: 1em;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n color: #fff;\n height: 1.5em;\n line-height: 1;\n max-width: 5em;\n min-width: 1.5em;\n overflow: hidden;\n padding: 0.25em;\n right: 0;\n text-overflow: ellipsis;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-bottom-right {\n bottom: 0;\n right: 0;\n top: auto;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: bottom right;\n transform-origin: bottom right;\n}\n\n.fa-layers-bottom-left {\n bottom: 0;\n left: 0;\n right: auto;\n top: auto;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: bottom left;\n transform-origin: bottom left;\n}\n\n.fa-layers-top-right {\n right: 0;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-top-left {\n left: 0;\n right: auto;\n top: 0;\n -webkit-transform: scale(0.25);\n transform: scale(0.25);\n -webkit-transform-origin: top left;\n transform-origin: top left;\n}\n\n.fa-lg {\n font-size: 1.3333333333em;\n line-height: 0.75em;\n vertical-align: -0.0667em;\n}\n\n.fa-xs {\n font-size: 0.75em;\n}\n\n.fa-sm {\n font-size: 0.875em;\n}\n\n.fa-1x {\n font-size: 1em;\n}\n\n.fa-2x {\n font-size: 2em;\n}\n\n.fa-3x {\n font-size: 3em;\n}\n\n.fa-4x {\n font-size: 4em;\n}\n\n.fa-5x {\n font-size: 5em;\n}\n\n.fa-6x {\n font-size: 6em;\n}\n\n.fa-7x {\n font-size: 7em;\n}\n\n.fa-8x {\n font-size: 8em;\n}\n\n.fa-9x {\n font-size: 9em;\n}\n\n.fa-10x {\n font-size: 10em;\n}\n\n.fa-fw {\n text-align: center;\n width: 1.25em;\n}\n\n.fa-ul {\n list-style-type: none;\n margin-left: 2.5em;\n padding-left: 0;\n}\n.fa-ul > li {\n position: relative;\n}\n\n.fa-li {\n left: -2em;\n position: absolute;\n text-align: center;\n width: 2em;\n line-height: inherit;\n}\n\n.fa-border {\n border: solid 0.08em #eee;\n border-radius: 0.1em;\n padding: 0.2em 0.25em 0.15em;\n}\n\n.fa-pull-left {\n float: left;\n}\n\n.fa-pull-right {\n float: right;\n}\n\n.fa.fa-pull-left,\n.fas.fa-pull-left,\n.far.fa-pull-left,\n.fal.fa-pull-left,\n.fab.fa-pull-left {\n margin-right: 0.3em;\n}\n.fa.fa-pull-right,\n.fas.fa-pull-right,\n.far.fa-pull-right,\n.fal.fa-pull-right,\n.fab.fa-pull-right {\n margin-left: 0.3em;\n}\n\n.fa-spin {\n -webkit-animation: fa-spin 2s infinite linear;\n animation: fa-spin 2s infinite linear;\n}\n\n.fa-pulse {\n -webkit-animation: fa-spin 1s infinite steps(8);\n animation: fa-spin 1s infinite steps(8);\n}\n\n@-webkit-keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n.fa-rotate-90 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg);\n}\n\n.fa-rotate-180 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n}\n\n.fa-rotate-270 {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";\n -webkit-transform: rotate(270deg);\n transform: rotate(270deg);\n}\n\n.fa-flip-horizontal {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";\n -webkit-transform: scale(-1, 1);\n transform: scale(-1, 1);\n}\n\n.fa-flip-vertical {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";\n -webkit-transform: scale(1, -1);\n transform: scale(1, -1);\n}\n\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";\n -webkit-transform: scale(-1, -1);\n transform: scale(-1, -1);\n}\n\n:root .fa-rotate-90,\n:root .fa-rotate-180,\n:root .fa-rotate-270,\n:root .fa-flip-horizontal,\n:root .fa-flip-vertical,\n:root .fa-flip-both {\n -webkit-filter: none;\n filter: none;\n}\n\n.fa-stack {\n display: inline-block;\n height: 2em;\n position: relative;\n width: 2.5em;\n}\n\n.fa-stack-1x,\n.fa-stack-2x {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.svg-inline--fa.fa-stack-1x {\n height: 1em;\n width: 1.25em;\n}\n.svg-inline--fa.fa-stack-2x {\n height: 2em;\n width: 2.5em;\n}\n\n.fa-inverse {\n color: #fff;\n}\n\n.sr-only {\n border: 0;\n clip: rect(0, 0, 0, 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n}\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n clip: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n position: static;\n width: auto;\n}\n\n.svg-inline--fa .fa-primary {\n fill: var(--fa-primary-color, currentColor);\n opacity: 1;\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa .fa-secondary {\n fill: var(--fa-secondary-color, currentColor);\n opacity: 0.4;\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-primary {\n opacity: 0.4;\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\n opacity: 1;\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa mask .fa-primary,\n.svg-inline--fa mask .fa-secondary {\n fill: black;\n}\n\n.fad.fa-inverse {\n color: #fff;\n}';if("fa"!==t||n!==e){var i=new RegExp("\\.".concat("fa","\\-"),"g"),o=new RegExp("\\--".concat("fa","\\-"),"g"),a=new RegExp("\\.".concat(e),"g");r=r.replace(i,".".concat(t,"-")).replace(o,"--".concat(t,"-")).replace(a,".".concat(n))}return r}function we(){C.autoAddCss&&!Ce&&(Y(ye()),Ce=!0)}function xe(e,t){return Object.defineProperty(e,"abstract",{get:t}),Object.defineProperty(e,"html",{get:function(){return e.abstract.map((function(e){return pe(e)}))}}),Object.defineProperty(e,"node",{get:function(){if(_){var t=g.createElement("div");return t.innerHTML=e.html,t.children}}}),e}function ke(e){var t=e.prefix,n=void 0===t?"fa":t,r=e.iconName;if(r)return fe($e.definitions,n,r)||fe(E.styles,n,r)}var Oe,$e=new(function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.definitions={}}var t,n,r;return t=e,(n=[{key:"add",value:function(){for(var e=this,t=arguments.length,n=new Array(t),r=0;r1&&void 0!==arguments[1]?arguments[1]:{},n=t.transform,r=void 0===n?G:n,i=t.symbol,o=void 0!==i&&i,a=t.mask,l=void 0===a?null:a,c=t.maskId,u=void 0===c?null:c,f=t.title,p=void 0===f?null:f,d=t.titleId,v=void 0===d?null:d,m=t.classes,h=void 0===m?[]:m,g=t.attributes,b=void 0===g?{}:g,_=t.styles,y=void 0===_?{}:_;if(e){var w=e.prefix,x=e.iconName,k=e.icon;return xe(s({type:"icon"},e),(function(){return we(),C.autoA11y&&(p?b["aria-labelledby"]="".concat(C.replacementClass,"-title-").concat(v||K()):(b["aria-hidden"]="true",b.focusable="false")),re({icons:{main:_e(k),mask:l?_e(l.icon):{found:!1,width:null,height:null,icon:{}}},prefix:w,iconName:x,transform:s({},G,r),symbol:o,title:p,maskId:u,titleId:v,extra:{attributes:b,styles:y,classes:h}})}))}},function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=(e||{}).icon?e:ke(e||{}),r=t.mask;return r&&(r=(r||{}).icon?r:ke(r||{})),Oe(n,s({},t,{mask:r}))}),Se=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.transform,r=void 0===n?G:n,i=t.title,o=void 0===i?null:i,a=t.classes,l=void 0===a?[]:a,u=t.attributes,f=void 0===u?{}:u,p=t.styles,d=void 0===p?{}:p;return xe({type:"text",content:e},(function(){return we(),ie({content:e,transform:s({},G,r),title:o,extra:{attributes:f,styles:d,classes:["".concat(C.familyPrefix,"-layers-text")].concat(c(l))}})}))}}).call(this,n(9),n(63).setImmediate)},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){!function(e,t){"use strict";t=t&&t.hasOwnProperty("default")?t.default:t;var n={code:"en",messages:{alpha:"The {_field_} field may only contain alphabetic characters",alpha_num:"The {_field_} field may only contain alpha-numeric characters",alpha_dash:"The {_field_} field may contain alpha-numeric characters as well as dashes and underscores",alpha_spaces:"The {_field_} field may only contain alphabetic characters as well as spaces",between:"The {_field_} field must be between {min} and {max}",confirmed:"The {_field_} field confirmation does not match",digits:"The {_field_} field must be numeric and exactly contain {length} digits",dimensions:"The {_field_} field must be {width} pixels by {height} pixels",email:"The {_field_} field must be a valid email",excluded:"The {_field_} field is not a valid value",ext:"The {_field_} field is not a valid file",image:"The {_field_} field must be an image",integer:"The {_field_} field must be an integer",length:"The {_field_} field must be {length} long",max_value:"The {_field_} field must be {max} or less",max:"The {_field_} field may not be greater than {length} characters",mimes:"The {_field_} field must have a valid file type",min_value:"The {_field_} field must be {min} or more",min:"The {_field_} field must be at least {length} characters",numeric:"The {_field_} field may only contain numeric characters",oneOf:"The {_field_} field is not a valid value",regex:"The {_field_} field format is invalid",required_if:"The {_field_} field is required",required:"The {_field_} field is required",size:"The {_field_} field size must be less than {size}KB"}},r={en:/^[A-Z]*$/i,cs:/^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]*$/i,da:/^[A-ZÆØÅ]*$/i,de:/^[A-ZÄÖÜß]*$/i,es:/^[A-ZÁÉÍÑÓÚÜ]*$/i,fr:/^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]*$/i,it:/^[A-Z\xC0-\xFF]*$/i,lt:/^[A-ZĄČĘĖĮŠŲŪŽ]*$/i,nl:/^[A-ZÉËÏÓÖÜ]*$/i,hu:/^[A-ZÁÉÍÓÖŐÚÜŰ]*$/i,pl:/^[A-ZĄĆĘŚŁŃÓŻŹ]*$/i,pt:/^[A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ]*$/i,ru:/^[А-ЯЁ]*$/i,sk:/^[A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ]*$/i,sr:/^[A-ZČĆŽŠĐ]*$/i,sv:/^[A-ZÅÄÖ]*$/i,tr:/^[A-ZÇĞİıÖŞÜ]*$/i,uk:/^[А-ЩЬЮЯЄІЇҐ]*$/i,ar:/^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]*$/,az:/^[A-ZÇƏĞİıÖŞÜ]*$/i},i={en:/^[A-Z\s]*$/i,cs:/^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ\s]*$/i,da:/^[A-ZÆØÅ\s]*$/i,de:/^[A-ZÄÖÜß\s]*$/i,es:/^[A-ZÁÉÍÑÓÚÜ\s]*$/i,fr:/^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ\s]*$/i,it:/^[A-Z\xC0-\xFF\s]*$/i,lt:/^[A-ZĄČĘĖĮŠŲŪŽ\s]*$/i,nl:/^[A-ZÉËÏÓÖÜ\s]*$/i,hu:/^[A-ZÁÉÍÓÖŐÚÜŰ\s]*$/i,pl:/^[A-ZĄĆĘŚŁŃÓŻŹ\s]*$/i,pt:/^[A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ\s]*$/i,ru:/^[А-ЯЁ\s]*$/i,sk:/^[A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ\s]*$/i,sr:/^[A-ZČĆŽŠĐ\s]*$/i,sv:/^[A-ZÅÄÖ\s]*$/i,tr:/^[A-ZÇĞİıÖŞÜ\s]*$/i,uk:/^[А-ЩЬЮЯЄІЇҐ\s]*$/i,ar:/^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ\s]*$/,az:/^[A-ZÇƏĞİıÖŞÜ\s]*$/i},o={en:/^[0-9A-Z]*$/i,cs:/^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]*$/i,da:/^[0-9A-ZÆØÅ]$/i,de:/^[0-9A-ZÄÖÜß]*$/i,es:/^[0-9A-ZÁÉÍÑÓÚÜ]*$/i,fr:/^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]*$/i,it:/^[0-9A-Z\xC0-\xFF]*$/i,lt:/^[0-9A-ZĄČĘĖĮŠŲŪŽ]*$/i,hu:/^[0-9A-ZÁÉÍÓÖŐÚÜŰ]*$/i,nl:/^[0-9A-ZÉËÏÓÖÜ]*$/i,pl:/^[0-9A-ZĄĆĘŚŁŃÓŻŹ]*$/i,pt:/^[0-9A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ]*$/i,ru:/^[0-9А-ЯЁ]*$/i,sk:/^[0-9A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ]*$/i,sr:/^[0-9A-ZČĆŽŠĐ]*$/i,sv:/^[0-9A-ZÅÄÖ]*$/i,tr:/^[0-9A-ZÇĞİıÖŞÜ]*$/i,uk:/^[0-9А-ЩЬЮЯЄІЇҐ]*$/i,ar:/^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]*$/,az:/^[0-9A-ZÇƏĞİıÖŞÜ]*$/i},a={en:/^[0-9A-Z_-]*$/i,cs:/^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ_-]*$/i,da:/^[0-9A-ZÆØÅ_-]*$/i,de:/^[0-9A-ZÄÖÜß_-]*$/i,es:/^[0-9A-ZÁÉÍÑÓÚÜ_-]*$/i,fr:/^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ_-]*$/i,it:/^[0-9A-Z\xC0-\xFF_-]*$/i,lt:/^[0-9A-ZĄČĘĖĮŠŲŪŽ_-]*$/i,nl:/^[0-9A-ZÉËÏÓÖÜ_-]*$/i,hu:/^[0-9A-ZÁÉÍÓÖŐÚÜŰ_-]*$/i,pl:/^[0-9A-ZĄĆĘŚŁŃÓŻŹ_-]*$/i,pt:/^[0-9A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ_-]*$/i,ru:/^[0-9А-ЯЁ_-]*$/i,sk:/^[0-9A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ_-]*$/i,sr:/^[0-9A-ZČĆŽŠĐ_-]*$/i,sv:/^[0-9A-ZÅÄÖ_-]*$/i,tr:/^[0-9A-ZÇĞİıÖŞÜ_-]*$/i,uk:/^[0-9А-ЩЬЮЯЄІЇҐ_-]*$/i,ar:/^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ_-]*$/,az:/^[0-9A-ZÇƏĞİıÖŞÜ_-]*$/i},s=function(e,t){var n=(void 0===t?{}:t).locale,i=void 0===n?"":n;return Array.isArray(e)?e.every((function(e){return s(e,{locale:i})})):i?(r[i]||r.en).test(e):Object.keys(r).some((function(t){return r[t].test(e)}))},l={validate:s,params:[{name:"locale"}]},c=function(e,t){var n=(void 0===t?{}:t).locale,r=void 0===n?"":n;return Array.isArray(e)?e.every((function(e){return c(e,{locale:r})})):r?(a[r]||a.en).test(e):Object.keys(a).some((function(t){return a[t].test(e)}))},u={validate:c,params:[{name:"locale"}]},f=function(e,t){var n=(void 0===t?{}:t).locale,r=void 0===n?"":n;return Array.isArray(e)?e.every((function(e){return f(e,{locale:r})})):r?(o[r]||o.en).test(e):Object.keys(o).some((function(t){return o[t].test(e)}))},p={validate:f,params:[{name:"locale"}]},d=function(e,t){var n=(void 0===t?{}:t).locale,r=void 0===n?"":n;return Array.isArray(e)?e.every((function(e){return d(e,{locale:r})})):r?(i[r]||i.en).test(e):Object.keys(i).some((function(t){return i[t].test(e)}))},v={validate:d,params:[{name:"locale"}]},m=function(e,t){var n=void 0===t?{}:t,r=n.min,i=n.max;return Array.isArray(e)?e.every((function(e){return!!m(e,{min:r,max:i})})):Number(r)<=e&&Number(i)>=e},h={validate:m,params:[{name:"min"},{name:"max"}]},g={validate:function(e,t){var n=t.target;return String(e)===String(n)},params:[{name:"target",isTarget:!0}]},b=function(e,t){var n=t.length;if(Array.isArray(e))return e.every((function(e){return b(e,{length:n})}));var r=String(e);return/^[0-9]*$/.test(r)&&r.length===n},_={validate:b,params:[{name:"length",cast:function(e){return Number(e)}}]},y={validate:function(e,t){var n=t.width,r=t.height,i=[];e=Array.isArray(e)?e:[e];for(var o=0;o()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;return n&&!Array.isArray(e)&&(e=String(e).split(",").map((function(e){return e.trim()}))),Array.isArray(e)?e.every((function(e){return r.test(String(e))})):r.test(String(e))},params:[{name:"multiple",default:!1}]};function x(e){return e!=e}function k(e){return null==e}function O(e){return Array.isArray(e)&&0===e.length}var $=function(e){return null!==e&&e&&"object"==typeof e&&!Array.isArray(e)};function C(e,t){if(e instanceof RegExp&&t instanceof RegExp)return C(e.source,t.source)&&C(e.flags,t.flags);if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(var n=0;n=0:Array.isArray(e)?e.every((function(e){return Z(e,{length:n})})):String(e).length<=n},G={validate:Z,params:[{name:"length",cast:function(e){return Number(e)}}]},Y=function(e,t){var n=t.max;return!k(e)&&""!==e&&(Array.isArray(e)?e.length>0&&e.every((function(e){return Y(e,{max:n})})):Number(e)<=n)},K={validate:Y,params:[{name:"max",cast:function(e){return Number(e)}}]},X={validate:function(e,t){var n=new RegExp(t.join("|").replace("*",".+")+"$","i");return Array.isArray(e)?e.every((function(e){return n.test(e.type)})):n.test(e.type)}},J=function(e,t){var n=t.length;return!k(e)&&(Array.isArray(e)?e.every((function(e){return J(e,{length:n})})):String(e).length>=n)},Q={validate:J,params:[{name:"length",cast:function(e){return Number(e)}}]},ee=function(e,t){var n=t.min;return!k(e)&&""!==e&&(Array.isArray(e)?e.length>0&&e.every((function(e){return ee(e,{min:n})})):Number(e)>=n)},te={validate:ee,params:[{name:"min",cast:function(e){return Number(e)}}]},ne=/^[٠١٢٣٤٥٦٧٨٩]+$/,re=/^[0-9]+$/,ie={validate:function(e){var t=function(e){var t=String(e);return re.test(t)||ne.test(t)};return Array.isArray(e)?e.every(t):t(e)}},oe=function(e,t){var n=t.regex;return Array.isArray(e)?e.every((function(e){return oe(e,{regex:n})})):n.test(String(e))},ae={validate:oe,params:[{name:"regex",cast:function(e){return"string"==typeof e?new RegExp(e):e}}]},se={validate:function(e,t){var n=(void 0===t?{allowFalse:!0}:t).allowFalse,r={valid:!1,required:!0};return k(e)||O(e)?r:!1!==e||n?(r.valid=!!String(e).trim().length,r):r},params:[{name:"allowFalse",default:!0}],computesRequired:!0},le=function(e){return O(e)||I([!1,null,void 0],e)||!String(e).trim().length},ce={validate:function(e,t){var n,r=t.target,i=t.values;return i&&i.length?(Array.isArray(i)||"string"!=typeof i||(i=[i]),n=i.some((function(e){return e==String(r).trim()}))):n=!le(r),n?{valid:!le(e),required:n}:{valid:!0,required:n}},params:[{name:"target",isTarget:!0},{name:"values"}],computesRequired:!0},ue={validate:function(e,t){var n=t.size;if(isNaN(n))return!1;var r=1024*n;if(!Array.isArray(e))return e.size<=r;for(var i=0;ir)return!1;return!0},params:[{name:"size",cast:function(e){return Number(e)}}]},fe=Object.freeze({__proto__:null,alpha_dash:u,alpha_num:p,alpha_spaces:v,alpha:l,between:h,confirmed:g,digits:_,dimensions:y,email:w,ext:B,image:V,oneOf:N,integer:U,length:W,is_not:q,is:H,max:G,max_value:K,mimes:X,min:Q,min_value:te,excluded:R,numeric:ie,regex:ae,required:se,required_if:ce,size:ue}),pe=function(){return(pe=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&i[i.length-1])||6!==o[0]&&2!==o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]=0&&$e.getRuleDefinition("max")&&(r.max=n.maxlength),n.minlength>=0&&$e.getRuleDefinition("min")&&(r.min=n.minlength),"number"===n.type&&(A(n.min)&&$e.getRuleDefinition("min_value")&&(r.min_value=Number(n.min)),A(n.max)&&$e.getRuleDefinition("max_value")&&(r.max_value=Number(n.max))),r):r}(e))):Ee(r)}function Ze(e,t){return e.$scopedSlots.default?e.$scopedSlots.default(t)||[]:e.$slots.default||[]}function Ge(e){return pe(pe({},e.flags),{errors:e.errors,classes:e.classes,failedRules:e.failedRules,reset:function(){return e.reset()},validate:function(){for(var t=[],n=0;n0&&this.syncValue(e[0]),[2,Xe(this)]}))}))},validateSilent:function(){return de(this,void 0,void 0,(function(){var e,t;return ve(this,(function(n){switch(n.label){case 0:return this.setFlags({pending:!0}),e=pe(pe({},this._resolvedRules),this.normalizedRules),Object.defineProperty(e,"_$$isNormalized",{value:!0,writable:!1,enumerable:!1,configurable:!1}),[4,Te(this.value,e,pe(pe({name:this.name||this.fieldName},(r=this,i=r.$_veeObserver.refs,r.fieldDeps.reduce((function(e,t){return i[t]?(e.values[t]=i[t].value,e.names[t]=i[t].name,e):e}),{names:{},values:{}}))),{bails:this.bails,skipIfEmpty:this.skipIfEmpty,isInitial:!this.initialized,customMessages:this.customMessages}))];case 1:return t=n.sent(),this.setFlags({pending:!1,valid:t.valid,invalid:!t.valid}),[2,t]}var r,i}))}))},setErrors:function(e){this.applyResult({errors:e,failedRules:{}})},applyResult:function(e){var t=e.errors,n=e.failedRules,r=e.regenerateMap;this.errors=t,this._regenerateMap=r,this.failedRules=pe({},n||{}),this.setFlags({valid:!t.length,passed:!t.length,invalid:!!t.length,failed:!!t.length,validated:!0,changed:this.value!==this.initialValue})},registerField:function(){var e,t,n;t=function(e){return e.vid?e.vid:e.name?e.name:e.id?e.id:e.fieldName?e.fieldName:"_vee_"+ ++Qe}(e=this),n=e.id,!e.isActive||n===t&&e.$_veeObserver.refs[n]||(n!==t&&e.$_veeObserver.refs[n]===e&&e.$_veeObserver.unobserve(n),e.id=t,e.$_veeObserver.observe(e))}}}),tt=[["pristine","every"],["dirty","some"],["touched","some"],["untouched","every"],["valid","every"],["invalid","some"],["pending","some"],["validated","every"],["changed","some"],["passed","every"],["failed","some"]],nt=0,rt=t.extend({name:"ValidationObserver",provide:function(){return{$_veeObserver:this}},inject:{$_veeObserver:{from:"$_veeObserver",default:function(){return this.$vnode.context.$_veeObserver?this.$vnode.context.$_veeObserver:null}}},props:{tag:{type:String,default:"span"},vid:{type:String,default:function(){return"obs_"+nt++}},slim:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}},data:function(){return{id:"",refs:{},observers:[],errors:{},flags:at(),fields:{}}},created:function(){var e=this;this.id=this.vid,ot(this);var t=z((function(t){var n=t.errors,r=t.flags,i=t.fields;e.errors=n,e.flags=r,e.fields=i}),16);this.$watch(st,t)},activated:function(){ot(this)},deactivated:function(){it(this)},beforeDestroy:function(){it(this)},render:function(e){var t,n=Ze(this,pe(pe({},(t=this).flags),{errors:t.errors,fields:t.fields,validate:t.validate,passes:t.handleSubmit,handleSubmit:t.handleSubmit,reset:t.reset}));return this.slim&&n.length<=1?n[0]:e(this.tag,{on:this.$listeners},n)},methods:{observe:function(e,t){var n;void 0===t&&(t="provider"),"observer"!==t?this.refs=pe(pe({},this.refs),((n={})[e.id]=e,n)):this.observers.push(e)},unobserve:function(e,t){if(void 0===t&&(t="provider"),"provider"!==t){var n=j(this.observers,(function(t){return t.id===e}));-1!==n&&this.observers.splice(n,1)}else{if(!this.refs[e])return;this.$delete(this.refs,e)}},validate:function(e){var t=(void 0===e?{}:e).silent,n=void 0!==t&&t;return de(this,void 0,void 0,(function(){return ve(this,(function(e){switch(e.label){case 0:return[4,Promise.all(me(P(this.refs).filter((function(e){return!e.disabled})).map((function(e){return e[n?"validateSilent":"validate"]().then((function(e){return e.valid}))})),this.observers.filter((function(e){return!e.disabled})).map((function(e){return e.validate({silent:n})}))))];case 1:return[2,e.sent().every((function(e){return e}))]}}))}))},handleSubmit:function(e){return de(this,void 0,void 0,(function(){return ve(this,(function(t){switch(t.label){case 0:return[4,this.validate()];case 1:return t.sent()&&e?[2,e()]:[2]}}))}))},reset:function(){return me(P(this.refs),this.observers).forEach((function(e){return e.reset()}))},setErrors:function(e){var t=this;Object.keys(e).forEach((function(n){var r=t.refs[n];if(r){var i=e[n]||[];i="string"==typeof i?[i]:i,r.setErrors(i)}})),this.observers.forEach((function(t){t.setErrors(e)}))}}});function it(e){e.$_veeObserver&&e.$_veeObserver.unobserve(e.id,"observer")}function ot(e){e.$_veeObserver&&e.$_veeObserver.observe(e,"observer")}function at(){return pe(pe({},{untouched:!0,touched:!1,dirty:!1,pristine:!0,valid:!1,invalid:!1,validated:!1,pending:!1,required:!1,changed:!1,passed:!1,failed:!1}),{valid:!0,invalid:!1})}function st(){for(var e=me(P(this.refs),this.observers),t={},n=at(),r={},i=e.length,o=0;o=200&&e<300}};l.headers={common:{Accept:"application/json, text/plain, */*"}},r.forEach(["delete","get","head"],(function(e){l.headers[e]={}})),r.forEach(["post","put","patch"],(function(e){l.headers[e]=r.merge(o)})),e.exports=l}).call(this,n(58))},function(e,t){var n,r,i=e.exports={};function o(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function s(e){if(n===setTimeout)return setTimeout(e,0);if((n===o||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:o}catch(e){n=o}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(e){r=a}}();var l,c=[],u=!1,f=-1;function p(){u&&l&&(u=!1,l.length?c=l.concat(c):f=-1,c.length&&d())}function d(){if(!u){var e=s(p);u=!0;for(var t=c.length;t;){for(l=c,c=[];++f1)for(var n=1;n=0&&(e._idleTimeoutId=setTimeout((function(){e._onTimeout&&e._onTimeout()}),t))},n(88),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,n(9))},function(e,t,n){"use strict";var r,i;"undefined"!=typeof window&&window,void 0===(i="function"==typeof(r=function(){if("undefined"==typeof window)return null;var e="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),t=e.requestAnimationFrame||e.mozRequestAnimationFrame||e.webkitRequestAnimationFrame||function(t){return e.setTimeout(t,20)},n=e.cancelAnimationFrame||e.mozCancelAnimationFrame||e.webkitCancelAnimationFrame||function(t){e.clearTimeout(t)};function r(e,t){var n=Object.prototype.toString.call(e),r="[object Array]"===n||"[object NodeList]"===n||"[object HTMLCollection]"===n||"[object Object]"===n||"undefined"!=typeof jQuery&&e instanceof jQuery||"undefined"!=typeof Elements&&e instanceof Elements,i=0,o=e.length;if(r)for(;i=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n};function u(e){return e.split(";").map((function(e){return e.trim()})).filter((function(e){return e})).reduce((function(e,t){var n=t.indexOf(":"),r=o.camelize(t.slice(0,n)),i=t.slice(n+1).trim();return e[r]=i,e}),{})}function f(e){return e.split(/\s+/).reduce((function(e,t){return e[t]=!0,e}),{})}function p(){for(var e=arguments.length,t=Array(e),n=0;n2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},i=(t.children||[]).map(d.bind(null,e)),o=Object.keys(t.attributes||{}).reduce((function(e,n){var r=t.attributes[n];switch(n){case"class":e.class=f(r);break;case"style":e.style=u(r);break;default:e.attrs[n]=r}return e}),{class:{},style:{},attrs:{}}),a=r.class,s=void 0===a?{}:a,v=r.style,m=void 0===v?{}:v,h=r.attrs,g=void 0===h?{}:h,b=c(r,["class","style","attrs"]);return"string"==typeof t?t:e(t.tag,l({class:p(o.class,s),style:l({},o.style,m),attrs:l({},o.attrs,g)},b,{props:n}),i)}var v=!1;try{v=!0}catch(e){}function m(e,t){return Array.isArray(t)&&t.length>0||!Array.isArray(t)&&t?s({},e,t):{}}function h(e){return null===e?null:"object"===(void 0===e?"undefined":a(e))&&e.prefix&&e.iconName?e:Array.isArray(e)&&2===e.length?{prefix:e[0],iconName:e[1]}:"string"==typeof e?{prefix:"fas",iconName:e}:void 0}var g={name:"FontAwesomeIcon",functional:!0,props:{border:{type:Boolean,default:!1},fixedWidth:{type:Boolean,default:!1},flip:{type:String,default:null,validator:function(e){return["horizontal","vertical","both"].indexOf(e)>-1}},icon:{type:[Object,Array,String],required:!0},mask:{type:[Object,Array,String],default:null},listItem:{type:Boolean,default:!1},pull:{type:String,default:null,validator:function(e){return["right","left"].indexOf(e)>-1}},pulse:{type:Boolean,default:!1},rotation:{type:[String,Number],default:null,validator:function(e){return[90,180,270].indexOf(parseInt(e,10))>-1}},swapOpacity:{type:Boolean,default:!1},size:{type:String,default:null,validator:function(e){return["lg","xs","sm","1x","2x","3x","4x","5x","6x","7x","8x","9x","10x"].indexOf(e)>-1}},spin:{type:Boolean,default:!1},transform:{type:[String,Object],default:null},symbol:{type:[Boolean,String],default:!1},title:{type:String,default:null},inverse:{type:Boolean,default:!1}},render:function(e,t){var n=t.props,i=n.icon,o=n.mask,a=n.symbol,c=n.title,u=h(i),f=m("classes",function(e){var t,n=(t={"fa-spin":e.spin,"fa-pulse":e.pulse,"fa-fw":e.fixedWidth,"fa-border":e.border,"fa-li":e.listItem,"fa-inverse":e.inverse,"fa-flip-horizontal":"horizontal"===e.flip||"both"===e.flip,"fa-flip-vertical":"vertical"===e.flip||"both"===e.flip},s(t,"fa-"+e.size,null!==e.size),s(t,"fa-rotate-"+e.rotation,null!==e.rotation),s(t,"fa-pull-"+e.pull,null!==e.pull),s(t,"fa-swap-opacity",e.swapOpacity),t);return Object.keys(n).map((function(e){return n[e]?e:null})).filter((function(e){return e}))}(n)),p=m("transform","string"==typeof n.transform?r.d.transform(n.transform):n.transform),g=m("mask",h(o)),b=Object(r.b)(u,l({},f,p,g,{symbol:a,title:c}));if(!b)return function(){var e;!v&&console&&"function"==typeof console.error&&(e=console).error.apply(e,arguments)}("Could not find one or more icon(s)",u,g);var _=b.abstract;return d.bind(null,e)(_[0],{},t.data)}};Boolean,Boolean}).call(this,n(9))},function(e,t,n){n(176),e.exports=n(177)},function(e,t,n){window._=n(5),window.axios=n(3),window.axios.defaults.headers.common["X-Requested-With"]="XMLHttpRequest"},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t,n){"use strict";var r=n(6),i=n(54),o=n(72),a=n(61);function s(e){var t=new o(e),n=i(o.prototype.request,t);return r.extend(n,o.prototype,t),r.extend(n,t),n}var l=s(n(57));l.Axios=o,l.create=function(e){return s(a(l.defaults,e))},l.Cancel=n(62),l.CancelToken=n(85),l.isCancel=n(56),l.all=function(e){return Promise.all(e)},l.spread=n(86),e.exports=l,e.exports.default=l},function(e,t,n){"use strict";var r=n(6),i=n(55),o=n(73),a=n(74),s=n(61);function l(e){this.defaults=e,this.interceptors={request:new o,response:new o}}l.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{}).url=arguments[0]:e=e||{},(e=s(this.defaults,e)).method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var t=[a,void 0],n=Promise.resolve(e);for(this.interceptors.request.forEach((function(e){t.unshift(e.fulfilled,e.rejected)})),this.interceptors.response.forEach((function(e){t.push(e.fulfilled,e.rejected)}));t.length;)n=n.then(t.shift(),t.shift());return n},l.prototype.getUri=function(e){return e=s(this.defaults,e),i(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},r.forEach(["delete","get","head","options"],(function(e){l.prototype[e]=function(t,n){return this.request(r.merge(n||{},{method:e,url:t}))}})),r.forEach(["post","put","patch"],(function(e){l.prototype[e]=function(t,n,i){return this.request(r.merge(i||{},{method:e,url:t,data:n}))}})),e.exports=l},function(e,t,n){"use strict";var r=n(6);function i(){this.handlers=[]}i.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},i.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},i.prototype.forEach=function(e){r.forEach(this.handlers,(function(t){null!==t&&e(t)}))},e.exports=i},function(e,t,n){"use strict";var r=n(6),i=n(75),o=n(56),a=n(57);function s(e){e.cancelToken&&e.cancelToken.throwIfRequested()}e.exports=function(e){return s(e),e.headers=e.headers||{},e.data=i(e.data,e.headers,e.transformRequest),e.headers=r.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),r.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||a.adapter)(e).then((function(t){return s(e),t.data=i(t.data,t.headers,e.transformResponse),t}),(function(t){return o(t)||(s(e),t&&t.response&&(t.response.data=i(t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))}},function(e,t,n){"use strict";var r=n(6);e.exports=function(e,t,n){return r.forEach(n,(function(n){e=n(e,t)})),e}},function(e,t,n){"use strict";var r=n(6);e.exports=function(e,t){r.forEach(e,(function(n,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[r])}))}},function(e,t,n){"use strict";var r=n(60);e.exports=function(e,t,n){var i=n.config.validateStatus;!i||i(n.status)?e(n):t(r("Request failed with status code "+n.status,n.config,null,n.request,n))}},function(e,t,n){"use strict";e.exports=function(e,t,n,r,i){return e.config=t,n&&(e.code=n),e.request=r,e.response=i,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e}},function(e,t,n){"use strict";var r=n(80),i=n(81);e.exports=function(e,t){return e&&!r(t)?i(e,t):t}},function(e,t,n){"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},function(e,t,n){"use strict";e.exports=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}},function(e,t,n){"use strict";var r=n(6),i=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var t,n,o,a={};return e?(r.forEach(e.split("\n"),(function(e){if(o=e.indexOf(":"),t=r.trim(e.substr(0,o)).toLowerCase(),n=r.trim(e.substr(o+1)),t){if(a[t]&&i.indexOf(t)>=0)return;a[t]="set-cookie"===t?(a[t]?a[t]:[]).concat([n]):a[t]?a[t]+", "+n:n}})),a):a}},function(e,t,n){"use strict";var r=n(6);e.exports=r.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function i(e){var r=e;return t&&(n.setAttribute("href",r),r=n.href),n.setAttribute("href",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return e=i(window.location.href),function(t){var n=r.isString(t)?i(t):t;return n.protocol===e.protocol&&n.host===e.host}}():function(){return!0}},function(e,t,n){"use strict";var r=n(6);e.exports=r.isStandardBrowserEnv()?{write:function(e,t,n,i,o,a){var s=[];s.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&s.push("expires="+new Date(n).toGMTString()),r.isString(i)&&s.push("path="+i),r.isString(o)&&s.push("domain="+o),!0===a&&s.push("secure"),document.cookie=s.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},function(e,t,n){"use strict";var r=n(62);function i(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise((function(e){t=e}));var n=this;e((function(e){n.reason||(n.reason=new r(e),t(n.reason))}))}i.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},i.source=function(){var e;return{token:new i((function(t){e=t})),cancel:e}},e.exports=i},function(e,t,n){"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}},function(e,t,n){"use strict";(function(t,n){var r=Object.freeze({});function i(e){return null==e}function o(e){return null!=e}function a(e){return!0===e}function s(e){return"string"==typeof e||"number"==typeof e||"symbol"==typeof e||"boolean"==typeof e}function l(e){return null!==e&&"object"==typeof e}var c=Object.prototype.toString;function u(e){return"[object Object]"===c.call(e)}function f(e){var t=parseFloat(String(e));return t>=0&&Math.floor(t)===t&&isFinite(e)}function p(e){return o(e)&&"function"==typeof e.then&&"function"==typeof e.catch}function d(e){return null==e?"":Array.isArray(e)||u(e)&&e.toString===c?JSON.stringify(e,null,2):String(e)}function v(e){var t=parseFloat(e);return isNaN(t)?e:t}function m(e,t){for(var n=Object.create(null),r=e.split(","),i=0;i-1)return e.splice(n,1)}}var _=Object.prototype.hasOwnProperty;function y(e,t){return _.call(e,t)}function w(e){var t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}var x=/-(\w)/g,k=w((function(e){return e.replace(x,(function(e,t){return t?t.toUpperCase():""}))})),O=w((function(e){return e.charAt(0).toUpperCase()+e.slice(1)})),$=/\B([A-Z])/g,C=w((function(e){return e.replace($,"-$1").toLowerCase()})),A=Function.prototype.bind?function(e,t){return e.bind(t)}:function(e,t){function n(n){var r=arguments.length;return r?r>1?e.apply(t,arguments):e.call(t,n):e.call(t)}return n._length=e.length,n};function E(e,t){t=t||0;for(var n=e.length-t,r=new Array(n);n--;)r[n]=e[n+t];return r}function S(e,t){for(var n in t)e[n]=t[n];return e}function j(e){for(var t={},n=0;n0,J=Y&&Y.indexOf("edge/")>0,Q=(Y&&Y.indexOf("android"),Y&&/iphone|ipad|ipod|ios/.test(Y)||"ios"===G),ee=(Y&&/chrome\/\d+/.test(Y),Y&&/phantomjs/.test(Y),Y&&Y.match(/firefox\/(\d+)/)),te={}.watch,ne=!1;if(W)try{var re={};Object.defineProperty(re,"passive",{get:function(){ne=!0}}),window.addEventListener("test-passive",null,re)}catch(r){}var ie=function(){return void 0===U&&(U=!W&&!Z&&void 0!==t&&t.process&&"server"===t.process.env.VUE_ENV),U},oe=W&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function ae(e){return"function"==typeof e&&/native code/.test(e.toString())}var se,le="undefined"!=typeof Symbol&&ae(Symbol)&&"undefined"!=typeof Reflect&&ae(Reflect.ownKeys);se="undefined"!=typeof Set&&ae(Set)?Set:function(){function e(){this.set=Object.create(null)}return e.prototype.has=function(e){return!0===this.set[e]},e.prototype.add=function(e){this.set[e]=!0},e.prototype.clear=function(){this.set=Object.create(null)},e}();var ce=I,ue=0,fe=function(){this.id=ue++,this.subs=[]};fe.prototype.addSub=function(e){this.subs.push(e)},fe.prototype.removeSub=function(e){b(this.subs,e)},fe.prototype.depend=function(){fe.target&&fe.target.addDep(this)},fe.prototype.notify=function(){for(var e=this.subs.slice(),t=0,n=e.length;t-1)if(o&&!y(i,"default"))a=!1;else if(""===a||a===C(e)){var l=Be(String,i.type);(l<0||s0&&(ut((l=e(l,(n||"")+"_"+r))[0])&&ut(u)&&(f[c]=be(u.text+l[0].text),l.shift()),f.push.apply(f,l)):s(l)?ut(u)?f[c]=be(u.text+l):""!==l&&f.push(be(l)):ut(l)&&ut(u)?f[c]=be(u.text+l.text):(a(t._isVList)&&o(l.tag)&&i(l.key)&&o(n)&&(l.key="__vlist"+n+"_"+r+"__"),f.push(l)));return f}(e):void 0}function ut(e){return o(e)&&o(e.text)&&!1===e.isComment}function ft(e,t){if(e){for(var n=Object.create(null),r=le?Reflect.ownKeys(e):Object.keys(e),i=0;i0,a=e?!!e.$stable:!o,s=e&&e.$key;if(e){if(e._normalized)return e._normalized;if(a&&n&&n!==r&&s===n.$key&&!o&&!n.$hasNormal)return n;for(var l in i={},e)e[l]&&"$"!==l[0]&&(i[l]=mt(t,l,e[l]))}else i={};for(var c in t)c in i||(i[c]=ht(t,c));return e&&Object.isExtensible(e)&&(e._normalized=i),V(i,"$stable",a),V(i,"$key",s),V(i,"$hasNormal",o),i}function mt(e,t,n){var r=function(){var e=arguments.length?n.apply(null,arguments):n({});return(e=e&&"object"==typeof e&&!Array.isArray(e)?[e]:ct(e))&&(0===e.length||1===e.length&&e[0].isComment)?void 0:e};return n.proxy&&Object.defineProperty(e,t,{get:r,enumerable:!0,configurable:!0}),r}function ht(e,t){return function(){return e[t]}}function gt(e,t){var n,r,i,a,s;if(Array.isArray(e)||"string"==typeof e)for(n=new Array(e.length),r=0,i=e.length;rdocument.createEvent("Event").timeStamp&&(ln=function(){return cn.now()})}function un(){var e,t;for(sn=ln(),on=!0,en.sort((function(e,t){return e.id-t.id})),an=0;anan&&en[n].id>e.id;)n--;en.splice(n+1,0,e)}else en.push(e);rn||(rn=!0,tt(un))}}(this)},pn.prototype.run=function(){if(this.active){var e=this.get();if(e!==this.value||l(e)||this.deep){var t=this.value;if(this.value=e,this.user)try{this.cb.call(this.vm,e,t)}catch(e){Ve(e,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,e,t)}}},pn.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},pn.prototype.depend=function(){for(var e=this.deps.length;e--;)this.deps[e].depend()},pn.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||b(this.vm._watchers,this);for(var e=this.deps.length;e--;)this.deps[e].removeSub(this);this.active=!1}};var dn={enumerable:!0,configurable:!0,get:I,set:I};function vn(e,t,n){dn.get=function(){return this[t][n]},dn.set=function(e){this[t][n]=e},Object.defineProperty(e,n,dn)}var mn={lazy:!0};function hn(e,t,n){var r=!ie();"function"==typeof n?(dn.get=r?gn(t):bn(n),dn.set=I):(dn.get=n.get?r&&!1!==n.cache?gn(t):bn(n.get):I,dn.set=n.set||I),Object.defineProperty(e,t,dn)}function gn(e){return function(){var t=this._computedWatchers&&this._computedWatchers[e];if(t)return t.dirty&&t.evaluate(),fe.target&&t.depend(),t.value}}function bn(e){return function(){return e.call(this,this)}}function _n(e,t,n,r){return u(n)&&(r=n,n=n.handler),"string"==typeof n&&(n=e[n]),e.$watch(t,n,r)}var yn=0;function wn(e){var t=e.options;if(e.super){var n=wn(e.super);if(n!==e.superOptions){e.superOptions=n;var r=function(e){var t,n=e.options,r=e.sealedOptions;for(var i in n)n[i]!==r[i]&&(t||(t={}),t[i]=n[i]);return t}(e);r&&S(e.extendOptions,r),(t=e.options=ze(n,e.extendOptions)).name&&(t.components[t.name]=e)}}return t}function xn(e){this._init(e)}function kn(e){return e&&(e.Ctor.options.name||e.tag)}function On(e,t){return Array.isArray(e)?e.indexOf(t)>-1:"string"==typeof e?e.split(",").indexOf(t)>-1:(n=e,"[object RegExp]"===c.call(n)&&e.test(t));var n}function $n(e,t){var n=e.cache,r=e.keys,i=e._vnode;for(var o in n){var a=n[o];if(a){var s=kn(a.componentOptions);s&&!t(s)&&Cn(n,o,r,i)}}}function Cn(e,t,n,r){var i=e[t];!i||r&&i.tag===r.tag||i.componentInstance.$destroy(),e[t]=null,b(n,t)}!function(e){e.prototype._init=function(e){var t=this;t._uid=yn++,t._isVue=!0,e&&e._isComponent?function(e,t){var n=e.$options=Object.create(e.constructor.options),r=t._parentVnode;n.parent=t.parent,n._parentVnode=r;var i=r.componentOptions;n.propsData=i.propsData,n._parentListeners=i.listeners,n._renderChildren=i.children,n._componentTag=i.tag,t.render&&(n.render=t.render,n.staticRenderFns=t.staticRenderFns)}(t,e):t.$options=ze(wn(t.constructor),e||{},t),t._renderProxy=t,t._self=t,function(e){var t=e.$options,n=t.parent;if(n&&!t.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(e)}e.$parent=n,e.$root=n?n.$root:e,e.$children=[],e.$refs={},e._watcher=null,e._inactive=null,e._directInactive=!1,e._isMounted=!1,e._isDestroyed=!1,e._isBeingDestroyed=!1}(t),function(e){e._events=Object.create(null),e._hasHookEvent=!1;var t=e.$options._parentListeners;t&&Gt(e,t)}(t),function(e){e._vnode=null,e._staticTrees=null;var t=e.$options,n=e.$vnode=t._parentVnode,i=n&&n.context;e.$slots=pt(t._renderChildren,i),e.$scopedSlots=r,e._c=function(t,n,r,i){return Nt(e,t,n,r,i,!1)},e.$createElement=function(t,n,r,i){return Nt(e,t,n,r,i,!0)};var o=n&&n.data;Ae(e,"$attrs",o&&o.attrs||r,null,!0),Ae(e,"$listeners",t._parentListeners||r,null,!0)}(t),Qt(t,"beforeCreate"),function(e){var t=ft(e.$options.inject,e);t&&(Oe(!1),Object.keys(t).forEach((function(n){Ae(e,n,t[n])})),Oe(!0))}(t),function(e){e._watchers=[];var t=e.$options;t.props&&function(e,t){var n=e.$options.propsData||{},r=e._props={},i=e.$options._propKeys=[];e.$parent&&Oe(!1);var o=function(o){i.push(o);var a=Me(o,t,n,e);Ae(r,o,a),o in e||vn(e,"_props",o)};for(var a in t)o(a);Oe(!0)}(e,t.props),t.methods&&function(e,t){for(var n in e.$options.props,t)e[n]="function"!=typeof t[n]?I:A(t[n],e)}(e,t.methods),t.data?function(e){var t=e.$options.data;u(t=e._data="function"==typeof t?function(e,t){de();try{return e.call(t,t)}catch(e){return Ve(e,t,"data()"),{}}finally{ve()}}(t,e):t||{})||(t={});for(var n,r=Object.keys(t),i=e.$options.props,o=(e.$options.methods,r.length);o--;){var a=r[o];i&&y(i,a)||(void 0,36!==(n=(a+"").charCodeAt(0))&&95!==n&&vn(e,"_data",a))}Ce(t,!0)}(e):Ce(e._data={},!0),t.computed&&function(e,t){var n=e._computedWatchers=Object.create(null),r=ie();for(var i in t){var o=t[i],a="function"==typeof o?o:o.get;r||(n[i]=new pn(e,a||I,I,mn)),i in e||hn(e,i,o)}}(e,t.computed),t.watch&&t.watch!==te&&function(e,t){for(var n in t){var r=t[n];if(Array.isArray(r))for(var i=0;i1?E(t):t;for(var n=E(arguments,1),r='event handler for "'+e+'"',i=0,o=t.length;iparseInt(this.max)&&Cn(a,s[0],s,this._vnode)),t.data.keepAlive=!0}return t||e&&e[0]}}};!function(e){var t={get:function(){return R}};Object.defineProperty(e,"config",t),e.util={warn:ce,extend:S,mergeOptions:ze,defineReactive:Ae},e.set=Ee,e.delete=Se,e.nextTick=tt,e.observable=function(e){return Ce(e),e},e.options=Object.create(null),M.forEach((function(t){e.options[t+"s"]=Object.create(null)})),e.options._base=e,S(e.options.components,En),function(e){e.use=function(e){var t=this._installedPlugins||(this._installedPlugins=[]);if(t.indexOf(e)>-1)return this;var n=E(arguments,1);return n.unshift(this),"function"==typeof e.install?e.install.apply(e,n):"function"==typeof e&&e.apply(null,n),t.push(e),this}}(e),function(e){e.mixin=function(e){return this.options=ze(this.options,e),this}}(e),function(e){e.cid=0;var t=1;e.extend=function(e){e=e||{};var n=this,r=n.cid,i=e._Ctor||(e._Ctor={});if(i[r])return i[r];var o=e.name||n.options.name,a=function(e){this._init(e)};return(a.prototype=Object.create(n.prototype)).constructor=a,a.cid=t++,a.options=ze(n.options,e),a.super=n,a.options.props&&function(e){var t=e.options.props;for(var n in t)vn(e.prototype,"_props",n)}(a),a.options.computed&&function(e){var t=e.options.computed;for(var n in t)hn(e.prototype,n,t[n])}(a),a.extend=n.extend,a.mixin=n.mixin,a.use=n.use,M.forEach((function(e){a[e]=n[e]})),o&&(a.options.components[o]=a),a.superOptions=n.options,a.extendOptions=e,a.sealedOptions=S({},a.options),i[r]=a,a}}(e),function(e){M.forEach((function(t){e[t]=function(e,n){return n?("component"===t&&u(n)&&(n.name=n.name||e,n=this.options._base.extend(n)),"directive"===t&&"function"==typeof n&&(n={bind:n,update:n}),this.options[t+"s"][e]=n,n):this.options[t+"s"][e]}}))}(e)}(xn),Object.defineProperty(xn.prototype,"$isServer",{get:ie}),Object.defineProperty(xn.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(xn,"FunctionalRenderContext",{value:Tt}),xn.version="2.6.11";var Sn=m("style,class"),jn=m("input,textarea,option,select,progress"),In=function(e,t,n){return"value"===n&&jn(e)&&"button"!==t||"selected"===n&&"option"===e||"checked"===n&&"input"===e||"muted"===n&&"video"===e},Tn=m("contenteditable,draggable,spellcheck"),Pn=m("events,caret,typing,plaintext-only"),Fn=m("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),Dn="http://www.w3.org/1999/xlink",zn=function(e){return":"===e.charAt(5)&&"xlink"===e.slice(0,5)},Ln=function(e){return zn(e)?e.slice(6,e.length):""},Mn=function(e){return null==e||!1===e};function Nn(e,t){return{staticClass:Rn(e.staticClass,t.staticClass),class:o(e.class)?[e.class,t.class]:t.class}}function Rn(e,t){return e?t?e+" "+t:e:t||""}function Bn(e){return Array.isArray(e)?function(e){for(var t,n="",r=0,i=e.length;r-1?pr(e,t,n):Fn(t)?Mn(n)?e.removeAttribute(t):(n="allowfullscreen"===t&&"EMBED"===e.tagName?"true":t,e.setAttribute(t,n)):Tn(t)?e.setAttribute(t,function(e,t){return Mn(t)||"false"===t?"false":"contenteditable"===e&&Pn(t)?t:"true"}(t,n)):zn(t)?Mn(n)?e.removeAttributeNS(Dn,Ln(t)):e.setAttributeNS(Dn,t,n):pr(e,t,n)}function pr(e,t,n){if(Mn(n))e.removeAttribute(t);else{if(K&&!X&&"TEXTAREA"===e.tagName&&"placeholder"===t&&""!==n&&!e.__ieph){var r=function(t){t.stopImmediatePropagation(),e.removeEventListener("input",r)};e.addEventListener("input",r),e.__ieph=!0}e.setAttribute(t,n)}}var dr={create:ur,update:ur};function vr(e,t){var n=t.elm,r=t.data,a=e.data;if(!(i(r.staticClass)&&i(r.class)&&(i(a)||i(a.staticClass)&&i(a.class)))){var s=function(e){for(var t=e.data,n=e,r=e;o(r.componentInstance);)(r=r.componentInstance._vnode)&&r.data&&(t=Nn(r.data,t));for(;o(n=n.parent);)n&&n.data&&(t=Nn(t,n.data));return function(e,t){return o(e)||o(t)?Rn(e,Bn(t)):""}(t.staticClass,t.class)}(t),l=n._transitionClasses;o(l)&&(s=Rn(s,Bn(l))),s!==n._prevClass&&(n.setAttribute("class",s),n._prevClass=s)}}var mr,hr,gr,br,_r,yr,wr={create:vr,update:vr},xr=/[\w).+\-_$\]]/;function kr(e){var t,n,r,i,o,a=!1,s=!1,l=!1,c=!1,u=0,f=0,p=0,d=0;for(r=0;r=0&&" "===(m=e.charAt(v));v--);m&&xr.test(m)||(c=!0)}}else void 0===i?(d=r+1,i=e.slice(0,r).trim()):h();function h(){(o||(o=[])).push(e.slice(d,r).trim()),d=r+1}if(void 0===i?i=e.slice(0,r).trim():0!==d&&h(),o)for(r=0;r-1?{exp:e.slice(0,br),key:'"'+e.slice(br+1)+'"'}:{exp:e,key:null};for(hr=e,br=_r=yr=0;!Rr();)Br(gr=Nr())?Ur(gr):91===gr&&Vr(gr);return{exp:e.slice(0,_r),key:e.slice(_r+1,yr)}}(e);return null===n.key?e+"="+t:"$set("+n.exp+", "+n.key+", "+t+")"}function Nr(){return hr.charCodeAt(++br)}function Rr(){return br>=mr}function Br(e){return 34===e||39===e}function Vr(e){var t=1;for(_r=br;!Rr();)if(Br(e=Nr()))Ur(e);else if(91===e&&t++,93===e&&t--,0===t){yr=br;break}}function Ur(e){for(var t=e;!Rr()&&(e=Nr())!==t;);}var Hr,qr="__r";function Wr(e,t,n){var r=Hr;return function i(){null!==t.apply(null,arguments)&&Yr(e,i,n,r)}}var Zr=Ze&&!(ee&&Number(ee[1])<=53);function Gr(e,t,n,r){if(Zr){var i=sn,o=t;t=o._wrapper=function(e){if(e.target===e.currentTarget||e.timeStamp>=i||e.timeStamp<=0||e.target.ownerDocument!==document)return o.apply(this,arguments)}}Hr.addEventListener(e,t,ne?{capture:n,passive:r}:n)}function Yr(e,t,n,r){(r||Hr).removeEventListener(e,t._wrapper||t,n)}function Kr(e,t){if(!i(e.data.on)||!i(t.data.on)){var n=t.data.on||{},r=e.data.on||{};Hr=t.elm,function(e){if(o(e.__r)){var t=K?"change":"input";e[t]=[].concat(e.__r,e[t]||[]),delete e.__r}o(e.__c)&&(e.change=[].concat(e.__c,e.change||[]),delete e.__c)}(n),at(n,r,Gr,Yr,Wr,t.context),Hr=void 0}}var Xr,Jr={create:Kr,update:Kr};function Qr(e,t){if(!i(e.data.domProps)||!i(t.data.domProps)){var n,r,a=t.elm,s=e.data.domProps||{},l=t.data.domProps||{};for(n in o(l.__ob__)&&(l=t.data.domProps=S({},l)),s)n in l||(a[n]="");for(n in l){if(r=l[n],"textContent"===n||"innerHTML"===n){if(t.children&&(t.children.length=0),r===s[n])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if("value"===n&&"PROGRESS"!==a.tagName){a._value=r;var c=i(r)?"":String(r);ei(a,c)&&(a.value=c)}else if("innerHTML"===n&&Hn(a.tagName)&&i(a.innerHTML)){(Xr=Xr||document.createElement("div")).innerHTML=""+r+"";for(var u=Xr.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;u.firstChild;)a.appendChild(u.firstChild)}else if(r!==s[n])try{a[n]=r}catch(e){}}}}function ei(e,t){return!e.composing&&("OPTION"===e.tagName||function(e,t){var n=!0;try{n=document.activeElement!==e}catch(e){}return n&&e.value!==t}(e,t)||function(e,t){var n=e.value,r=e._vModifiers;if(o(r)){if(r.number)return v(n)!==v(t);if(r.trim)return n.trim()!==t.trim()}return n!==t}(e,t))}var ti={create:Qr,update:Qr},ni=w((function(e){var t={},n=/:(.+)/;return e.split(/;(?![^(]*\))/g).forEach((function(e){if(e){var r=e.split(n);r.length>1&&(t[r[0].trim()]=r[1].trim())}})),t}));function ri(e){var t=ii(e.style);return e.staticStyle?S(e.staticStyle,t):t}function ii(e){return Array.isArray(e)?j(e):"string"==typeof e?ni(e):e}var oi,ai=/^--/,si=/\s*!important$/,li=function(e,t,n){if(ai.test(t))e.style.setProperty(t,n);else if(si.test(n))e.style.setProperty(C(t),n.replace(si,""),"important");else{var r=ui(t);if(Array.isArray(n))for(var i=0,o=n.length;i-1?t.split(di).forEach((function(t){return e.classList.add(t)})):e.classList.add(t);else{var n=" "+(e.getAttribute("class")||"")+" ";n.indexOf(" "+t+" ")<0&&e.setAttribute("class",(n+t).trim())}}function mi(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(" ")>-1?t.split(di).forEach((function(t){return e.classList.remove(t)})):e.classList.remove(t),e.classList.length||e.removeAttribute("class");else{for(var n=" "+(e.getAttribute("class")||"")+" ",r=" "+t+" ";n.indexOf(r)>=0;)n=n.replace(r," ");(n=n.trim())?e.setAttribute("class",n):e.removeAttribute("class")}}function hi(e){if(e){if("object"==typeof e){var t={};return!1!==e.css&&S(t,gi(e.name||"v")),S(t,e),t}return"string"==typeof e?gi(e):void 0}}var gi=w((function(e){return{enterClass:e+"-enter",enterToClass:e+"-enter-to",enterActiveClass:e+"-enter-active",leaveClass:e+"-leave",leaveToClass:e+"-leave-to",leaveActiveClass:e+"-leave-active"}})),bi=W&&!X,_i="transition",yi="animation",wi="transition",xi="transitionend",ki="animation",Oi="animationend";bi&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(wi="WebkitTransition",xi="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(ki="WebkitAnimation",Oi="webkitAnimationEnd"));var $i=W?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(e){return e()};function Ci(e){$i((function(){$i(e)}))}function Ai(e,t){var n=e._transitionClasses||(e._transitionClasses=[]);n.indexOf(t)<0&&(n.push(t),vi(e,t))}function Ei(e,t){e._transitionClasses&&b(e._transitionClasses,t),mi(e,t)}function Si(e,t,n){var r=Ii(e,t),i=r.type,o=r.timeout,a=r.propCount;if(!i)return n();var s=i===_i?xi:Oi,l=0,c=function(){e.removeEventListener(s,u),n()},u=function(t){t.target===e&&++l>=a&&c()};setTimeout((function(){l0&&(n=_i,u=a,f=o.length):t===yi?c>0&&(n=yi,u=c,f=l.length):f=(n=(u=Math.max(a,c))>0?a>c?_i:yi:null)?n===_i?o.length:l.length:0,{type:n,timeout:u,propCount:f,hasTransform:n===_i&&ji.test(r[wi+"Property"])}}function Ti(e,t){for(;e.length1}function Mi(e,t){!0!==t.data.show&&Fi(t)}var Ni=function(e){var t,n,r={},l=e.modules,c=e.nodeOps;for(t=0;tv?_(e,i(n[g+1])?null:n[g+1].elm,n,d,g,r):d>g&&w(t,p,v)}(p,m,g,n,u):o(g)?(o(e.text)&&c.setTextContent(p,""),_(p,null,g,0,g.length-1,n)):o(m)?w(m,0,m.length-1):o(e.text)&&c.setTextContent(p,""):e.text!==t.text&&c.setTextContent(p,t.text),o(v)&&o(d=v.hook)&&o(d=d.postpatch)&&d(e,t)}}}function $(e,t,n){if(a(n)&&o(e.parent))e.parent.data.pendingInsert=t;else for(var r=0;r-1,a.selected!==o&&(a.selected=o);else if(F(Hi(a),r))return void(e.selectedIndex!==s&&(e.selectedIndex=s));i||(e.selectedIndex=-1)}}function Ui(e,t){return t.every((function(t){return!F(t,e)}))}function Hi(e){return"_value"in e?e._value:e.value}function qi(e){e.target.composing=!0}function Wi(e){e.target.composing&&(e.target.composing=!1,Zi(e.target,"input"))}function Zi(e,t){var n=document.createEvent("HTMLEvents");n.initEvent(t,!0,!0),e.dispatchEvent(n)}function Gi(e){return!e.componentInstance||e.data&&e.data.transition?e:Gi(e.componentInstance._vnode)}var Yi={model:Ri,show:{bind:function(e,t,n){var r=t.value,i=(n=Gi(n)).data&&n.data.transition,o=e.__vOriginalDisplay="none"===e.style.display?"":e.style.display;r&&i?(n.data.show=!0,Fi(n,(function(){e.style.display=o}))):e.style.display=r?o:"none"},update:function(e,t,n){var r=t.value;!r!=!t.oldValue&&((n=Gi(n)).data&&n.data.transition?(n.data.show=!0,r?Fi(n,(function(){e.style.display=e.__vOriginalDisplay})):Di(n,(function(){e.style.display="none"}))):e.style.display=r?e.__vOriginalDisplay:"none")},unbind:function(e,t,n,r,i){i||(e.style.display=e.__vOriginalDisplay)}}},Ki={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function Xi(e){var t=e&&e.componentOptions;return t&&t.Ctor.options.abstract?Xi(Ht(t.children)):e}function Ji(e){var t={},n=e.$options;for(var r in n.propsData)t[r]=e[r];var i=n._parentListeners;for(var o in i)t[k(o)]=i[o];return t}function Qi(e,t){if(/\d-keep-alive$/.test(t.tag))return e("keep-alive",{props:t.componentOptions.propsData})}var eo=function(e){return e.tag||Ut(e)},to=function(e){return"show"===e.name},no={name:"transition",props:Ki,abstract:!0,render:function(e){var t=this,n=this.$slots.default;if(n&&(n=n.filter(eo)).length){var r=this.mode,i=n[0];if(function(e){for(;e=e.parent;)if(e.data.transition)return!0}(this.$vnode))return i;var o=Xi(i);if(!o)return i;if(this._leaving)return Qi(e,i);var a="__transition-"+this._uid+"-";o.key=null==o.key?o.isComment?a+"comment":a+o.tag:s(o.key)?0===String(o.key).indexOf(a)?o.key:a+o.key:o.key;var l=(o.data||(o.data={})).transition=Ji(this),c=this._vnode,u=Xi(c);if(o.data.directives&&o.data.directives.some(to)&&(o.data.show=!0),u&&u.data&&!function(e,t){return t.key===e.key&&t.tag===e.tag}(o,u)&&!Ut(u)&&(!u.componentInstance||!u.componentInstance._vnode.isComment)){var f=u.data.transition=S({},l);if("out-in"===r)return this._leaving=!0,st(f,"afterLeave",(function(){t._leaving=!1,t.$forceUpdate()})),Qi(e,i);if("in-out"===r){if(Ut(o))return c;var p,d=function(){p()};st(l,"afterEnter",d),st(l,"enterCancelled",d),st(f,"delayLeave",(function(e){p=e}))}}return i}}},ro=S({tag:String,moveClass:String},Ki);function io(e){e.elm._moveCb&&e.elm._moveCb(),e.elm._enterCb&&e.elm._enterCb()}function oo(e){e.data.newPos=e.elm.getBoundingClientRect()}function ao(e){var t=e.data.pos,n=e.data.newPos,r=t.left-n.left,i=t.top-n.top;if(r||i){e.data.moved=!0;var o=e.elm.style;o.transform=o.WebkitTransform="translate("+r+"px,"+i+"px)",o.transitionDuration="0s"}}delete ro.mode;var so={Transition:no,TransitionGroup:{props:ro,beforeMount:function(){var e=this,t=this._update;this._update=function(n,r){var i=Kt(e);e.__patch__(e._vnode,e.kept,!1,!0),e._vnode=e.kept,i(),t.call(e,n,r)}},render:function(e){for(var t=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,i=this.$slots.default||[],o=this.children=[],a=Ji(this),s=0;s-1?Zn[e]=t.constructor===window.HTMLUnknownElement||t.constructor===window.HTMLElement:Zn[e]=/HTMLUnknownElement/.test(t.toString())},S(xn.options.directives,Yi),S(xn.options.components,so),xn.prototype.__patch__=W?Ni:I,xn.prototype.$mount=function(e,t){return function(e,t,n){var r;return e.$el=t,e.$options.render||(e.$options.render=ge),Qt(e,"beforeMount"),r=function(){e._update(e._render(),n)},new pn(e,r,I,{before:function(){e._isMounted&&!e._isDestroyed&&Qt(e,"beforeUpdate")}},!0),n=!1,null==e.$vnode&&(e._isMounted=!0,Qt(e,"mounted")),e}(this,e=e&&W?Yn(e):void 0,t)},W&&setTimeout((function(){R.devtools&&oe&&oe.emit("init",xn)}),0);var lo,co=/\{\{((?:.|\r?\n)+?)\}\}/g,uo=/[-.*+?^${}()|[\]\/\\]/g,fo=w((function(e){var t=e[0].replace(uo,"\\$&"),n=e[1].replace(uo,"\\$&");return new RegExp(t+"((?:.|\\n)+?)"+n,"g")})),po={staticKeys:["staticClass"],transformNode:function(e,t){t.warn;var n=Fr(e,"class");n&&(e.staticClass=JSON.stringify(n));var r=Pr(e,"class",!1);r&&(e.classBinding=r)},genData:function(e){var t="";return e.staticClass&&(t+="staticClass:"+e.staticClass+","),e.classBinding&&(t+="class:"+e.classBinding+","),t}},vo={staticKeys:["staticStyle"],transformNode:function(e,t){t.warn;var n=Fr(e,"style");n&&(e.staticStyle=JSON.stringify(ni(n)));var r=Pr(e,"style",!1);r&&(e.styleBinding=r)},genData:function(e){var t="";return e.staticStyle&&(t+="staticStyle:"+e.staticStyle+","),e.styleBinding&&(t+="style:("+e.styleBinding+"),"),t}},mo=m("area,base,br,col,embed,frame,hr,img,input,isindex,keygen,link,meta,param,source,track,wbr"),ho=m("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source"),go=m("address,article,aside,base,blockquote,body,caption,col,colgroup,dd,details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,title,tr,track"),bo=/^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,_o=/^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,yo="[a-zA-Z_][\\-\\.0-9_a-zA-Z"+B.source+"]*",wo="((?:"+yo+"\\:)?"+yo+")",xo=new RegExp("^<"+wo),ko=/^\s*(\/?)>/,Oo=new RegExp("^<\\/"+wo+"[^>]*>"),$o=/^]+>/i,Co=/^",""":'"',"&":"&"," ":"\n"," ":"\t","'":"'"},Io=/&(?:lt|gt|quot|amp|#39);/g,To=/&(?:lt|gt|quot|amp|#39|#10|#9);/g,Po=m("pre,textarea",!0),Fo=function(e,t){return e&&Po(e)&&"\n"===t[0]};function Do(e,t){var n=t?To:Io;return e.replace(n,(function(e){return jo[e]}))}var zo,Lo,Mo,No,Ro,Bo,Vo,Uo,Ho=/^@|^v-on:/,qo=/^v-|^@|^:|^#/,Wo=/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/,Zo=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,Go=/^\(|\)$/g,Yo=/^\[.*\]$/,Ko=/:(.*)$/,Xo=/^:|^\.|^v-bind:/,Jo=/\.[^.\]]+(?=[^\]]*$)/g,Qo=/^v-slot(:|$)|^#/,ea=/[\r\n]/,ta=/\s+/g,na=w((function(e){return(lo=lo||document.createElement("div")).innerHTML=e,lo.textContent})),ra="_empty_";function ia(e,t,n){return{type:1,tag:e,attrsList:t,attrsMap:ua(t),rawAttrsMap:{},parent:n,children:[]}}function oa(e,t){var n,r;(r=Pr(n=e,"key"))&&(n.key=r),e.plain=!e.key&&!e.scopedSlots&&!e.attrsList.length,function(e){var t=Pr(e,"ref");t&&(e.ref=t,e.refInFor=function(e){for(var t=e;t;){if(void 0!==t.for)return!0;t=t.parent}return!1}(e))}(e),function(e){var t;"template"===e.tag?(t=Fr(e,"scope"),e.slotScope=t||Fr(e,"slot-scope")):(t=Fr(e,"slot-scope"))&&(e.slotScope=t);var n=Pr(e,"slot");if(n&&(e.slotTarget='""'===n?'"default"':n,e.slotTargetDynamic=!(!e.attrsMap[":slot"]&&!e.attrsMap["v-bind:slot"]),"template"===e.tag||e.slotScope||Er(e,"slot",n,function(e,t){return e.rawAttrsMap[":"+t]||e.rawAttrsMap["v-bind:"+t]||e.rawAttrsMap[t]}(e,"slot"))),"template"===e.tag){var r=Dr(e,Qo);if(r){var i=la(r),o=i.name,a=i.dynamic;e.slotTarget=o,e.slotTargetDynamic=a,e.slotScope=r.value||ra}}else{var s=Dr(e,Qo);if(s){var l=e.scopedSlots||(e.scopedSlots={}),c=la(s),u=c.name,f=c.dynamic,p=l[u]=ia("template",[],e);p.slotTarget=u,p.slotTargetDynamic=f,p.children=e.children.filter((function(e){if(!e.slotScope)return e.parent=p,!0})),p.slotScope=s.value||ra,e.children=[],e.plain=!1}}}(e),function(e){"slot"===e.tag&&(e.slotName=Pr(e,"name"))}(e),function(e){var t;(t=Pr(e,"is"))&&(e.component=t),null!=Fr(e,"inline-template")&&(e.inlineTemplate=!0)}(e);for(var i=0;i-1"+("true"===o?":("+t+")":":_q("+t+","+o+")")),Tr(e,"change","var $$a="+t+",$$el=$event.target,$$c=$$el.checked?("+o+"):("+a+");if(Array.isArray($$a)){var $$v="+(r?"_n("+i+")":i)+",$$i=_i($$a,$$v);if($$el.checked){$$i<0&&("+Mr(t,"$$a.concat([$$v])")+")}else{$$i>-1&&("+Mr(t,"$$a.slice(0,$$i).concat($$a.slice($$i+1))")+")}}else{"+Mr(t,"$$c")+"}",null,!0)}(e,r,i);else if("input"===o&&"radio"===a)!function(e,t,n){var r=n&&n.number,i=Pr(e,"value")||"null";Ar(e,"checked","_q("+t+","+(i=r?"_n("+i+")":i)+")"),Tr(e,"change",Mr(t,i),null,!0)}(e,r,i);else if("input"===o||"textarea"===o)!function(e,t,n){var r=e.attrsMap.type,i=n||{},o=i.lazy,a=i.number,s=i.trim,l=!o&&"range"!==r,c=o?"change":"range"===r?qr:"input",u="$event.target.value";s&&(u="$event.target.value.trim()"),a&&(u="_n("+u+")");var f=Mr(t,u);l&&(f="if($event.target.composing)return;"+f),Ar(e,"value","("+t+")"),Tr(e,c,f,null,!0),(s||a)&&Tr(e,"blur","$forceUpdate()")}(e,r,i);else if(!R.isReservedTag(o))return Lr(e,r,i),!1;return!0},text:function(e,t){t.value&&Ar(e,"textContent","_s("+t.value+")",t)},html:function(e,t){t.value&&Ar(e,"innerHTML","_s("+t.value+")",t)}},isPreTag:function(e){return"pre"===e},isUnaryTag:mo,mustUseProp:In,canBeLeftOpenTag:ho,isReservedTag:qn,getTagNamespace:Wn,staticKeys:function(e){return e.reduce((function(e,t){return e.concat(t.staticKeys||[])}),[]).join(",")}(ha)},ba=w((function(e){return m("type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap"+(e?","+e:""))}));var _a=/^([\w$_]+|\([^)]*?\))\s*=>|^function(?:\s+[\w$]+)?\s*\(/,ya=/\([^)]*?\);*$/,wa=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/,xa={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,delete:[8,46]},ka={esc:["Esc","Escape"],tab:"Tab",enter:"Enter",space:[" ","Spacebar"],up:["Up","ArrowUp"],left:["Left","ArrowLeft"],right:["Right","ArrowRight"],down:["Down","ArrowDown"],delete:["Backspace","Delete","Del"]},Oa=function(e){return"if("+e+")return null;"},$a={stop:"$event.stopPropagation();",prevent:"$event.preventDefault();",self:Oa("$event.target !== $event.currentTarget"),ctrl:Oa("!$event.ctrlKey"),shift:Oa("!$event.shiftKey"),alt:Oa("!$event.altKey"),meta:Oa("!$event.metaKey"),left:Oa("'button' in $event && $event.button !== 0"),middle:Oa("'button' in $event && $event.button !== 1"),right:Oa("'button' in $event && $event.button !== 2")};function Ca(e,t){var n=t?"nativeOn:":"on:",r="",i="";for(var o in e){var a=Aa(e[o]);e[o]&&e[o].dynamic?i+=o+","+a+",":r+='"'+o+'":'+a+","}return r="{"+r.slice(0,-1)+"}",i?n+"_d("+r+",["+i.slice(0,-1)+"])":n+r}function Aa(e){if(!e)return"function(){}";if(Array.isArray(e))return"["+e.map((function(e){return Aa(e)})).join(",")+"]";var t=wa.test(e.value),n=_a.test(e.value),r=wa.test(e.value.replace(ya,""));if(e.modifiers){var i="",o="",a=[];for(var s in e.modifiers)if($a[s])o+=$a[s],xa[s]&&a.push(s);else if("exact"===s){var l=e.modifiers;o+=Oa(["ctrl","shift","alt","meta"].filter((function(e){return!l[e]})).map((function(e){return"$event."+e+"Key"})).join("||"))}else a.push(s);return a.length&&(i+=function(e){return"if(!$event.type.indexOf('key')&&"+e.map(Ea).join("&&")+")return null;"}(a)),o&&(i+=o),"function($event){"+i+(t?"return "+e.value+"($event)":n?"return ("+e.value+")($event)":r?"return "+e.value:e.value)+"}"}return t||n?e.value:"function($event){"+(r?"return "+e.value:e.value)+"}"}function Ea(e){var t=parseInt(e,10);if(t)return"$event.keyCode!=="+t;var n=xa[e],r=ka[e];return"_k($event.keyCode,"+JSON.stringify(e)+","+JSON.stringify(n)+",$event.key,"+JSON.stringify(r)+")"}var Sa={on:function(e,t){e.wrapListeners=function(e){return"_g("+e+","+t.value+")"}},bind:function(e,t){e.wrapData=function(n){return"_b("+n+",'"+e.tag+"',"+t.value+","+(t.modifiers&&t.modifiers.prop?"true":"false")+(t.modifiers&&t.modifiers.sync?",true":"")+")"}},cloak:I},ja=function(e){this.options=e,this.warn=e.warn||$r,this.transforms=Cr(e.modules,"transformCode"),this.dataGenFns=Cr(e.modules,"genData"),this.directives=S(S({},Sa),e.directives);var t=e.isReservedTag||T;this.maybeComponent=function(e){return!!e.component||!t(e.tag)},this.onceId=0,this.staticRenderFns=[],this.pre=!1};function Ia(e,t){var n=new ja(t);return{render:"with(this){return "+(e?Ta(e,n):'_c("div")')+"}",staticRenderFns:n.staticRenderFns}}function Ta(e,t){if(e.parent&&(e.pre=e.pre||e.parent.pre),e.staticRoot&&!e.staticProcessed)return Pa(e,t);if(e.once&&!e.onceProcessed)return Fa(e,t);if(e.for&&!e.forProcessed)return za(e,t);if(e.if&&!e.ifProcessed)return Da(e,t);if("template"!==e.tag||e.slotTarget||t.pre){if("slot"===e.tag)return function(e,t){var n=e.slotName||'"default"',r=Ra(e,t),i="_t("+n+(r?","+r:""),o=e.attrs||e.dynamicAttrs?Ua((e.attrs||[]).concat(e.dynamicAttrs||[]).map((function(e){return{name:k(e.name),value:e.value,dynamic:e.dynamic}}))):null,a=e.attrsMap["v-bind"];return!o&&!a||r||(i+=",null"),o&&(i+=","+o),a&&(i+=(o?"":",null")+","+a),i+")"}(e,t);var n;if(e.component)n=function(e,t,n){var r=t.inlineTemplate?null:Ra(t,n,!0);return"_c("+e+","+La(t,n)+(r?","+r:"")+")"}(e.component,e,t);else{var r;(!e.plain||e.pre&&t.maybeComponent(e))&&(r=La(e,t));var i=e.inlineTemplate?null:Ra(e,t,!0);n="_c('"+e.tag+"'"+(r?","+r:"")+(i?","+i:"")+")"}for(var o=0;o>>0}(a):"")+")"}(e,e.scopedSlots,t)+","),e.model&&(n+="model:{value:"+e.model.value+",callback:"+e.model.callback+",expression:"+e.model.expression+"},"),e.inlineTemplate){var o=function(e,t){var n=e.children[0];if(n&&1===n.type){var r=Ia(n,t.options);return"inlineTemplate:{render:function(){"+r.render+"},staticRenderFns:["+r.staticRenderFns.map((function(e){return"function(){"+e+"}"})).join(",")+"]}"}}(e,t);o&&(n+=o+",")}return n=n.replace(/,$/,"")+"}",e.dynamicAttrs&&(n="_b("+n+',"'+e.tag+'",'+Ua(e.dynamicAttrs)+")"),e.wrapData&&(n=e.wrapData(n)),e.wrapListeners&&(n=e.wrapListeners(n)),n}function Ma(e){return 1===e.type&&("slot"===e.tag||e.children.some(Ma))}function Na(e,t){var n=e.attrsMap["slot-scope"];if(e.if&&!e.ifProcessed&&!n)return Da(e,t,Na,"null");if(e.for&&!e.forProcessed)return za(e,t,Na);var r=e.slotScope===ra?"":String(e.slotScope),i="function("+r+"){return "+("template"===e.tag?e.if&&n?"("+e.if+")?"+(Ra(e,t)||"undefined")+":undefined":Ra(e,t)||"undefined":Ta(e,t))+"}",o=r?"":",proxy:true";return"{key:"+(e.slotTarget||'"default"')+",fn:"+i+o+"}"}function Ra(e,t,n,r,i){var o=e.children;if(o.length){var a=o[0];if(1===o.length&&a.for&&"template"!==a.tag&&"slot"!==a.tag){var s=n?t.maybeComponent(a)?",1":",0":"";return""+(r||Ta)(a,t)+s}var l=n?function(e,t){for(var n=0,r=0;r]*>)","i")),p=e.replace(f,(function(e,n,r){return c=r.length,Eo(u)||"noscript"===u||(n=n.replace(//g,"$1").replace(//g,"$1")),Fo(u,n)&&(n=n.slice(1)),t.chars&&t.chars(n),""}));l+=e.length-p.length,e=p,C(u,l-c,l)}else{var d=e.indexOf("<");if(0===d){if(Co.test(e)){var v=e.indexOf("--\x3e");if(v>=0){t.shouldKeepComment&&t.comment(e.substring(4,v),l,l+v+3),k(v+3);continue}}if(Ao.test(e)){var m=e.indexOf("]>");if(m>=0){k(m+2);continue}}var h=e.match($o);if(h){k(h[0].length);continue}var g=e.match(Oo);if(g){var b=l;k(g[0].length),C(g[1],b,l);continue}var _=O();if(_){$(_),Fo(_.tagName,e)&&k(1);continue}}var y=void 0,w=void 0,x=void 0;if(d>=0){for(w=e.slice(d);!(Oo.test(w)||xo.test(w)||Co.test(w)||Ao.test(w)||(x=w.indexOf("<",1))<0);)d+=x,w=e.slice(d);y=e.substring(0,d)}d<0&&(y=e),y&&k(y.length),t.chars&&y&&t.chars(y,l-y.length,l)}if(e===n){t.chars&&t.chars(e);break}}function k(t){l+=t,e=e.substring(t)}function O(){var t=e.match(xo);if(t){var n,r,i={tagName:t[1],attrs:[],start:l};for(k(t[0].length);!(n=e.match(ko))&&(r=e.match(_o)||e.match(bo));)r.start=l,k(r[0].length),r.end=l,i.attrs.push(r);if(n)return i.unarySlash=n[1],k(n[0].length),i.end=l,i}}function $(e){var n=e.tagName,l=e.unarySlash;o&&("p"===r&&go(n)&&C(r),s(n)&&r===n&&C(n));for(var c=a(n)||!!l,u=e.attrs.length,f=new Array(u),p=0;p=0&&i[a].lowerCasedTag!==s;a--);else a=0;if(a>=0){for(var c=i.length-1;c>=a;c--)t.end&&t.end(i[c].tag,n,o);i.length=a,r=a&&i[a-1].tag}else"br"===s?t.start&&t.start(e,[],!0,n,o):"p"===s&&(t.start&&t.start(e,[],!1,n,o),t.end&&t.end(e,n,o))}C()}(e,{warn:zo,expectHTML:t.expectHTML,isUnaryTag:t.isUnaryTag,canBeLeftOpenTag:t.canBeLeftOpenTag,shouldDecodeNewlines:t.shouldDecodeNewlines,shouldDecodeNewlinesForHref:t.shouldDecodeNewlinesForHref,shouldKeepComment:t.comments,outputSourceRange:t.outputSourceRange,start:function(e,o,a,u,f){var p=r&&r.ns||Uo(e);K&&"svg"===p&&(o=function(e){for(var t=[],n=0;nl&&(s.push(o=e.slice(l,i)),a.push(JSON.stringify(o)));var c=kr(r[1].trim());a.push("_s("+c+")"),s.push({"@binding":c}),l=i+r[0].length}return l':'
',Ga.innerHTML.indexOf(" ")>0}var Ja=!!W&&Xa(!1),Qa=!!W&&Xa(!0),es=w((function(e){var t=Yn(e);return t&&t.innerHTML})),ts=xn.prototype.$mount;xn.prototype.$mount=function(e,t){if((e=e&&Yn(e))===document.body||e===document.documentElement)return this;var n=this.$options;if(!n.render){var r=n.template;if(r)if("string"==typeof r)"#"===r.charAt(0)&&(r=es(r));else{if(!r.nodeType)return this;r=r.innerHTML}else e&&(r=function(e){if(e.outerHTML)return e.outerHTML;var t=document.createElement("div");return t.appendChild(e.cloneNode(!0)),t.innerHTML}(e));if(r){var i=Ka(r,{outputSourceRange:!1,shouldDecodeNewlines:Ja,shouldDecodeNewlinesForHref:Qa,delimiters:n.delimiters,comments:n.comments},this),o=i.render,a=i.staticRenderFns;n.render=o,n.staticRenderFns=a}}return ts.call(this,e,t)},xn.compile=Ka,e.exports=xn}).call(this,n(9),n(63).setImmediate)},function(e,t,n){(function(e,t){!function(e,n){"use strict";if(!e.setImmediate){var r,i,o,a,s,l=1,c={},u=!1,f=e.document,p=Object.getPrototypeOf&&Object.getPrototypeOf(e);p=p&&p.setTimeout?p:e,"[object process]"==={}.toString.call(e.process)?r=function(e){t.nextTick((function(){v(e)}))}:!function(){if(e.postMessage&&!e.importScripts){var t=!0,n=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=n,t}}()?e.MessageChannel?((o=new MessageChannel).port1.onmessage=function(e){v(e.data)},r=function(e){o.port2.postMessage(e)}):f&&"onreadystatechange"in f.createElement("script")?(i=f.documentElement,r=function(e){var t=f.createElement("script");t.onreadystatechange=function(){v(e),t.onreadystatechange=null,i.removeChild(t),t=null},i.appendChild(t)}):r=function(e){setTimeout(v,0,e)}:(a="setImmediate$"+Math.random()+"$",s=function(t){t.source===e&&"string"==typeof t.data&&0===t.data.indexOf(a)&&v(+t.data.slice(a.length))},e.addEventListener?e.addEventListener("message",s,!1):e.attachEvent("onmessage",s),r=function(t){e.postMessage(a+t,"*")}),p.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),n=0;n=0;--i){var o=this.tryEntries[i],a=o.completion;if("root"===o.tryLoc)return r("end");if(o.tryLoc<=this.prev){var s=n.call(o,"catchLoc"),l=n.call(o,"finallyLoc");if(s&&l){if(this.prev=0;--r){var i=this.tryEntries[r];if(i.tryLoc<=this.prev&&n.call(i,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),w(n),c}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var i=r.arg;w(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:k(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),c}},e}(e.exports);try{regeneratorRuntime=r}catch(e){Function("r","regeneratorRuntime = r")(r)}},function(e,t,n){"use strict";var r=n(17);n.n(r).a},function(e,t,n){(t=e.exports=n(1)(!1)).push([e.i,"@import url(https://fonts.googleapis.com/css2?family=Nunito:wght@200;300;400;600;700;900&display=swap);",""]),t.push([e.i,".dropzone[data-v-d83bfc70] {\n position: relative;\n line-height: 0;\n}\n.dropzone input[type='file'][data-v-d83bfc70] {\n opacity: 0;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 1;\n width: 100%;\n cursor: pointer;\n}\n.dropzone .image-preview[data-v-d83bfc70] {\n width: 75px;\n height: 75px;\n -o-object-fit: cover;\n object-fit: cover;\n border-radius: 8px;\n border: 1px dashed #00BC7E;\n padding: 2px;\n}\n",""])},function(e,t,n){"use strict";var r=n(18);n.n(r).a},function(e,t,n){(t=e.exports=n(1)(!1)).push([e.i,"@import url(https://fonts.googleapis.com/css2?family=Nunito:wght@200;300;400;600;700;900&display=swap);",""]),t.push([e.i,".page-header[data-v-2936b414] {\n display: flex;\n align-items: center;\n padding: 20px 30px;\n background: white;\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n z-index: 9;\n}\n.page-header .title[data-v-2936b414] {\n font-size: 1.375em;\n font-weight: 700;\n color: #1b2539;\n}\n.page-header .icon[data-v-2936b414] {\n font-size: 1em;\n margin-right: 15px;\n cursor: pointer;\n}\n@media only screen and (max-width: 960px) {\n.page-header[data-v-2936b414] {\n padding: 20px 15px;\n}\n.page-header .title[data-v-2936b414] {\n font-size: 1.125em;\n}\n}\n@media (prefers-color-scheme: dark) {\n.page-header[data-v-2936b414] {\n background: #1a1f25;\n}\n.page-header .title[data-v-2936b414] {\n color: #B8C4D0;\n}\n.page-header .icon path[data-v-2936b414] {\n fill: #00BC7E;\n}\n}\n",""])},function(e,t,n){"use strict";var r=n(19);n.n(r).a},function(e,t,n){(t=e.exports=n(1)(!1)).push([e.i,"@import url(https://fonts.googleapis.com/css2?family=Nunito:wght@200;300;400;600;700;900&display=swap);",""]),t.push([e.i,".theme-label[data-v-79145499] {\n font-size: 0.875em;\n color: #00BC7E;\n text-transform: uppercase;\n font-weight: 900;\n display: block;\n margin-bottom: 5px;\n}\n",""])},function(e,t,n){"use strict";var r=n(20);n.n(r).a},function(e,t,n){(t=e.exports=n(1)(!1)).push([e.i,"@import url(https://fonts.googleapis.com/css2?family=Nunito:wght@200;300;400;600;700;900&display=swap);",""]),t.push([e.i,'.form.inline-form {\n display: flex;\n position: relative;\n justify-content: center;\n}\n.form.inline-form .input-wrapper {\n position: relative;\n}\n.form.inline-form .input-wrapper .error-message {\n position: absolute;\n left: 0;\n bottom: -25px;\n}\n.form.block-form.create-new-password .block-wrapper label {\n width: 280px;\n}\n.form.block-form .block-wrapper {\n display: flex;\n align-items: center;\n margin-top: 25px;\n justify-content: center;\n}\n.form.block-form .block-wrapper:first-child {\n margin-top: 0;\n}\n.form.block-form .block-wrapper label {\n white-space: nowrap;\n font-size: 1.125em;\n font-weight: 700;\n padding-right: 20px;\n width: 200px;\n text-align: right !important;\n color: #1b2539;\n}\n.form.block-form .button {\n margin-top: 50px;\n}\n.input-wrapper .error-message {\n font-size: 0.875em;\n color: #d22323;\n padding-top: 5px;\n display: block;\n text-align: left;\n}\ntextarea {\n width: 100%;\n}\ntextarea,\ninput[type="password"],\ninput[type="text"],\ninput[type="email"] {\n background: #f6f6f6;\n border: 1px solid transparent;\n transition: 0.15s all ease;\n font-size: 1em;\n border-radius: 8px;\n padding: 13px 20px;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n font-weight: 700;\n outline: 0;\n min-width: 310px;\n}\ntextarea.is-error,\ninput[type="password"].is-error,\ninput[type="text"].is-error,\ninput[type="email"].is-error {\n border-color: #d22323;\n box-shadow: 0 0 7px rgba(210, 35, 35, 0.3);\n}\ntextarea::-webkit-input-placeholder, input[type="password"]::-webkit-input-placeholder, input[type="text"]::-webkit-input-placeholder, input[type="email"]::-webkit-input-placeholder {\n color: #A4ADB6;\n font-size: 1em;\n}\ntextarea::-moz-placeholder, input[type="password"]::-moz-placeholder, input[type="text"]::-moz-placeholder, input[type="email"]::-moz-placeholder {\n color: #A4ADB6;\n font-size: 1em;\n}\ntextarea:-ms-input-placeholder, input[type="password"]:-ms-input-placeholder, input[type="text"]:-ms-input-placeholder, input[type="email"]:-ms-input-placeholder {\n color: #A4ADB6;\n font-size: 1em;\n}\ntextarea::-ms-input-placeholder, input[type="password"]::-ms-input-placeholder, input[type="text"]::-ms-input-placeholder, input[type="email"]::-ms-input-placeholder {\n color: #A4ADB6;\n font-size: 1em;\n}\ntextarea::placeholder,\ninput[type="password"]::placeholder,\ninput[type="text"]::placeholder,\ninput[type="email"]::placeholder {\n color: #A4ADB6;\n font-size: 1em;\n}\ntextarea:focus,\ninput[type="password"]:focus,\ninput[type="text"]:focus,\ninput[type="email"]:focus {\n border-color: #00BC7E;\n box-shadow: 0 0 7px rgba(0, 188, 126, 0.3);\n}\ntextarea[disabled],\ninput[type="password"][disabled],\ninput[type="text"][disabled],\ninput[type="email"][disabled] {\n color: #A4ADB6;\n cursor: not-allowed;\n}\n.additional-link {\n font-size: 1em;\n margin-top: 50px;\n display: block;\n color: #1b2539;\n}\n.additional-link b, .additional-link a {\n color: #00BC7E;\n cursor: pointer;\n}\n.additional-link b:hover, .additional-link a:hover {\n text-decoration: underline;\n}\n@media only screen and (max-width: 960px) {\n.form .button {\n margin-top: 20px;\n width: 100%;\n margin-left: 0;\n margin-right: 0;\n}\n.form input, .form textarea {\n width: 100%;\n min-width: 100%;\n}\n.form.block-form .block-wrapper {\n display: block;\n}\n.form.block-form .block-wrapper label {\n width: 100%;\n padding-right: 0;\n display: block;\n margin-bottom: 7px;\n text-align: left !important;\n font-size: 0.875em;\n padding-top: 0;\n}\n.form.block-form .button {\n margin-top: 25px;\n margin-left: 0;\n margin-right: 0;\n}\n.form.inline-form {\n display: block;\n}\n.form.inline-form .input-wrapper .error-message {\n position: relative;\n bottom: 0;\n}\n.form .button {\n padding: 14px 32px;\n}\ntextarea,\n input[type="password"],\n input[type="text"],\n input[type="email"] {\n padding: 14px 20px;\n}\n}\n@media (prefers-color-scheme: dark) {\n.form.block-form .block-wrapper label {\n color: #B8C4D0;\n}\ntextarea,\n input[type="password"],\n input[type="text"],\n input[type="email"] {\n background: #1c222d;\n color: #B8C4D0;\n}\ntextarea::-webkit-input-placeholder, input[type="password"]::-webkit-input-placeholder, input[type="text"]::-webkit-input-placeholder, input[type="email"]::-webkit-input-placeholder {\n color: #667b90;\n}\ntextarea::-moz-placeholder, input[type="password"]::-moz-placeholder, input[type="text"]::-moz-placeholder, input[type="email"]::-moz-placeholder {\n color: #667b90;\n}\ntextarea:-ms-input-placeholder, input[type="password"]:-ms-input-placeholder, input[type="text"]:-ms-input-placeholder, input[type="email"]:-ms-input-placeholder {\n color: #667b90;\n}\ntextarea::-ms-input-placeholder, input[type="password"]::-ms-input-placeholder, input[type="text"]::-ms-input-placeholder, input[type="email"]::-ms-input-placeholder {\n color: #667b90;\n}\ntextarea::placeholder,\n input[type="password"]::placeholder,\n input[type="text"]::placeholder,\n input[type="email"]::placeholder {\n color: #667b90;\n}\ntextarea[disabled],\n input[type="password"][disabled],\n input[type="text"][disabled],\n input[type="email"][disabled] {\n color: #667b90;\n}\n}\n.avatar-upload {\n display: flex;\n align-items: center;\n margin-top: 20px;\n}\n.avatar-upload .info {\n margin-left: 25px;\n}\n.avatar-upload .info .description {\n font-size: 1.125em;\n font-weight: 700;\n color: #1b2539;\n}\n.avatar-upload .info .supported {\n display: block;\n font-size: 0.75em;\n font-weight: 500;\n color: #A4ADB6;\n}\n.form .confirm-form {\n margin-top: 30px;\n text-align: right;\n}\n.form.block-form {\n margin-top: 50px;\n max-width: 700px;\n}\n.form.block-form .block-wrapper {\n justify-content: flex-start;\n}\n.form.block-form .block-wrapper label {\n text-align: left;\n flex: 0 0 220px;\n}\n.form.block-form .block-wrapper .input-wrapper, .form.block-form .block-wrapper input {\n width: 100%;\n}\n#user-settings {\n overflow: hidden;\n width: 100%;\n height: 100%;\n position: relative;\n}\n#user-settings .content-page {\n padding-left: 30px;\n padding-right: 30px;\n overflow-y: auto;\n height: 100%;\n padding-bottom: 100px;\n}\n@media only screen and (max-width: 960px) {\n#user-settings .content-page {\n padding-left: 15px;\n padding-right: 15px;\n}\n.avatar-upload {\n margin-top: 30px;\n}\n.form .button-base {\n width: 100%;\n margin-top: 0;\n text-align: center;\n}\n}\n@media (prefers-color-scheme: dark) {\n.avatar-upload .info .description {\n color: #B8C4D0;\n}\n.avatar-upload .info .supported {\n color: #667b90;\n}\n}\n',""])},function(e,t,n){"use strict";var r=n(21);n.n(r).a},function(e,t,n){(t=e.exports=n(1)(!1)).push([e.i,"@import url(https://fonts.googleapis.com/css2?family=Nunito:wght@200;300;400;600;700;900&display=swap);",""]),t.push([e.i,".vignette[data-v-00b74e90] {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n z-index: 19;\n background: rgba(255, 255, 255, 0.8);\n}\n@media (prefers-color-scheme: dark) {\n.vignette[data-v-00b74e90] {\n background: rgba(22, 23, 27, 0.7);\n}\n}\n.vignette-enter-active[data-v-00b74e90] {\n -webkit-animation: vignette-in-data-v-00b74e90 0.35s ease;\n animation: vignette-in-data-v-00b74e90 0.35s ease;\n}\n.vignette-leave-active[data-v-00b74e90] {\n animation: vignette-in-data-v-00b74e90 0.15s ease reverse;\n}\n@-webkit-keyframes vignette-in-data-v-00b74e90 {\n0% {\n opacity: 0;\n}\n100% {\n opacity: 1;\n}\n}\n@keyframes vignette-in-data-v-00b74e90 {\n0% {\n opacity: 0;\n}\n100% {\n opacity: 1;\n}\n}\n",""])},function(e,t,n){"use strict";var r=n(22);n.n(r).a},function(e,t,n){(t=e.exports=n(1)(!1)).push([e.i,"@import url(https://fonts.googleapis.com/css2?family=Nunito:wght@200;300;400;600;700;900&display=swap);",""]),t.push([e.i,".popup[data-v-b6519020] {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 20;\n overflow: auto;\n}\n.popup-wrapper[data-v-b6519020] {\n z-index: 12;\n position: absolute;\n left: 0;\n right: 0;\n max-width: 480px;\n top: 50%;\n transform: translateY(-50%) scale(1);\n margin: 0 auto;\n padding: 40px;\n box-shadow: 0 10px 50px rgba(0, 0, 0, 0.1);\n border-radius: 8px;\n text-align: center;\n background: white;\n}\n.popup-image[data-v-b6519020] {\n margin-bottom: 30px;\n}\n.popup-image .emoji[data-v-b6519020] {\n font-size: 3.5em;\n line-height: 1;\n}\n.popup-content .title[data-v-b6519020] {\n font-size: 1.375em;\n text-transform: uppercase;\n font-weight: 800;\n color: #1b2539;\n}\n.popup-content .message[data-v-b6519020] {\n font-size: 1em;\n color: #8b8f9a;\n margin-top: 5px;\n}\n.popup-actions[data-v-b6519020] {\n margin-top: 30px;\n}\n.popup-actions .action-confirm[data-v-b6519020] {\n width: 100%;\n}\n.small .popup-wrapper[data-v-b6519020] {\n padding: 40px 20px 20px;\n left: 15px;\n right: 15px;\n}\n@media (prefers-color-scheme: dark) {\n.popup-wrapper[data-v-b6519020] {\n background: #1a1f25;\n}\n.popup-content .title[data-v-b6519020] {\n color: #B8C4D0;\n}\n.popup-content .message[data-v-b6519020] {\n color: #667b90;\n}\n}\n.popup-enter-active[data-v-b6519020] {\n -webkit-animation: popup-in-data-v-b6519020 0.35s 0.15s ease both;\n animation: popup-in-data-v-b6519020 0.35s 0.15s ease both;\n}\n.popup-leave-active[data-v-b6519020] {\n animation: popup-in-data-v-b6519020 0.15s ease reverse;\n}\n@-webkit-keyframes popup-in-data-v-b6519020 {\n0% {\n opacity: 0;\n transform: scale(0.7);\n}\n100% {\n opacity: 1;\n transform: scale(1);\n}\n}\n@keyframes popup-in-data-v-b6519020 {\n0% {\n opacity: 0;\n transform: scale(0.7);\n}\n100% {\n opacity: 1;\n transform: scale(1);\n}\n}\n",""])},function(e,t,n){"use strict";var r=n(23);n.n(r).a},function(e,t,n){(t=e.exports=n(1)(!1)).push([e.i,"@import url(https://fonts.googleapis.com/css2?family=Nunito:wght@200;300;400;600;700;900&display=swap);",""]),t.push([e.i,".progress-bar[data-v-492a817a] {\n width: 100%;\n height: 5px;\n background: #EBEBEB;\n margin-top: 5px;\n border-radius: 10px;\n}\n.progress-bar span[data-v-492a817a] {\n background: #00BC7E;\n display: block;\n height: 100%;\n border-radius: 10px;\n max-width: 100%;\n}\n@media (prefers-color-scheme: dark) {\n.progress-bar[data-v-492a817a] {\n background: #1c222d;\n}\n}\n@media only screen and (min-width: 680px) and (prefers-color-scheme: dark) {\n.progress-bar[data-v-492a817a] {\n background: #1c222d;\n}\n}\n",""])},function(e,t,n){"use strict";var r=n(24);n.n(r).a},function(e,t,n){(t=e.exports=n(1)(!1)).push([e.i,"@import url(https://fonts.googleapis.com/css2?family=Nunito:wght@200;300;400;600;700;900&display=swap);",""]),t.push([e.i,".info-panel-enter-active[data-v-12846a03],\n.info-panel-leave-active[data-v-12846a03] {\n transition: all 0.3s ease;\n}\n.info-panel-enter[data-v-12846a03],\n.info-panel-leave-to[data-v-12846a03] {\n opacity: 0;\n transform: translateY(-100%);\n}\n.upload-progress[data-v-12846a03] {\n width: 100%;\n padding-bottom: 10px;\n position: relative;\n z-index: 1;\n}\n.upload-progress .progress-title[data-v-12846a03] {\n font-weight: 700;\n text-align: center;\n}\n.upload-progress .progress-title span[data-v-12846a03] {\n font-size: 0.875em;\n}\n@media (prefers-color-scheme: dark) {\n.progress-bar[data-v-12846a03] {\n background: #1c222d;\n}\n}\n",""])},function(e,t,n){"use strict";var r=n(25);n.n(r).a},function(e,t,n){(t=e.exports=n(1)(!1)).push([e.i,"@import url(https://fonts.googleapis.com/css2?family=Nunito:wght@200;300;400;600;700;900&display=swap);",""]),t.push([e.i,".button[data-v-593ef2ee] {\n height: 42px;\n width: 42px;\n border-radius: 8px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n background: #f6f6f6;\n text-align: center;\n cursor: pointer;\n white-space: nowrap;\n outline: none;\n border: none;\n}\n.button[data-v-593ef2ee]:hover {\n background: rgba(0, 188, 126, 0.1);\n}\n.button[data-v-593ef2ee]:hover svg path {\n transition: 0.3s all ease;\n fill: #00BC7E;\n}\n.button .icon[data-v-593ef2ee] {\n font-size: 1em;\n}\n@media (prefers-color-scheme: dark) {\n.button[data-v-593ef2ee] {\n background: #1c222d;\n}\n.icon path[data-v-593ef2ee] {\n fill: #B8C4D0;\n}\n}\n",""])},function(e,t,n){"use strict";var r=n(26);n.n(r).a},function(e,t,n){(t=e.exports=n(1)(!1)).push([e.i,"@import url(https://fonts.googleapis.com/css2?family=Nunito:wght@200;300;400;600;700;900&display=swap);",""]),t.push([e.i,".button[data-v-23c4c878] {\n height: 42px;\n width: 42px;\n border-radius: 8px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n background: #f6f6f6;\n text-align: center;\n cursor: pointer;\n white-space: nowrap;\n outline: none;\n border: none;\n}\n.button .icon[data-v-23c4c878] {\n font-size: 1em;\n}\n.button[data-v-23c4c878]:hover {\n background: rgba(0, 188, 126, 0.1);\n}\n.button[data-v-23c4c878]:hover svg path {\n transition: 0.3s all ease;\n fill: #00BC7E;\n}\n.button.active[data-v-23c4c878] {\n background: rgba(0, 188, 126, 0.1);\n}\n.button.active[data-v-23c4c878] svg path {\n fill: #00BC7E;\n}\n@media (prefers-color-scheme: dark) {\n.button[data-v-23c4c878] {\n background: #1c222d;\n}\n.icon path[data-v-23c4c878] {\n fill: #B8C4D0;\n}\n}\n",""])},function(e,t,n){"use strict";var r=n(27);n.n(r).a},function(e,t,n){(t=e.exports=n(1)(!1)).push([e.i,"@import url(https://fonts.googleapis.com/css2?family=Nunito:wght@200;300;400;600;700;900&display=swap);",""]),t.push([e.i,".search-bar[data-v-bd378dbc] {\n position: relative;\n}\n.search-bar input[data-v-bd378dbc] {\n background: #f6f6f6;\n border-radius: 8px;\n outline: 0;\n padding: 9px 20px;\n font-weight: 100;\n font-size: 1em;\n min-width: 380px;\n transition: 0.15s all ease;\n border: 1px solid white;\n -webkit-appearance: none;\n}\n.search-bar input[data-v-bd378dbc]::-webkit-input-placeholder {\n color: #1b2539;\n font-size: 0.875em;\n font-weight: 400;\n}\n.search-bar input[data-v-bd378dbc]::-moz-placeholder {\n color: #1b2539;\n font-size: 0.875em;\n font-weight: 400;\n}\n.search-bar input[data-v-bd378dbc]:-ms-input-placeholder {\n color: #1b2539;\n font-size: 0.875em;\n font-weight: 400;\n}\n.search-bar input[data-v-bd378dbc]::-ms-input-placeholder {\n color: #1b2539;\n font-size: 0.875em;\n font-weight: 400;\n}\n.search-bar input[data-v-bd378dbc]::placeholder {\n color: #1b2539;\n font-size: 0.875em;\n font-weight: 400;\n}\n.search-bar input[data-v-bd378dbc]:focus {\n border: 1px solid #00BC7E;\n box-shadow: 0 0 7px rgba(0, 188, 126, 0.3);\n}\n.search-bar input:focus + .icon path[data-v-bd378dbc] {\n fill: #00BC7E;\n}\n.search-bar .icon[data-v-bd378dbc] {\n position: absolute;\n top: 0;\n right: 0;\n padding: 10px 15px;\n}\n.search-bar .icon .pointer[data-v-bd378dbc] {\n cursor: pointer;\n}\n@media (prefers-color-scheme: dark) {\n.search-bar input[data-v-bd378dbc] {\n background: #1c222d;\n border-color: #1c222d;\n}\n.search-bar input[data-v-bd378dbc]::-webkit-input-placeholder {\n color: #667b90;\n}\n.search-bar input[data-v-bd378dbc]::-moz-placeholder {\n color: #667b90;\n}\n.search-bar input[data-v-bd378dbc]:-ms-input-placeholder {\n color: #667b90;\n}\n.search-bar input[data-v-bd378dbc]::-ms-input-placeholder {\n color: #667b90;\n}\n.search-bar input[data-v-bd378dbc]::placeholder {\n color: #667b90;\n}\n.search-bar .icon svg path[data-v-bd378dbc] {\n fill: #667b90;\n}\n}\n",""])},function(e,t,n){"use strict";var r=n(28);n.n(r).a},function(e,t,n){(t=e.exports=n(1)(!1)).push([e.i,"@import url(https://fonts.googleapis.com/css2?family=Nunito:wght@200;300;400;600;700;900&display=swap);",""]),t.push([e.i,".mobile-toolbar[data-v-082794c8] {\n background: white;\n text-align: center;\n display: flex;\n padding: 10px 0;\n position: -webkit-sticky;\n position: sticky;\n top: 0;\n z-index: 6;\n}\n.mobile-toolbar > div[data-v-082794c8] {\n width: 100%;\n flex-grow: 1;\n align-self: center;\n white-space: nowrap;\n}\n.mobile-toolbar .go-back-button[data-v-082794c8] {\n text-align: left;\n flex: 1;\n}\n.mobile-toolbar .go-back-button .icon-back[data-v-082794c8] {\n vertical-align: middle;\n cursor: pointer;\n opacity: 0;\n visibility: hidden;\n}\n.mobile-toolbar .go-back-button .icon-back.is-visible[data-v-082794c8] {\n opacity: 1;\n visibility: visible;\n}\n.mobile-toolbar .directory-name[data-v-082794c8] {\n line-height: 1;\n text-align: center;\n width: 100%;\n vertical-align: middle;\n font-size: 1em;\n color: #1b2539;\n font-weight: 700;\n max-width: 220px;\n overflow: hidden;\n text-overflow: ellipsis;\n display: inline-block;\n}\n.mobile-toolbar .more-actions-button[data-v-082794c8] {\n flex: 1;\n text-align: right;\n position: relative;\n}\n.mobile-toolbar .more-actions-button .tap-area[data-v-082794c8] {\n display: inline-block;\n padding: 10px;\n position: absolute;\n right: -10px;\n top: -20px;\n}\n@media (prefers-color-scheme: dark) {\n.mobile-toolbar[data-v-082794c8] {\n background: #1a1f25;\n}\n.mobile-toolbar .directory-name[data-v-082794c8] {\n color: #B8C4D0;\n}\n.mobile-toolbar .more-actions-button svg path[data-v-082794c8] {\n fill: #B8C4D0;\n}\n}\n",""])},function(e,t,n){"use strict";var r=n(29);n.n(r).a},function(e,t,n){(t=e.exports=n(1)(!1)).push([e.i,"@import url(https://fonts.googleapis.com/css2?family=Nunito:wght@200;300;400;600;700;900&display=swap);",""]),t.push([e.i,".mobile-action-button[data-v-3235a6b1] {\n background: #f6f6f6;\n margin-right: 15px;\n border-radius: 8px;\n padding: 7px 10px;\n cursor: pointer;\n border: none;\n}\n.mobile-action-button .icon[data-v-3235a6b1] {\n margin-right: 8px;\n font-size: 0.875em;\n}\n.mobile-action-button .label[data-v-3235a6b1] {\n font-size: 0.875em;\n font-weight: 700;\n color: #1b2539;\n}\n@media (prefers-color-scheme: dark) {\n.mobile-action-button[data-v-3235a6b1] {\n background: #1c222d;\n}\n.mobile-action-button .icon path[data-v-3235a6b1] {\n fill: #00BC7E;\n}\n.mobile-action-button .label[data-v-3235a6b1] {\n color: #B8C4D0;\n}\n}\n",""])},function(e,t,n){"use strict";var r=n(30);n.n(r).a},function(e,t,n){(t=e.exports=n(1)(!1)).push([e.i,"@import url(https://fonts.googleapis.com/css2?family=Nunito:wght@200;300;400;600;700;900&display=swap);",""]),t.push([e.i,".mobile-action-button[data-v-83d5d066] {\n background: #f6f6f6;\n margin-right: 15px;\n border-radius: 8px;\n padding: 7px 10px;\n cursor: pointer;\n border: none;\n}\n.mobile-action-button .icon[data-v-83d5d066] {\n margin-right: 10px;\n font-size: 0.875em;\n}\n.mobile-action-button .label[data-v-83d5d066] {\n font-size: 0.875em;\n font-weight: 700;\n color: #1b2539;\n}\n@media (prefers-color-scheme: dark) {\n.mobile-action-button[data-v-83d5d066] {\n background: #1c222d;\n}\n.mobile-action-button .icon path[data-v-83d5d066] {\n fill: #00BC7E;\n}\n.mobile-action-button .label[data-v-83d5d066] {\n color: #B8C4D0;\n}\n}\n",""])},function(e,t,n){"use strict";var r=n(31);n.n(r).a},function(e,t,n){(t=e.exports=n(1)(!1)).push([e.i,"@import url(https://fonts.googleapis.com/css2?family=Nunito:wght@200;300;400;600;700;900&display=swap);",""]),t.push([e.i,"#mobile-actions-wrapper[data-v-6059dc5a] {\n background: white;\n position: -webkit-sticky;\n position: sticky;\n top: 35px;\n z-index: 3;\n}\n.mobile-actions[data-v-6059dc5a] {\n padding-top: 10px;\n padding-bottom: 10px;\n white-space: nowrap;\n overflow-x: auto;\n}\n@media (prefers-color-scheme: dark) {\n#mobile-actions-wrapper[data-v-6059dc5a] {\n background: #1a1f25;\n}\n}\n",""])},function(e,t,n){"use strict";var r=n(32);n.n(r).a},function(e,t,n){(t=e.exports=n(1)(!1)).push([e.i,"@import url(https://fonts.googleapis.com/css2?family=Nunito:wght@200;300;400;600;700;900&display=swap);",""]),t.push([e.i,".preview[data-v-5cc538e9] {\n width: 100%;\n display: block;\n margin-bottom: 7px;\n}\n.preview img[data-v-5cc538e9] {\n border-radius: 4px;\n overflow: hidden;\n width: 100%;\n -o-object-fit: cover;\n object-fit: cover;\n}\n.preview audio[data-v-5cc538e9] {\n width: 100%;\n}\n.preview audio[data-v-5cc538e9]::-webkit-media-controls-panel {\n background-color: #f6f6f6;\n}\n.preview audio[data-v-5cc538e9]::-webkit-media-controls-play-button {\n color: #00BC7E;\n}\n.preview video[data-v-5cc538e9] {\n width: 100%;\n height: auto;\n border-radius: 3px;\n}\n",""])},function(e,t,n){"use strict";var r=n(33);n.n(r).a},function(e,t,n){(t=e.exports=n(1)(!1)).push([e.i,"@import url(https://fonts.googleapis.com/css2?family=Nunito:wght@200;300;400;600;700;900&display=swap);",""]),t.push([e.i,".file-headline[data-v-79f97eee] {\n background: #f6f6f6;\n padding: 12px;\n margin-bottom: 20px;\n border-radius: 8px;\n}\n.file-headline .flex[data-v-79f97eee] {\n display: flex;\n align-items: top;\n}\n.file-headline .icon-preview[data-v-79f97eee] {\n height: 42px;\n width: 42px;\n border-radius: 8px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n background: white;\n text-align: center;\n cursor: pointer;\n white-space: nowrap;\n outline: none;\n border: none;\n}\n.file-headline .icon-preview[data-v-79f97eee] svg {\n font-size: 1.375em;\n}\n.file-headline .icon-preview[data-v-79f97eee] svg path {\n fill: #00BC7E;\n}\n.file-headline .icon-preview:hover .icon path[data-v-79f97eee] {\n fill: #00BC7E;\n}\n.file-headline .file-info[data-v-79f97eee] {\n padding-left: 12px;\n width: 100%;\n word-break: break-all;\n}\n.file-headline .file-info .name[data-v-79f97eee] {\n font-size: 0.875em;\n font-weight: 700;\n color: #1b2539;\n}\n.file-headline .file-info .mimetype[data-v-79f97eee] {\n font-size: 0.875em;\n font-weight: 600;\n color: #00BC7E;\n display: block;\n}\n.list-info[data-v-79f97eee] {\n padding-left: 12px;\n}\n.list-info .list-info-item[data-v-79f97eee] {\n display: block;\n padding-top: 20px;\n}\n.list-info .list-info-item[data-v-79f97eee]:first-child {\n padding-top: 0;\n}\n.list-info .list-info-item .action-button[data-v-79f97eee] {\n cursor: pointer;\n}\n.list-info .list-info-item .action-button .icon[data-v-79f97eee] {\n font-size: 0.6875em;\n display: inline-block;\n margin-right: 2px;\n}\n.list-info .list-info-item b[data-v-79f97eee] {\n display: block;\n font-size: 0.8125em;\n color: #00BC7E;\n}\n.list-info .list-info-item span[data-v-79f97eee] {\n display: inline-block;\n font-size: 0.875em;\n font-weight: bold;\n color: #1b2539;\n}\n@media (prefers-color-scheme: dark) {\n.file-headline[data-v-79f97eee] {\n background: #1c222d;\n}\n.file-headline .icon-preview[data-v-79f97eee] {\n background: #1a1f25;\n}\n.file-headline .file-info .name[data-v-79f97eee] {\n color: #B8C4D0;\n}\n.list-info .list-info-item span[data-v-79f97eee] {\n color: #B8C4D0;\n}\n.list-info .list-info-item .action-button .icon[data-v-79f97eee] {\n color: #B8C4D0;\n}\n}\n",""])},function(e,t,n){"use strict";var r=n(34);n.n(r).a},function(e,t,n){(t=e.exports=n(1)(!1)).push([e.i,"@import url(https://fonts.googleapis.com/css2?family=Nunito:wght@200;300;400;600;700;900&display=swap);",""]),t.push([e.i,".file-wrapper[data-v-993e3c4e] {\n position: relative;\n}\n.file-wrapper[data-v-993e3c4e]:hover {\n border-color: transparent;\n}\n.file-wrapper .actions[data-v-993e3c4e] {\n text-align: right;\n width: 50px;\n}\n.file-wrapper .actions .show-actions[data-v-993e3c4e] {\n cursor: pointer;\n padding: 12px 6px 12px;\n}\n.file-wrapper .actions .show-actions .icon-action[data-v-993e3c4e] {\n font-size: 0.875em;\n}\n.file-wrapper .actions .show-actions .icon-action path[data-v-993e3c4e] {\n fill: #00BC7E;\n}\n.file-wrapper .item-name[data-v-993e3c4e] {\n display: block;\n width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.file-wrapper .item-name .item-size[data-v-993e3c4e],\n.file-wrapper .item-name .item-length[data-v-993e3c4e] {\n font-size: 0.75em;\n font-weight: 400;\n color: #667b90;\n display: block;\n}\n.file-wrapper .item-name .name[data-v-993e3c4e] {\n white-space: nowrap;\n}\n.file-wrapper .item-name .name[contenteditable][data-v-993e3c4e] {\n -webkit-user-select: text;\n -moz-user-select: text;\n -ms-user-select: text;\n user-select: text;\n}\n.file-wrapper .item-name .name[contenteditable='true'][data-v-993e3c4e]:hover {\n text-decoration: underline;\n}\n.file-wrapper .item-name .name[data-v-993e3c4e] {\n color: #1b2539;\n font-size: 0.875em;\n font-weight: 700;\n max-height: 40px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.file-wrapper .item-name .name.actived[data-v-993e3c4e] {\n max-height: initial;\n}\n.file-wrapper.selected .file-item[data-v-993e3c4e] {\n background: #f6f6f6;\n}\n.file-wrapper .icon-item[data-v-993e3c4e] {\n text-align: center;\n position: relative;\n flex: 0 0 50px;\n line-height: 0;\n margin-right: 20px;\n}\n.file-wrapper .icon-item .folder-icon[data-v-993e3c4e] {\n font-size: 3.25em;\n}\n.file-wrapper .icon-item .folder-icon path[data-v-993e3c4e] {\n fill: #00BC7E;\n}\n.file-wrapper .icon-item .folder-icon.is-deleted path[data-v-993e3c4e] {\n fill: #EBEBEB;\n}\n.file-wrapper .icon-item .file-icon[data-v-993e3c4e] {\n font-size: 2.8125em;\n}\n.file-wrapper .icon-item .file-icon path[data-v-993e3c4e] {\n fill: #fafafc;\n stroke: #dfe0e8;\n stroke-width: 1;\n}\n.file-wrapper .icon-item .file-icon-text[data-v-993e3c4e] {\n line-height: 1;\n top: 40%;\n font-size: 0.6875em;\n margin: 0 auto;\n position: absolute;\n text-align: center;\n left: 0;\n right: 0;\n color: #00BC7E;\n font-weight: 600;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n max-width: 50px;\n max-height: 20px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.file-wrapper .icon-item .image[data-v-993e3c4e] {\n -o-object-fit: cover;\n object-fit: cover;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n max-width: 100%;\n border-radius: 5px;\n width: 50px;\n height: 50px;\n}\n.file-wrapper .file-item[data-v-993e3c4e] {\n border: 2px dashed transparent;\n width: 100%;\n display: flex;\n align-items: center;\n padding: 7px;\n}\n.file-wrapper .file-item.is-dragenter[data-v-993e3c4e] {\n border: 2px dashed #00BC7E;\n border-radius: 8px;\n}\n.file-wrapper .file-item[data-v-993e3c4e]:hover, .file-wrapper .file-item.is-clicked[data-v-993e3c4e] {\n border-radius: 8px;\n background: #f6f6f6;\n}\n.file-wrapper .file-item:hover .item-name .name[data-v-993e3c4e], .file-wrapper .file-item.is-clicked .item-name .name[data-v-993e3c4e] {\n color: #00BC7E;\n}\n@media (prefers-color-scheme: dark) {\n.file-wrapper .icon-item .file-icon path[data-v-993e3c4e] {\n fill: #1c222d;\n stroke: #2F3C54;\n}\n.file-wrapper .file-item[data-v-993e3c4e]:hover, .file-wrapper .file-item.is-clicked[data-v-993e3c4e] {\n background: #1c222d;\n}\n.file-wrapper .file-item:hover .file-icon path[data-v-993e3c4e], .file-wrapper .file-item.is-clicked .file-icon path[data-v-993e3c4e] {\n fill: #1a1f25;\n}\n.file-wrapper .item-name .name[data-v-993e3c4e] {\n color: #B8C4D0;\n}\n}\n",""])},function(e,t,n){"use strict";var r=n(35);n.n(r).a},function(e,t,n){(t=e.exports=n(1)(!1)).push([e.i,"@import url(https://fonts.googleapis.com/css2?family=Nunito:wght@200;300;400;600;700;900&display=swap);",""]),t.push([e.i,".show-actions[data-v-b2b7ee3c] {\n cursor: pointer;\n padding: 4px 26px;\n}\n.show-actions .icon-action[data-v-b2b7ee3c] {\n font-size: 0.75em;\n}\n.show-actions path[data-v-b2b7ee3c] {\n fill: #00BC7E;\n}\n.file-wrapper[data-v-b2b7ee3c] {\n position: relative;\n text-align: center;\n display: inline-block;\n vertical-align: text-top;\n width: 100%;\n}\n.file-wrapper .item-name[data-v-b2b7ee3c] {\n display: block;\n padding-left: 10px;\n padding-right: 10px;\n line-height: 20px;\n}\n.file-wrapper .item-name .item-size[data-v-b2b7ee3c],\n.file-wrapper .item-name .item-length[data-v-b2b7ee3c] {\n font-size: 0.75em;\n font-weight: 400;\n color: #667b90;\n display: block;\n}\n.file-wrapper .item-name .name[data-v-b2b7ee3c] {\n display: block;\n}\n.file-wrapper .item-name .name[contenteditable][data-v-b2b7ee3c] {\n -webkit-user-select: text;\n -moz-user-select: text;\n -ms-user-select: text;\n user-select: text;\n}\n.file-wrapper .item-name .name[contenteditable='true'][data-v-b2b7ee3c]:hover {\n text-decoration: underline;\n}\n.file-wrapper .item-name .name[data-v-b2b7ee3c] {\n color: #1b2539;\n font-size: 0.875em;\n font-weight: 700;\n max-height: 40px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.file-wrapper .item-name .name.actived[data-v-b2b7ee3c] {\n max-height: initial;\n}\n.file-wrapper.selected .file-item[data-v-b2b7ee3c] {\n background: #f6f6f6;\n}\n.file-wrapper .file-item[data-v-b2b7ee3c] {\n border: 2px dashed transparent;\n width: 165px;\n margin: 0 auto;\n cursor: pointer;\n position: relative;\n padding: 15px 0;\n}\n.file-wrapper .file-item.is-dragenter[data-v-b2b7ee3c] {\n border: 2px dashed #00BC7E;\n border-radius: 8px;\n}\n.file-wrapper .file-item[data-v-b2b7ee3c]:hover, .file-wrapper .file-item.is-clicked[data-v-b2b7ee3c] {\n border-radius: 8px;\n background: #f6f6f6;\n}\n.file-wrapper .file-item:hover .item-name .name[data-v-b2b7ee3c], .file-wrapper .file-item.is-clicked .item-name .name[data-v-b2b7ee3c] {\n color: #00BC7E;\n}\n.file-wrapper .icon-item[data-v-b2b7ee3c] {\n text-align: center;\n position: relative;\n height: 110px;\n margin-bottom: 20px;\n display: flex;\n align-items: center;\n}\n.file-wrapper .icon-item .file-link[data-v-b2b7ee3c] {\n display: block;\n}\n.file-wrapper .icon-item .file-icon[data-v-b2b7ee3c] {\n font-size: 6.25em;\n margin: 0 auto;\n}\n.file-wrapper .icon-item .file-icon path[data-v-b2b7ee3c] {\n fill: #fafafc;\n stroke: #dfe0e8;\n stroke-width: 1;\n}\n.file-wrapper .icon-item .file-icon-text[data-v-b2b7ee3c] {\n margin: 5px auto 0;\n position: absolute;\n text-align: center;\n left: 0;\n right: 0;\n color: #00BC7E;\n font-weight: 600;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n max-width: 65px;\n max-height: 20px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.file-wrapper .icon-item .image[data-v-b2b7ee3c] {\n max-width: 95%;\n -o-object-fit: cover;\n object-fit: cover;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n height: 110px;\n border-radius: 5px;\n margin: 0 auto;\n}\n.file-wrapper .icon-item .folder-icon[data-v-b2b7ee3c] {\n align-items: flex-end;\n font-size: 5em;\n margin: 0 auto;\n}\n.file-wrapper .icon-item .folder-icon path[data-v-b2b7ee3c] {\n fill: #00BC7E;\n}\n.file-wrapper .icon-item .folder-icon.is-deleted path[data-v-b2b7ee3c] {\n fill: #EBEBEB;\n}\n@media (prefers-color-scheme: dark) {\n.file-wrapper .icon-item .file-icon path[data-v-b2b7ee3c] {\n fill: #1c222d;\n stroke: #2F3C54;\n}\n.file-wrapper .file-item[data-v-b2b7ee3c]:hover, .file-wrapper .file-item.is-clicked[data-v-b2b7ee3c] {\n background: #1c222d;\n}\n.file-wrapper .file-item:hover .file-icon path[data-v-b2b7ee3c], .file-wrapper .file-item.is-clicked .file-icon path[data-v-b2b7ee3c] {\n fill: #1a1f25;\n}\n.file-wrapper .item-name .name[data-v-b2b7ee3c] {\n color: #B8C4D0;\n}\n}\n",""])},function(e,t,n){"use strict";var r=n(36);n.n(r).a},function(e,t,n){(t=e.exports=n(1)(!1)).push([e.i,"@import url(https://fonts.googleapis.com/css2?family=Nunito:wght@200;300;400;600;700;900&display=swap);",""]),t.push([e.i,".empty-message[data-v-2910d21b] {\n text-align: center;\n display: flex;\n align-items: center;\n height: 100%;\n}\n.empty-message .message[data-v-2910d21b] {\n margin: 0 auto;\n}\n.empty-message .message p[data-v-2910d21b] {\n margin-top: 10px;\n max-width: 130px;\n font-size: 0.875em;\n font-weight: 500;\n color: #667b90;\n}\n.empty-message .message .icon[data-v-2910d21b] {\n font-size: 2.25em;\n color: #1b2539;\n}\n.empty-message .message .icon path[data-v-2910d21b] {\n color: #1b2539;\n}\n",""])},function(e,t,n){"use strict";var r=n(37);n.n(r).a},function(e,t,n){(t=e.exports=n(1)(!1)).push([e.i,"@import url(https://fonts.googleapis.com/css2?family=Nunito:wght@200;300;400;600;700;900&display=swap);",""]),t.push([e.i,".button-base[data-v-59047065] {\n font-size: 1em;\n font-weight: 700;\n cursor: pointer;\n transition: 0.15s all ease;\n border-radius: 8px;\n border: 0;\n padding: 10px 28px;\n display: inline-block;\n}\n.button-base[data-v-59047065]:active {\n transform: scale(0.95);\n}\n.button-base.theme[data-v-59047065] {\n color: #00BC7E;\n background: rgba(0, 188, 126, 0.1);\n}\n.button-base.secondary[data-v-59047065] {\n color: #1b2539;\n background: #f6f6f6;\n}\n",""])},function(e,t,n){"use strict";var r=n(38);n.n(r).a},function(e,t,n){(t=e.exports=n(1)(!1)).push([e.i,"@import url(https://fonts.googleapis.com/css2?family=Nunito:wght@200;300;400;600;700;900&display=swap);",""]),t.push([e.i,".empty-page[data-v-68c91667] {\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n margin-top: 85px;\n display: flex;\n align-items: center;\n}\n.empty-page .empty-state[data-v-68c91667] {\n margin: 0 auto;\n padding-left: 15px;\n padding-right: 15px;\n}\n.text-content[data-v-68c91667] {\n text-align: center;\n margin: 30px 0;\n}\n.text-content .title[data-v-68c91667] {\n font-size: 1.5em;\n color: #1b2539;\n font-weight: 700;\n margin: 0;\n}\n.text-content .description[data-v-68c91667] {\n font-size: 0.9375em;\n color: #667b90;\n margin-bottom: 20px;\n display: block;\n}\n@media (prefers-color-scheme: dark) {\n.text-content .title[data-v-68c91667] {\n color: #B8C4D0;\n}\n.text-content .description[data-v-68c91667] {\n color: #667b90;\n}\n}\n",""])},function(e,t,n){"use strict";var r=n(39);n.n(r).a},function(e,t,n){(t=e.exports=n(1)(!1)).push([e.i,"@import url(https://fonts.googleapis.com/css2?family=Nunito:wght@200;300;400;600;700;900&display=swap);",""]),t.push([e.i,".button-upload[data-v-2baa6a14] {\n display: block;\n text-align: center;\n margin: 20px 0;\n}\n.mobile-search[data-v-2baa6a14] {\n margin-bottom: 10px;\n margin-top: 10px;\n}\n.file-content[data-v-2baa6a14] {\n display: flex;\n flex-wrap: nowrap;\n}\n.file-content.is-dragging[data-v-2baa6a14] {\n transform: scale(0.99);\n}\n.files-container[data-v-2baa6a14] {\n overflow-y: auto;\n flex: 0 0 100%;\n transition: 150ms all ease;\n position: relative;\n}\n.files-container.is-fileinfo-visible[data-v-2baa6a14] {\n flex: 0 1 100%;\n}\n.files-container .file-list.grid[data-v-2baa6a14] {\n display: grid;\n grid-template-columns: repeat(auto-fill, 180px);\n justify-content: space-evenly;\n}\n.file-info-container[data-v-2baa6a14] {\n flex: 0 0 300px;\n padding-left: 20px;\n overflow: auto;\n}\n.file-move[data-v-2baa6a14] {\n transition: transform 0.6s;\n}\n.file-enter-active[data-v-2baa6a14] {\n transition: all 300ms ease;\n}\n.file-leave-active[data-v-2baa6a14] {\n transition: all 0ms;\n}\n.file-enter[data-v-2baa6a14], .file-leave-to[data-v-2baa6a14] {\n opacity: 0;\n transform: translateX(-20px);\n}\n.file-leave-active[data-v-2baa6a14] {\n position: absolute;\n}\n",""])},function(e,t,n){"use strict";var r=n(40);n.n(r).a},function(e,t,n){(t=e.exports=n(1)(!1)).push([e.i,"@import url(https://fonts.googleapis.com/css2?family=Nunito:wght@200;300;400;600;700;900&display=swap);",""]),t.push([e.i,".toolbar-wrapper[data-v-77e69b6a] {\n padding-top: 15px;\n padding-bottom: 15px;\n display: flex;\n position: relative;\n z-index: 2;\n}\n.toolbar-wrapper > div[data-v-77e69b6a] {\n width: 100%;\n flex-grow: 1;\n align-self: center;\n white-space: nowrap;\n}\n.directory-name[data-v-77e69b6a] {\n vertical-align: middle;\n font-size: 1.0625em;\n color: #1b2539;\n font-weight: 700;\n max-width: 220px;\n overflow: hidden;\n text-overflow: ellipsis;\n display: inline-block;\n}\n.icon-back[data-v-77e69b6a] {\n vertical-align: middle;\n cursor: pointer;\n margin-right: 12px;\n}\n.toolbar-go-back[data-v-77e69b6a] {\n cursor: pointer;\n}\n.toolbar-go-back .back-directory-title[data-v-77e69b6a] {\n line-height: 1;\n font-weight: 700;\n overflow: hidden;\n text-overflow: ellipsis;\n display: inline-block;\n vertical-align: middle;\n color: #1b2539;\n}\n.toolbar-position[data-v-77e69b6a] {\n text-align: center;\n}\n.toolbar-position span[data-v-77e69b6a] {\n font-size: 1.0625em;\n font-weight: 600;\n}\n.toolbar-tools[data-v-77e69b6a] {\n text-align: right;\n}\n.toolbar-tools .toolbar-button-wrapper[data-v-77e69b6a] {\n margin-left: 75px;\n display: inline-block;\n vertical-align: middle;\n}\n.toolbar-tools .toolbar-button-wrapper[data-v-77e69b6a]:first-child {\n margin-left: 0 !important;\n}\n.toolbar-tools button[data-v-77e69b6a] {\n margin-left: 20px;\n}\n.toolbar-tools button[data-v-77e69b6a]:first-child {\n margin-left: 0;\n}\n@media (prefers-color-scheme: dark) {\n.toolbar .directory-name[data-v-77e69b6a] {\n color: #B8C4D0;\n}\n.toolbar-go-back .back-directory-title[data-v-77e69b6a] {\n color: #B8C4D0;\n}\n}\n",""])},function(e,t,n){"use strict";var r=n(41);n.n(r).a},function(e,t,n){(t=e.exports=n(1)(!1)).push([e.i,"@import url(https://fonts.googleapis.com/css2?family=Nunito:wght@200;300;400;600;700;900&display=swap);",""]),t.push([e.i,".contextmenu[data-v-798e7586] {\n min-width: 190px;\n position: absolute;\n z-index: 99;\n box-shadow: 0 7px 25px 1px rgba(0, 0, 0, 0.12);\n background: white;\n border-radius: 8px;\n overflow: hidden;\n}\n.contextmenu.showed[data-v-798e7586] {\n display: block;\n}\n.contextmenu .menu-options[data-v-798e7586] {\n list-style: none;\n width: 100%;\n margin: 0;\n padding: 0;\n}\n.contextmenu .menu-options .menu-option[data-v-798e7586] {\n white-space: nowrap;\n font-weight: 700;\n font-size: 0.9375em;\n padding: 15px 30px;\n cursor: pointer;\n width: 100%;\n color: #1b2539;\n}\n.contextmenu .menu-options .menu-option[data-v-798e7586]:hover {\n background: #f6f6f6;\n color: #00BC7E;\n}\n@media (prefers-color-scheme: dark) {\n.contextmenu[data-v-798e7586] {\n background: #1c222d;\n}\n.contextmenu .menu-options .menu-option[data-v-798e7586] {\n color: #B8C4D0;\n}\n.contextmenu .menu-options .menu-option[data-v-798e7586]:hover {\n background: #1a1f25;\n}\n}\n",""])},function(e,t,n){"use strict";var r,i,o;"undefined"!=typeof window&&window,i=[n(64)],void 0===(o="function"==typeof(r=function(e){var t=function(){var t,n={},r=[];function i(e){e||(e=document.documentElement);var t=window.getComputedStyle(e,null).fontSize;return parseFloat(t)||16}function o(e,t){var n=t.split(/\d/),r=n[n.length-1];switch(t=parseFloat(t),r){case"px":return t;case"em":return t*i(e);case"rem":return t*i();case"vw":return t*document.documentElement.clientWidth/100;case"vh":return t*document.documentElement.clientHeight/100;case"vmin":case"vmax":var o=document.documentElement.clientWidth/100,a=document.documentElement.clientHeight/100;return t*(0,Math["vmin"===r?"min":"max"])(o,a);default:return t}}function a(e,t){var r,i,a,s,l,c,u,f;this.element=e;var p=["min-width","min-height","max-width","max-height"];this.call=function(){for(r in a=function(e){if(!e.getBoundingClientRect)return{width:e.offsetWidth,height:e.offsetHeight};var t=e.getBoundingClientRect();return{width:Math.round(t.width),height:Math.round(t.height)}}(this.element),c={},n[t])n[t].hasOwnProperty(r)&&(i=n[t][r],s=o(this.element,i.value),l="width"===i.property?a.width:a.height,f=i.mode+"-"+i.property,u="","min"===i.mode&&l>=s&&(u+=i.value),"max"===i.mode&&l<=s&&(u+=i.value),c[f]||(c[f]=""),u&&-1===(" "+c[f]+" ").indexOf(" "+u+" ")&&(c[f]+=" "+u));for(var e in p)p.hasOwnProperty(e)&&(c[p[e]]?this.element.setAttribute(p[e],c[p[e]].substr(1)):this.element.removeAttribute(p[e]))}}function s(t,n){t.elementQueriesSetupInformation||(t.elementQueriesSetupInformation=new a(t,n)),t.elementQueriesSensor||(t.elementQueriesSensor=new e(t,(function(){t.elementQueriesSetupInformation.call()})))}function l(e,i,o,a){if(void 0===n[e]){n[e]=[];var s=r.length;t.innerHTML+="\n"+e+" {animation: 0.1s element-queries;}",t.innerHTML+="\n"+e+" > .resize-sensor {min-width: "+s+"px;}",r.push(e)}n[e].push({mode:i,property:o,value:a})}function c(e){var t;if(document.querySelectorAll&&(t=e?e.querySelectorAll.bind(e):document.querySelectorAll.bind(document)),t||"undefined"==typeof $$||(t=$$),t||"undefined"==typeof jQuery||(t=jQuery),!t)throw"No document.querySelectorAll, jQuery or Mootools's $$ found.";return t}function u(t){var n=[],r=[],i=[],o=0,a=-1,s=[];for(var l in t.children)if(t.children.hasOwnProperty(l)&&t.children[l].tagName&&"img"===t.children[l].tagName.toLowerCase()){n.push(t.children[l]);var c=t.children[l].getAttribute("min-width")||t.children[l].getAttribute("data-min-width"),u=t.children[l].getAttribute("data-src")||t.children[l].getAttribute("url");i.push(u);var f={minWidth:c};r.push(f),c?t.children[l].style.display="none":(o=n.length-1,t.children[l].style.display="block")}function p(){var e,l=!1;for(e in n)n.hasOwnProperty(e)&&r[e].minWidth&&t.offsetWidth>r[e].minWidth&&(l=e);if(l||(l=o),a!==l)if(s[l])n[a].style.display="none",n[l].style.display="block",a=l;else{var c=new Image;c.onload=function(){n[l].src=i[l],n[a].style.display="none",n[l].style.display="block",s[l]=!0,a=l},c.src=i[l]}else n[l].src=i[l]}a=o,t.resizeSensorInstance=new e(t,p),p()}var f=/,?[\s\t]*([^,\n]*?)((?:\[[\s\t]*?(?:min|max)-(?:width|height)[\s\t]*?[~$\^]?=[\s\t]*?"[^"]*?"[\s\t]*?])+)([^,\n\s\{]*)/gim,p=/\[[\s\t]*?(min|max)-(width|height)[\s\t]*?[~$\^]?=[\s\t]*?"([^"]*?)"[\s\t]*?]/gim;function d(e){var t,n,r,i;for(e=e.replace(/'/g,'"');null!==(t=f.exec(e));)for(n=t[1]+t[3],r=t[2];null!==(i=p.exec(r));)l(n,i[1],i[2],i[3])}function v(e){var t="";if(e)if("string"==typeof e)-1===(e=e.toLowerCase()).indexOf("min-width")&&-1===e.indexOf("max-width")||d(e);else for(var n=0,r=e.length;n img, [data-responsive-image] {overflow: hidden; padding: 0; } [responsive-image] > img, [data-responsive-image] > img {width: 100%;}",t.innerHTML+="\n@keyframes element-queries { 0% { visibility: inherit; } }",document.getElementsByTagName("head")[0].appendChild(t),m=!0);for(var i=0,o=document.styleSheets.length;i0;)t[n]=arguments[n+1];var r=this.$i18n;return r._t.apply(r,[e,r.locale,r._getMessages(),this].concat(t))},t.prototype.$tc=function(e,t){for(var n=[],r=arguments.length-2;r-- >0;)n[r]=arguments[r+2];var i=this.$i18n;return i._tc.apply(i,[e,i.locale,i._getMessages(),this,t].concat(n))},t.prototype.$te=function(e,t){var n=this.$i18n;return n._te(e,n.locale,n._getMessages(),t)},t.prototype.$d=function(e){for(var t,n=[],r=arguments.length-1;r-- >0;)n[r]=arguments[r+1];return(t=this.$i18n).d.apply(t,[e].concat(n))},t.prototype.$n=function(e){for(var t,n=[],r=arguments.length-1;r-- >0;)n[r]=arguments[r+1];return(t=this.$i18n).n.apply(t,[e].concat(n))},x.mixin(g),x.directive("t",{bind:O,update:$,unbind:C}),x.component(b.name,b),x.component(k.name,k),x.config.optionMergeStrategies.i18n=function(e,t){return void 0===t?e:t}}var I=function(){this._caches=Object.create(null)};I.prototype.interpolate=function(e,t){if(!t)return[e];var n=this._caches[e];return n||(n=function(e){var t=[],n=0,r="";for(;n0)f--,u=4,p[0]();else{if(f=0,void 0===n)return!1;if(!1===(n=L(n)))return!1;p[1]()}};null!==u;)if(c++,"\\"!==(t=e[c])||!d()){if(i=z(t),8===(o=(s=F[u])[i]||s.else||8))return;if(u=o[0],(a=p[o[1]])&&(r=void 0===(r=o[2])?t:r,!1===a()))return;if(7===u)return l}}(e))&&(this._cache[e]=t),t||[]},M.prototype.getPathValue=function(e,t){if(!s(e))return null;var n=this.parsePath(t);if(0===n.length)return null;for(var r=n.length,i=e,o=0;o/,B=/(?:@(?:\.[a-z]+)?:(?:[\w\-_|.]+|\([\w\-_|.]+\)))/g,V=/^@(?:\.([a-z]+))?:/,U=/[()]/g,H={upper:function(e){return e.toLocaleUpperCase()},lower:function(e){return e.toLocaleLowerCase()},capitalize:function(e){return""+e.charAt(0).toLocaleUpperCase()+e.substr(1)}},q=new I,W=function(e){var t=this;void 0===e&&(e={}),!x&&"undefined"!=typeof window&&window.Vue&&j(window.Vue);var n=e.locale||"en-US",r=e.fallbackLocale||"en-US",i=e.messages||{},o=e.dateTimeFormats||{},a=e.numberFormats||{};this._vm=null,this._formatter=e.formatter||q,this._modifiers=e.modifiers||{},this._missing=e.missing||null,this._root=e.root||null,this._sync=void 0===e.sync||!!e.sync,this._fallbackRoot=void 0===e.fallbackRoot||!!e.fallbackRoot,this._formatFallbackMessages=void 0!==e.formatFallbackMessages&&!!e.formatFallbackMessages,this._silentTranslationWarn=void 0!==e.silentTranslationWarn&&e.silentTranslationWarn,this._silentFallbackWarn=void 0!==e.silentFallbackWarn&&!!e.silentFallbackWarn,this._dateTimeFormatters={},this._numberFormatters={},this._path=new M,this._dataListeners=[],this._preserveDirectiveContent=void 0!==e.preserveDirectiveContent&&!!e.preserveDirectiveContent,this.pluralizationRules=e.pluralizationRules||{},this._warnHtmlInMessage=e.warnHtmlInMessage||"off",this._postTranslation=e.postTranslation||null,this._exist=function(e,n){return!(!e||!n)&&(!u(t._path.getPathValue(e,n))||!!e[n])},"warn"!==this._warnHtmlInMessage&&"error"!==this._warnHtmlInMessage||Object.keys(i).forEach((function(e){t._checkLocaleMessage(e,t._warnHtmlInMessage,i[e])})),this._initVM({locale:n,fallbackLocale:r,messages:i,dateTimeFormats:o,numberFormats:a})},Z={vm:{configurable:!0},messages:{configurable:!0},dateTimeFormats:{configurable:!0},numberFormats:{configurable:!0},availableLocales:{configurable:!0},locale:{configurable:!0},fallbackLocale:{configurable:!0},formatFallbackMessages:{configurable:!0},missing:{configurable:!0},formatter:{configurable:!0},silentTranslationWarn:{configurable:!0},silentFallbackWarn:{configurable:!0},preserveDirectiveContent:{configurable:!0},warnHtmlInMessage:{configurable:!0},postTranslation:{configurable:!0}};W.prototype._checkLocaleMessage=function(e,t,n){var r=function(e,t,n,i){if(c(n))Object.keys(n).forEach((function(o){var a=n[o];c(a)?(i.push(o),i.push("."),r(e,t,a,i),i.pop(),i.pop()):(i.push(o),r(e,t,a,i),i.pop())}));else if(Array.isArray(n))n.forEach((function(n,o){c(n)?(i.push("["+o+"]"),i.push("."),r(e,t,n,i),i.pop(),i.pop()):(i.push("["+o+"]"),r(e,t,n,i),i.pop())}));else if("string"==typeof n){if(R.test(n)){var o="Detected HTML in message '"+n+"' of keypath '"+i.join("")+"' at '"+t+"'. Consider component interpolation with '' to avoid XSS. See https://bit.ly/2ZqJzkp";"warn"===e?a(o):"error"===e&&function(e,t){"undefined"!=typeof console&&(console.error("[vue-i18n] "+e),t&&console.error(t.stack))}(o)}}};r(t,e,n,[])},W.prototype._initVM=function(e){var t=x.config.silent;x.config.silent=!0,this._vm=new x({data:e}),x.config.silent=t},W.prototype.destroyVM=function(){this._vm.$destroy()},W.prototype.subscribeDataChanging=function(e){this._dataListeners.push(e)},W.prototype.unsubscribeDataChanging=function(e){!function(e,t){if(e.length){var n=e.indexOf(t);if(n>-1)e.splice(n,1)}}(this._dataListeners,e)},W.prototype.watchI18nData=function(){var e=this;return this._vm.$watch("$data",(function(){for(var t=e._dataListeners.length;t--;)x.nextTick((function(){e._dataListeners[t]&&e._dataListeners[t].$forceUpdate()}))}),{deep:!0})},W.prototype.watchLocale=function(){if(!this._sync||!this._root)return null;var e=this._vm;return this._root.$i18n.vm.$watch("locale",(function(t){e.$set(e,"locale",t),e.$forceUpdate()}),{immediate:!0})},Z.vm.get=function(){return this._vm},Z.messages.get=function(){return p(this._getMessages())},Z.dateTimeFormats.get=function(){return p(this._getDateTimeFormats())},Z.numberFormats.get=function(){return p(this._getNumberFormats())},Z.availableLocales.get=function(){return Object.keys(this.messages).sort()},Z.locale.get=function(){return this._vm.locale},Z.locale.set=function(e){this._vm.$set(this._vm,"locale",e)},Z.fallbackLocale.get=function(){return this._vm.fallbackLocale},Z.fallbackLocale.set=function(e){this._vm.$set(this._vm,"fallbackLocale",e)},Z.formatFallbackMessages.get=function(){return this._formatFallbackMessages},Z.formatFallbackMessages.set=function(e){this._formatFallbackMessages=e},Z.missing.get=function(){return this._missing},Z.missing.set=function(e){this._missing=e},Z.formatter.get=function(){return this._formatter},Z.formatter.set=function(e){this._formatter=e},Z.silentTranslationWarn.get=function(){return this._silentTranslationWarn},Z.silentTranslationWarn.set=function(e){this._silentTranslationWarn=e},Z.silentFallbackWarn.get=function(){return this._silentFallbackWarn},Z.silentFallbackWarn.set=function(e){this._silentFallbackWarn=e},Z.preserveDirectiveContent.get=function(){return this._preserveDirectiveContent},Z.preserveDirectiveContent.set=function(e){this._preserveDirectiveContent=e},Z.warnHtmlInMessage.get=function(){return this._warnHtmlInMessage},Z.warnHtmlInMessage.set=function(e){var t=this,n=this._warnHtmlInMessage;if(this._warnHtmlInMessage=e,n!==e&&("warn"===e||"error"===e)){var r=this._getMessages();Object.keys(r).forEach((function(e){t._checkLocaleMessage(e,t._warnHtmlInMessage,r[e])}))}},Z.postTranslation.get=function(){return this._postTranslation},Z.postTranslation.set=function(e){this._postTranslation=e},W.prototype._getMessages=function(){return this._vm.messages},W.prototype._getDateTimeFormats=function(){return this._vm.dateTimeFormats},W.prototype._getNumberFormats=function(){return this._vm.numberFormats},W.prototype._warnDefault=function(e,t,n,r,i,o){if(!u(n))return n;if(this._missing){var a=this._missing.apply(null,[e,t,r,i]);if("string"==typeof a)return a}else 0;if(this._formatFallbackMessages){var s=f.apply(void 0,i);return this._render(t,o,s.params,t)}return t},W.prototype._isFallbackRoot=function(e){return!e&&!u(this._root)&&this._fallbackRoot},W.prototype._isSilentFallbackWarn=function(e){return this._silentFallbackWarn instanceof RegExp?this._silentFallbackWarn.test(e):this._silentFallbackWarn},W.prototype._isSilentFallback=function(e,t){return this._isSilentFallbackWarn(t)&&(this._isFallbackRoot()||e!==this.fallbackLocale)},W.prototype._isSilentTranslationWarn=function(e){return this._silentTranslationWarn instanceof RegExp?this._silentTranslationWarn.test(e):this._silentTranslationWarn},W.prototype._interpolate=function(e,t,n,r,i,o,a){if(!t)return null;var s,l=this._path.getPathValue(t,n);if(Array.isArray(l)||c(l))return l;if(u(l)){if(!c(t))return null;if("string"!=typeof(s=t[n]))return null}else{if("string"!=typeof l)return null;s=l}return(s.indexOf("@:")>=0||s.indexOf("@.")>=0)&&(s=this._link(e,t,s,r,"raw",o,a)),this._render(s,i,o,n)},W.prototype._link=function(e,t,n,r,i,o,a){var s=n,l=s.match(B);for(var c in l)if(l.hasOwnProperty(c)){var u=l[c],f=u.match(V),p=f[0],d=f[1],v=u.replace(p,"").replace(U,"");if(a.includes(v))return s;a.push(v);var m=this._interpolate(e,t,v,r,"raw"===i?"string":i,"raw"===i?void 0:o,a);if(this._isFallbackRoot(m)){if(!this._root)throw Error("unexpected error");var h=this._root.$i18n;m=h._translate(h._getMessages(),h.locale,h.fallbackLocale,v,r,i,o)}m=this._warnDefault(e,v,m,r,Array.isArray(o)?o:[o],i),this._modifiers.hasOwnProperty(d)?m=this._modifiers[d](m):H.hasOwnProperty(d)&&(m=H[d](m)),a.pop(),s=m?s.replace(u,m):s}return s},W.prototype._render=function(e,t,n,r){var i=this._formatter.interpolate(e,n,r);return i||(i=q.interpolate(e,n,r)),"string"===t&&"string"!=typeof i?i.join(""):i},W.prototype._translate=function(e,t,n,r,i,o,a){var s=this._interpolate(t,e[t],r,i,o,a,[r]);return u(s)&&u(s=this._interpolate(n,e[n],r,i,o,a,[r]))?null:s},W.prototype._t=function(e,t,n,r){for(var i,o=[],a=arguments.length-4;a-- >0;)o[a]=arguments[a+4];if(!e)return"";var s=f.apply(void 0,o),l=s.locale||t,c=this._translate(n,l,this.fallbackLocale,e,r,"string",s.params);if(this._isFallbackRoot(c)){if(!this._root)throw Error("unexpected error");return(i=this._root).$t.apply(i,[e].concat(o))}return c=this._warnDefault(l,e,c,r,o,"string"),this._postTranslation&&(c=this._postTranslation(c)),c},W.prototype.t=function(e){for(var t,n=[],r=arguments.length-1;r-- >0;)n[r]=arguments[r+1];return(t=this)._t.apply(t,[e,this.locale,this._getMessages(),null].concat(n))},W.prototype._i=function(e,t,n,r,i){var o=this._translate(n,t,this.fallbackLocale,e,r,"raw",i);if(this._isFallbackRoot(o)){if(!this._root)throw Error("unexpected error");return this._root.$i18n.i(e,t,i)}return this._warnDefault(t,e,o,r,[i],"raw")},W.prototype.i=function(e,t,n){return e?("string"!=typeof t&&(t=this.locale),this._i(e,t,this._getMessages(),null,n)):""},W.prototype._tc=function(e,t,n,r,i){for(var o,a=[],s=arguments.length-5;s-- >0;)a[s]=arguments[s+5];if(!e)return"";void 0===i&&(i=1);var l={count:i,n:i},c=f.apply(void 0,a);return c.params=Object.assign(l,c.params),a=null===c.locale?[c.params]:[c.locale,c.params],this.fetchChoice((o=this)._t.apply(o,[e,t,n,r].concat(a)),i)},W.prototype.fetchChoice=function(e,t){if(!e&&"string"!=typeof e)return null;var n=e.split("|");return n[t=this.getChoiceIndex(t,n.length)]?n[t].trim():e},W.prototype.getChoiceIndex=function(e,t){var n,r;return this.locale in this.pluralizationRules?this.pluralizationRules[this.locale].apply(this,[e,t]):(n=e,r=t,n=Math.abs(n),2===r?n?n>1?1:0:1:n?Math.min(n,2):0)},W.prototype.tc=function(e,t){for(var n,r=[],i=arguments.length-2;i-- >0;)r[i]=arguments[i+2];return(n=this)._tc.apply(n,[e,this.locale,this._getMessages(),null,t].concat(r))},W.prototype._te=function(e,t,n){for(var r=[],i=arguments.length-3;i-- >0;)r[i]=arguments[i+3];var o=f.apply(void 0,r).locale||t;return this._exist(n[o],e)},W.prototype.te=function(e,t){return this._te(e,this.locale,this._getMessages(),t)},W.prototype.getLocaleMessage=function(e){return p(this._vm.messages[e]||{})},W.prototype.setLocaleMessage=function(e,t){"warn"!==this._warnHtmlInMessage&&"error"!==this._warnHtmlInMessage||this._checkLocaleMessage(e,this._warnHtmlInMessage,t),this._vm.$set(this._vm.messages,e,t)},W.prototype.mergeLocaleMessage=function(e,t){"warn"!==this._warnHtmlInMessage&&"error"!==this._warnHtmlInMessage||this._checkLocaleMessage(e,this._warnHtmlInMessage,t),this._vm.$set(this._vm.messages,e,m({},this._vm.messages[e]||{},t))},W.prototype.getDateTimeFormat=function(e){return p(this._vm.dateTimeFormats[e]||{})},W.prototype.setDateTimeFormat=function(e,t){this._vm.$set(this._vm.dateTimeFormats,e,t)},W.prototype.mergeDateTimeFormat=function(e,t){this._vm.$set(this._vm.dateTimeFormats,e,m(this._vm.dateTimeFormats[e]||{},t))},W.prototype._localizeDateTime=function(e,t,n,r,i){var o=t,a=r[o];if((u(a)||u(a[i]))&&(a=r[o=n]),u(a)||u(a[i]))return null;var s=a[i],l=o+"__"+i,c=this._dateTimeFormatters[l];return c||(c=this._dateTimeFormatters[l]=new Intl.DateTimeFormat(o,s)),c.format(e)},W.prototype._d=function(e,t,n){if(!n)return new Intl.DateTimeFormat(t).format(e);var r=this._localizeDateTime(e,t,this.fallbackLocale,this._getDateTimeFormats(),n);if(this._isFallbackRoot(r)){if(!this._root)throw Error("unexpected error");return this._root.$i18n.d(e,n,t)}return r||""},W.prototype.d=function(e){for(var t=[],n=arguments.length-1;n-- >0;)t[n]=arguments[n+1];var r=this.locale,i=null;return 1===t.length?"string"==typeof t[0]?i=t[0]:s(t[0])&&(t[0].locale&&(r=t[0].locale),t[0].key&&(i=t[0].key)):2===t.length&&("string"==typeof t[0]&&(i=t[0]),"string"==typeof t[1]&&(r=t[1])),this._d(e,r,i)},W.prototype.getNumberFormat=function(e){return p(this._vm.numberFormats[e]||{})},W.prototype.setNumberFormat=function(e,t){this._vm.$set(this._vm.numberFormats,e,t),this._clearNumberFormat(e,t)},W.prototype.mergeNumberFormat=function(e,t){this._vm.$set(this._vm.numberFormats,e,m(this._vm.numberFormats[e]||{},t)),this._clearNumberFormat(e,t)},W.prototype._clearNumberFormat=function(e,t){for(var n in t){var r=e+"__"+n;this._numberFormatters.hasOwnProperty(r)&&delete this._numberFormatters[r]}},W.prototype._getNumberFormatter=function(e,t,n,r,i,o){var a=t,s=r[a];if((u(s)||u(s[i]))&&(s=r[a=n]),u(s)||u(s[i]))return null;var l,c=s[i];if(o)l=new Intl.NumberFormat(a,Object.assign({},c,o));else{var f=a+"__"+i;(l=this._numberFormatters[f])||(l=this._numberFormatters[f]=new Intl.NumberFormat(a,c))}return l},W.prototype._n=function(e,t,n,r){if(!W.availabilities.numberFormat)return"";if(!n)return(r?new Intl.NumberFormat(t,r):new Intl.NumberFormat(t)).format(e);var i=this._getNumberFormatter(e,t,this.fallbackLocale,this._getNumberFormats(),n,r),o=i&&i.format(e);if(this._isFallbackRoot(o)){if(!this._root)throw Error("unexpected error");return this._root.$i18n.n(e,Object.assign({},{key:n,locale:t},r))}return o||""},W.prototype.n=function(e){for(var t=[],n=arguments.length-1;n-- >0;)t[n]=arguments[n+1];var r=this.locale,i=null,a=null;return 1===t.length?"string"==typeof t[0]?i=t[0]:s(t[0])&&(t[0].locale&&(r=t[0].locale),t[0].key&&(i=t[0].key),a=Object.keys(t[0]).reduce((function(e,n){var r;return o.includes(n)?Object.assign({},e,((r={})[n]=t[0][n],r)):e}),null)):2===t.length&&("string"==typeof t[0]&&(i=t[0]),"string"==typeof t[1]&&(r=t[1])),this._n(e,r,i,a)},W.prototype._ntp=function(e,t,n,r){if(!W.availabilities.numberFormat)return[];if(!n)return(r?new Intl.NumberFormat(t,r):new Intl.NumberFormat(t)).formatToParts(e);var i=this._getNumberFormatter(e,t,this.fallbackLocale,this._getNumberFormats(),n,r),o=i&&i.formatToParts(e);if(this._isFallbackRoot(o)){if(!this._root)throw Error("unexpected error");return this._root.$i18n._ntp(e,t,n,r)}return o||[]},Object.defineProperties(W.prototype,Z),Object.defineProperty(W,"availabilities",{get:function(){if(!N){var e="undefined"!=typeof Intl;N={dateTimeFormat:e&&void 0!==Intl.DateTimeFormat,numberFormat:e&&void 0!==Intl.NumberFormat}}return N}}),W.install=j,W.version="8.16.0";var G=W,Y=n(65),K=n(66);i.a.use(G);var X=new G({locale:config.locale,messages:Object.assign({en:Y,sk:K})}),J=new i.a,Q=n(0);function ee(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function te(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var ne={name:"MobileOptionList",computed:function(e){for(var t=1;t0},attrs:{icon:"chevron-left"}})],1),e._v(" "),n("div",{staticClass:"directory-name"},[e._v(e._s(e.directoryName))]),e._v(" "),n("div",{staticClass:"more-actions-button",on:{click:e.showSidebarMenu}},[n("div",{staticClass:"tap-area"},[e.isSmallAppSize?n("FontAwesomeIcon",{attrs:{icon:"bars"}}):e._e()],1)])])}),[],!1,null,"082794c8",null).exports),ct={name:"MobileActionButtonUpload",props:["icon","text"],data:function(){return{files:void 0}},methods:{emmitFiles:function(e){this.$uploadFiles(e.target.files)}}},ut=(n(127),re(ct,(function(){var e=this.$createElement,t=this._self._c||e;return t("button",{staticClass:"mobile-action-button"},[t("FontAwesomeIcon",{staticClass:"icon",attrs:{icon:this.icon}}),this._v(" "),t("label",{staticClass:"label button file-input button-base",attrs:{label:"file"}},[this._v("\n "+this._s(this.text)+"\n "),t("input",{directives:[{name:"show",rawName:"v-show",value:!1,expression:"false"}],attrs:{accept:"*",id:"file",type:"file",name:"files[]",multiple:""},on:{change:this.emmitFiles}})])],1)}),[],!1,null,"3235a6b1",null).exports),ft={name:"MobileActionButton",props:["icon","text"]};n(129);function pt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function dt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var vt={name:"MobileActions",components:{MobileActionButtonUpload:ut,MobileActionButton:re(ft,(function(){var e=this.$createElement,t=this._self._c||e;return t("button",{staticClass:"mobile-action-button"},[t("FontAwesomeIcon",{staticClass:"icon",attrs:{icon:this.icon}}),this._v(" "),t("span",{staticClass:"label"},[this._v(this._s(this.text))])],1)}),[],!1,null,"83d5d066",null).exports,UploadProgress:Ke},computed:function(e){for(var t=1;t3?e.substring(0,3)+"...":e.substring(0,3)}},data:function(){return{isClicked:!1,area:!1,itemName:void 0}},methods:{showItemActions:function(){this.$store.dispatch("loadFileInfoDetail",this.data),J.$emit("mobileMenu:show")},dragEnter:function(){"folder"===this.data.type&&(this.area=!0)},dragLeave:function(){this.area=!1},clickedItem:function(e){J.$emit("contextMenu:hide"),J.$emit("fileItem:deselect"),this.isClicked=!0,this.$isMobile()&&this.isFolder&&this.$store.dispatch("goToFolder",[this.data,!1]),this.$store.dispatch("loadFileInfoDetail",this.data);var t=e.target.className;["name","icon","file-link","file-icon-text"].includes(t)},goToItem:function(){this.isImage&&this.$openImageOnNewTab(this.data.file_url),this.isFile&&this.$downloadFile(this.data.file_url,this.data.name+"."+this.data.mimetype),this.isFolder&&this.$store.dispatch("goToFolder",[this.data,!1])},changeItemName:Object(Pe.debounce)((function(e){""!==e.target.innerText&&this.$store.dispatch("changeItemName",{unique_id:this.data.unique_id,type:this.data.type,name:e.target.innerText})}),300)},created:function(){var e=this;this.itemName=this.data.name,J.$on("fileItem:deselect",(function(){e.isClicked=!1})),J.$on("change:name",(function(t){e.data.unique_id==t.unique_id&&(e.itemName=t.name)}))}},Ct=(n(137),re($t,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"file-wrapper",attrs:{spellcheck:"false"},on:{click:function(t){return t.stopPropagation(),e.clickedItem(t)},dblclick:e.goToItem}},[n("div",{staticClass:"file-item",class:{"is-clicked":e.isClicked,"is-dragenter":e.area},attrs:{draggable:!e.isDeleted},on:{dragstart:function(t){return e.$emit("dragstart")},drop:function(t){e.$emit("drop"),e.area=!1},dragleave:e.dragLeave,dragover:function(t){return t.preventDefault(),e.dragEnter(t)}}},[n("div",{staticClass:"icon-item"},[e.isFile?n("span",{staticClass:"file-icon-text"},[e._v(e._s(e._f("limitCharacters")(e.data.mimetype)))]):e._e(),e._v(" "),e.isFile?n("FontAwesomeIcon",{staticClass:"file-icon",attrs:{icon:"file"}}):e._e(),e._v(" "),e.isImage?n("img",{staticClass:"image",attrs:{src:e.data.thumbnail,alt:e.data.name}}):e._e(),e._v(" "),e.isFolder?n("FontAwesomeIcon",{staticClass:"folder-icon",class:{"is-deleted":e.isDeleted},attrs:{icon:"folder"}}):e._e()],1),e._v(" "),n("div",{staticClass:"item-name"},[n("span",{ref:"name",staticClass:"name",attrs:{contenteditable:!e.$isMobile()&&!e.$isTrashLocation()},on:{input:e.changeItemName}},[e._v(e._s(e.itemName))]),e._v(" "),e.isFolder?e._e():n("span",{staticClass:"item-size"},[e._v(e._s(e.data.filesize)+", "+e._s(e.timeStamp))]),e._v(" "),e.isFolder?n("span",{staticClass:"item-length"},[e._v("\n\t\t\t\t\t"+e._s(0==e.folderItems?e.$t("folder.empty"):e.$tc("folder.item_counts",e.folderItems))+", "+e._s(e.timeStamp)+"\n\t\t\t\t")]):e._e()]),e._v(" "),e.$isMobile()?n("div",{staticClass:"actions"},[n("span",{staticClass:"show-actions",on:{click:function(t){return t.stopPropagation(),e.showItemActions(t)}}},[n("FontAwesomeIcon",{staticClass:"icon-action",attrs:{icon:"ellipsis-v"}})],1)]):e._e()])])}),[],!1,null,"993e3c4e",null).exports);function At(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Et(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var St={name:"FileItem",props:["data"],computed:function(e){for(var t=1;t0?n("FontAwesomeIcon",{staticClass:"icon-back",attrs:{icon:"chevron-left"}}):e._e(),e._v(" "),n("span",{staticClass:"back-directory-title"},[e._v(e._s(e.directoryName))])],1)]):e._e(),e._v(" "),n("div",{staticClass:"toolbar-tools"},[n("div",{staticClass:"toolbar-button-wrapper"},[n("SearchBar")],1),e._v(" "),n("div",{staticClass:"toolbar-button-wrapper"},[n("ToolbarButtonUpload",{attrs:{source:"upload",action:"Upload file"}}),e._v(" "),n("ToolbarButton",{attrs:{source:"trash-alt",action:"Delete"},nativeOn:{click:function(t){return e.deleteItems(t)}}}),e._v(" "),n("ToolbarButton",{attrs:{source:"folder-plus",action:"Create folder"},nativeOn:{click:function(t){return e.createFolder(t)}}})],1),e._v(" "),n("div",{staticClass:"toolbar-button-wrapper"},[n("ToolbarButton",{attrs:{source:e.preview,action:""},nativeOn:{click:function(t){return e.$store.dispatch("changePreviewType")}}}),e._v(" "),n("ToolbarButton",{class:{active:e.fileInfoVisible},attrs:{source:"info"},nativeOn:{click:function(t){return e.$store.dispatch("fileInfoToggle")}}})],1)])]),e._v(" "),n("UploadProgress")],1)}),[],!1,null,"77e69b6a",null).exports);function qt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Wt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Zt={name:"ContextMenu",computed:function(e){for(var t=1;t=0&&e<=690?this.$store.commit("SET_FILES_VIEW_SIZE","minimal-scale"):e>=690&&e<=960?this.$store.commit("SET_FILES_VIEW_SIZE","compact-scale"):e>=960&&this.$store.commit("SET_FILES_VIEW_SIZE","full-scale")}},mounted:function(){if(this.config.directory)this.$store.commit("SET_START_DIRECTORY",this.config.directory),this.$store.dispatch("goToFolder",[{unique_id:this.config.directory.unique_id,name:this.config.directory.name,location:"base"},!1,!0]);else{var e={unique_id:0,name:"Home",location:"base"};this.$store.commit("SET_START_DIRECTORY",e),this.$store.dispatch("goToFolder",[e,!1,!0])}var t=document.getElementById("files-view");new Yt.ResizeSensor(t,this.handleContentResize)}},Qt=(n(154),re(Jt,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{class:e.filesViewWidth,attrs:{id:"files-view"},on:{click:e.fileViewClick,"!contextmenu":function(t){return t.preventDefault(),e.contextMenu(t,void 0)}}},[n("ContextMenu"),e._v(" "),e.$isMinimalScale()?e._e():n("DesktopToolbar"),e._v(" "),n("FilesContainer")],1)}),[],!1,null,null,null).exports),en={name:"FileListItemThumbnail",props:["file"],computed:{isFolder:function(){return"folder"===this.file.type},isFile:function(){return"folder"!==this.file.type&&"image"!==this.file.type},isImage:function(){return"image"===this.file.type}}},tn=(n(156),re(en,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"file-item"},[n("div",{staticClass:"icon-item"},[e.isFile?n("span",{staticClass:"file-icon-text"},[e._v(e._s(e.file.mimetype))]):e._e(),e._v(" "),e.isFile?n("FontAwesomeIcon",{staticClass:"file-icon",attrs:{icon:"file"}}):e._e(),e._v(" "),e.isImage?n("img",{staticClass:"image",attrs:{src:e.file.thumbnail,alt:e.file.name}}):e._e(),e._v(" "),e.isFolder?n("FontAwesomeIcon",{staticClass:"folder-icon",attrs:{icon:"folder"}}):e._e()],1),e._v(" "),n("div",{staticClass:"item-name"},[n("span",{staticClass:"name"},[e._v(e._s(e.file.name))]),e._v(" "),e.isFolder?e._e():n("span",{staticClass:"item-size"},[e._v(e._s(e.file.filesize)+", "+e._s(e.file.created_at))]),e._v(" "),e.isFolder?n("span",{staticClass:"item-length"},[e._v(e._s(0==e.file.items?e.$t("folder.empty"):e.$tc("folder.item_counts",e.folderItems))+", "+e._s(e.file.created_at))]):e._e()])])}),[],!1,null,"fd4d9f60",null).exports);function nn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function rn(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var on={name:"UserHeadline",computed:function(e){for(var t=1;t100},attrs:{progress:e.app.storage.percentage}})],1):e._e()}),[],!1,null,"157f3289",null).exports),fn={name:"TextLabel"};n(162);function pn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function dn(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var vn={name:"Sidebar",components:{FileListItemThumbnail:tn,UserHeadline:an,StorageSize:un,ButtonBase:ue,TextLabel:re(fn,(function(){var e=this.$createElement;return(this._self._c||e)("b",{staticClass:"text-label"},[this._t("default")],2)}),[],!1,null,"0fd5fc9e",null).exports},computed:function(e){for(var t=1;t690&&e<960&&this.$store.commit("SET_APP_WIDTH","medium"),e>960&&this.$store.commit("SET_APP_WIDTH","large")}},beforeMount:function(){this.$store.commit("SET_AUTHORIZED",this.$root.$data.config.hasAuthCookie),this.$store.commit("SET_CONFIG",this.$root.$data.config)},mounted:function(){var e=document.getElementById("vue-file-manager");new Yt.ResizeSensor(e,this.handleAppResize)}},Sn=(n(172),{name:"app",components:{VueFileManager:re(En,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{class:e.appSize,attrs:{id:"vue-file-manager"}},[e.isGuest?n("Auth"):e._e(),e._v(" "),e.isLogged?n("div",{attrs:{id:"auth"}},[n("div",{attrs:{id:"popups"}},[n("Alert"),e._v(" "),n("PopupMoveItem"),e._v(" "),n("MobileOptionList"),e._v(" "),n("Vignette")],1),e._v(" "),n("div",{attrs:{id:"application-wrapper"}},[n("Sidebar"),e._v(" "),e.isCurrentView("user-settings")?n("UserSettings"):e._e(),e._v(" "),e.isCurrentView("files")?n("FilesView"):e._e()],1)]):e._e()],1)}),[],!1,null,null,null).exports}}),jn=(n(174),re(Sn,(function(){var e=this.$createElement,t=this._self._c||e;return t("div",{attrs:{id:"app"}},[t("VueFileManager",{staticStyle:{height:"100%",width:"100%"}})],1)}),[],!1,null,null,null).exports);function In(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(e)))return;var n=[],r=!0,i=!1,o=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){i=!0,o=e}finally{try{r||null==s.return||s.return()}finally{if(i)throw o}}return n}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return Tn(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Tn(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Tn(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n1&&void 0!==arguments[1]&&arguments[1];J.$emit("show:content"),"files"!==e.getters.currentView&&e.commit("SET_CURRENT_VIEW","files"),t||e.commit("FLUSH_BROWSER_HISTORY"),e.commit("FLUSH_DATA"),e.commit("LOADING_STATE",!0);var n={name:"Trash",unique_id:void 0,location:"trash-root"};De.a.get(e.getters.api+"/trash").then((function(t){e.commit("GET_DATA",t.data),e.commit("LOADING_STATE",!1),e.commit("STORE_CURRENT_FOLDER",n),e.commit("ADD_BROWSER_HISTORY",n),J.$emit("scrollTop")})).catch((function(){J.$emit("alert:open",{title:X.t("popup_error.title"),message:X.t("popup_error.message")})}))},emptyTrash:function(e){e.commit("FLUSH_DATA"),e.commit("LOADING_STATE",!0),De.a.delete(e.getters.api+"/empty-trash").then((function(){e.commit("LOADING_STATE",!1),J.$emit("scrollTop"),e.commit("CLEAR_FILEINFO_DETAIL"),J.$emit("success:open",{title:X.t("popup_trashed.title"),message:X.t("popup_trashed.message")})})).catch((function(){J.$emit("alert:open",{title:X.t("popup_error.title"),message:X.t("popup_error.message")})}))},createFolder:function(e,t){var n=e.state.currentFolder?e.state.currentFolder.unique_id:0;De.a.post(e.getters.api+"/create-folder",{parent_id:n,name:t}).then((function(t){e.commit("ADD_NEW_FOLDER",t.data)})).catch((function(){J.$emit("alert:open",{title:X.t("popup_error.title"),message:X.t("popup_error.message")})}))},removeItems:function(e,t){var n=In(t,2),r=n[0],i=n[1];e.commit("REMOVE_ITEMS",r),e.commit("CLEAR_FILEINFO_DETAIL"),De.a.post(e.getters.api+"/remove-items",{items:i}).catch((function(){J.$emit("alert:open",{title:X.t("popup_error.title"),message:X.t("popup_error.message")})}))},removeItem:function(e,t){var n=e.commit,r=(e.state,e.getters);n("REMOVE_ITEM",t.unique_id),"file"!==t.type&&"image"!==t.type||n("REMOVE_ITEM_FROM_RECENT_UPLOAD",t.unique_id),"folder"===t.type&&n("REMOVE_ITEM_FROM_FAVOURITES",t),n("CLEAR_FILEINFO_DETAIL"),De.a.post(r.api+"/remove-item",{type:t.type,unique_id:t.unique_id,force_delete:!!t.deleted_at}).catch((function(){J.$emit("alert:open",{title:X.t("popup_error.title"),message:X.t("popup_error.message")})}))},restoreItem:function(e,t){var n=!1;"trash"===e.state.currentFolder.location&&(n=!0),e.commit("REMOVE_ITEM",t.unique_id),e.commit("CLEAR_FILEINFO_DETAIL"),De.a.post(e.getters.api+"/restore-item",{type:t.type,unique_id:t.unique_id,to_home:n}).catch((function(){J.$emit("alert:open",{title:X.t("popup_error.title"),message:X.t("popup_error.message")})}))},uploadFiles:function(e,t){return new Promise((function(n,r){De.a.post(e.getters.api+"/upload-file",t,{headers:{"Content-Type":"multipart/form-data"},onUploadProgress:function(t){var n=Math.round(100*t.loaded/t.total);e.commit("UPLOADING_FILE_PROGRESS",n)}}).then((function(t){t.data.folder_id==e.state.currentFolder.unique_id&&e.commit("ADD_NEW_ITEMS",t.data),e.commit("UPDATE_RECENT_UPLOAD",t.data),e.commit("UPLOADING_FILE_PROGRESS",0),n(t)})).catch((function(t){r(t),e.commit("UPDATE_FILE_COUNT_PROGRESS",void 0)}))}))},changeItemName:function(e,t){"folder"===t.type&&e.commit("UPDATE_NAME_IN_FAVOURITES",t),De.a.post(e.getters.api+"/rename-item",t).then((function(t){e.commit("CHANGE_ITEM_NAME",t.data)})).catch((function(){J.$emit("alert:open",{title:X.t("popup_error.title"),message:X.t("popup_error.message")})}))},getSearchResult:function(e,t){e.commit("FLUSH_DATA"),e.commit("LOADING_STATE",!0),e.commit("CHANGE_SEARCHING_STATE",!0),De.a.get(e.getters.api+"/search",{params:{query:t}}).then((function(t){e.commit("LOADING_STATE",!1),e.commit("GET_DATA",t.data)})).catch((function(){J.$emit("alert:open",{title:X.t("popup_error.title"),message:X.t("popup_error.message")})}))},changePreviewType:function(e){var t=e.commit,n=e.dispatch,r=e.state,i="grid"==localStorage.getItem("preview_type")?"list":"grid";localStorage.setItem("preview_type",i),t("CHANGE_PREVIEW",i),"trash-root"===r.currentFolder.location?n("getTrash"):n("goToFolder",[r.currentFolder,!1,!0])},fileInfoToggle:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;t?e.commit("FILE_INFO_TOGGLE",t):e.state.fileInfoPanelVisible?e.commit("FILE_INFO_TOGGLE",!1):e.commit("FILE_INFO_TOGGLE",!0)},getLatestUploadDetail:function(e,t){De.a.get(e.getters.api+"/file-detail/"+t.unique_id).then((function(t){e.commit("LOAD_FILEINFO_DETAIL",t.data)})).catch((function(){J.$emit("alert:open",{title:X.t("popup_error.title"),message:X.t("popup_error.message")})}))},loadFileInfoDetail:function(e,t){e.commit("GET_FILEINFO_DETAIL",t)},moveItem:function(e,t){var n=In(t,2),r=n[0],i=n[1];De.a.post(e.getters.api+"/move-item",{from_unique_id:r.unique_id,from_type:r.type,to_unique_id:i.unique_id}).then((function(){e.commit("REMOVE_ITEM",r.unique_id),e.commit("INCREASE_FOLDER_ITEM",i.unique_id)})).catch((function(){J.$emit("alert:open",{title:X.t("popup_error.title"),message:X.t("popup_error.message")})}))}},mutations:{LOADING_STATE:function(e,t){e.isLoading=t},SET_START_DIRECTORY:function(e,t){e.homeDirectory=t},FLUSH_BROWSER_HISTORY:function(e){e.browseHistory=[]},ADD_BROWSER_HISTORY:function(e,t){e.browseHistory.push(t)},REMOVE_BROWSER_HISTORY:function(e){e.browseHistory.pop()},CHANGE_ITEM_NAME:function(e,t){e.fileInfoDetail&&e.fileInfoDetail.unique_id==t.unique_id&&(e.fileInfoDetail=t),e.data.find((function(e){e.unique_id==t.unique_id&&(e.name=t.name)}))},CLEAR_FILEINFO_DETAIL:function(e){e.fileInfoDetail=void 0},LOAD_FILEINFO_DETAIL:function(e,t){e.fileInfoDetail=t},GET_FILEINFO_DETAIL:function(e,t){e.fileInfoDetail=e.data.find((function(e){return e.unique_id==t.unique_id}))},FILE_INFO_TOGGLE:function(e,t){e.fileInfoPanelVisible=t,localStorage.setItem("file_info_visibility",t)},CHANGE_PREVIEW:function(e,t){e.preview_type=t},CHANGE_SEARCHING_STATE:function(e,t){e.isSearching=t},UPLOADING_FILE_PROGRESS:function(e,t){e.uploadingFileProgress=t},UPDATE_FILE_COUNT_PROGRESS:function(e,t){e.uploadingFilesCount=t},FLUSH_DATA:function(e){e.data=[]},GET_DATA:function(e,t){e.data=t},ADD_NEW_FOLDER:function(e,t){e.data.unshift(t)},ADD_NEW_ITEMS:function(e,t){e.data=e.data.concat(t)},REMOVE_ITEMS:function(e,t){e.data=e.data.filter((function(e){return-1==t.indexOf(e.unique_id)}))},REMOVE_ITEM:function(e,t){e.data=e.data.filter((function(e){return e.unique_id!==t}))},INCREASE_FOLDER_ITEM:function(e,t){e.data.map((function(e){e.unique_id&&e.unique_id==t&&e.items++}))},STORE_CURRENT_FOLDER:function(e,t){e.currentFolder=t},SET_FILES_VIEW_SIZE:function(e,t){e.filesViewWidth=t}}},Fn={state:{authorized:void 0,app:void 0},getters:{isLogged:function(e){return e.authorized},isGuest:function(e){return!e.authorized},app:function(e){return e.app}},actions:{getAppData:function(e){var t=e.commit,n=(e.dispatch,e.getters);De.a.get(n.api+"/user").then((function(e){t("RETRIEVE_APP_DATA",e.data)})).catch((function(e){401==e.response.status&&t("SET_AUTHORIZED",!1)}))},logOut:function(e){var t=e.getters,n=e.commit;De.a.get(t.api+"/logout").then((function(){n("DESTROY_DATA"),n("SET_CURRENT_VIEW","files")}))},addToFavourites:function(e,t){e.commit("ADD_TO_FAVOURITES",t),De.a.post(e.getters.api+"/add-to-favourites",{unique_id:t.unique_id}).catch((function(){J.$emit("alert:open",{title:X.t("popup_error.title"),message:X.t("popup_error.message")})}))},removeFromFavourites:function(e,t){e.commit("REMOVE_ITEM_FROM_FAVOURITES",t),De.a.post(e.getters.api+"/remove-from-favourites",{unique_id:t.unique_id}).catch((function(){J.$emit("alert:open",{title:X.t("popup_error.title"),message:X.t("popup_error.message")})}))},getFolderTree:function(e){return new Promise((function(t,n){De.a.get(e.getters.api+"/folder-tree").then((function(n){t(n),e.commit("UPDATE_FOLDER_TREE",n.data)})).catch((function(e){n(e),J.$emit("alert:open",{title:X.t("popup_error.title"),message:X.t("popup_error.message")})}))}))}},mutations:{RETRIEVE_APP_DATA:function(e,t){e.app=t},UPDATE_FOLDER_TREE:function(e,t){e.app.folders=t},SET_AUTHORIZED:function(e,t){e.authorized=t},DESTROY_DATA:function(e){e.authorized=!1,e.app=void 0},ADD_TO_FAVOURITES:function(e,t){e.app.favourites.push({unique_id:t.unique_id,name:t.name,type:t.type})},UPDATE_NAME:function(e,t){e.app.user.name=t},UPDATE_AVATAR:function(e,t){e.app.user.avatar=t},UPDATE_RECENT_UPLOAD:function(e,t){7===e.app.latest_uploads.length&&e.app.latest_uploads.pop(),e.app.latest_uploads.unshift(t)},REMOVE_ITEM_FROM_RECENT_UPLOAD:function(e,t){e.app.latest_uploads=e.app.latest_uploads.filter((function(e){return e.unique_id!==t}))},REMOVE_ITEM_FROM_FAVOURITES:function(e,t){e.app.favourites=e.app.favourites.filter((function(e){return e.unique_id!==t.unique_id}))},UPDATE_NAME_IN_FAVOURITES:function(e,t){e.app.favourites.find((function(e){e.unique_id==t.unique_id&&(e.name=t.name)}))}}},Dn={state:{currentView:"files",appSize:void 0,config:void 0},getters:{currentView:function(e){return e.currentView},appSize:function(e){return e.appSize},api:function(e){return e.config.api},config:function(e){return e.config}},actions:{},mutations:{SET_CONFIG:function(e,t){e.config=t},SET_CURRENT_VIEW:function(e,t){e.currentView=t},SET_APP_WIDTH:function(e,t){e.appSize=t}}};i.a.use(Q.a);var zn=new Q.a.Store({modules:{filesView:Pn,userAuth:Fn,app:Dn}});function Ln(e){return function(e){if(Array.isArray(e))return Mn(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Mn(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Mn(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Mn(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n=100)){e.next=5;break}return J.$emit("alert:open",{emoji:"😬😬😬",title:this.$t("popup_exceed_limit.title"),message:this.$t("popup_exceed_limit.message")}),e.abrupt("return");case 5:n=t.length,r=1,zn.commit("UPDATE_FILE_COUNT_PROGRESS",{current:r,total:n}),i=this.$store.getters.currentFolder?this.$store.getters.currentFolder.unique_id:0,o=t.length-1;case 10:if(!(o>=0)){e.next=19;break}return(a=new FormData).append("file",t[o]),a.append("parent_id",i),e.next=16,zn.dispatch("uploadFiles",a).then((function(){zn.commit("UPDATE_FILE_COUNT_PROGRESS",{current:r,total:n}),n===r?zn.commit("UPDATE_FILE_COUNT_PROGRESS",void 0):r++})).catch((function(e){423==e.response.status?J.$emit("alert:open",{emoji:"😬😬😬",title:s.$t("popup_exceed_limit.title"),message:s.$t("popup_exceed_limit.message")}):J.$emit("alert:open",{title:s.$t("popup_error.title"),message:s.$t("popup_error.message")})}));case 16:o--,e.next=10;break;case 19:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),e.prototype.$uploadExternalFiles=function(){var e=Rn(ye.a.mark((function e(t,n){var r,i,o,a,s=this;return ye.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(0!=t.dataTransfer.items.length){e.next=2;break}return e.abrupt("return");case 2:if(r=Ln(t.dataTransfer.items).map((function(e){return e.getAsFile()})),!(this.$store.getters.app.storage.percentage>=100)){e.next=6;break}return J.$emit("alert:open",{emoji:"😬😬😬",title:this.$t("popup_exceed_limit.title"),message:this.$t("popup_exceed_limit.message")}),e.abrupt("return");case 6:i=1,zn.commit("UPDATE_FILE_COUNT_PROGRESS",{current:i,total:r.length}),o=r.length-1;case 9:if(!(o>=0)){e.next=18;break}return(a=new FormData).append("file",r[o]),a.append("parent_id",n),e.next=15,zn.dispatch("uploadFiles",a).then((function(){zn.commit("UPDATE_FILE_COUNT_PROGRESS",{current:i,total:r.length}),zn.commit("INCREASE_FOLDER_ITEM",n),r.length===i?zn.commit("UPDATE_FILE_COUNT_PROGRESS",void 0):i++})).catch((function(e){423==e.response.status?J.$emit("alert:open",{emoji:"😬😬😬",title:s.$t("popup_exceed_limit.title"),message:s.$t("popup_exceed_limit.message")}):J.$emit("alert:open",{title:s.$t("popup_error.title"),message:s.$t("popup_error.message")})}));case 15:o--,e.next=9;break;case 18:case"end":return e.stop()}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}(),e.prototype.$downloadFile=function(e,t){var n=document.createElement("a");n.href=e,n.download=t,document.body.appendChild(n),n.click()},e.prototype.$isTrashLocation=function(){return!!(zn.getters.currentFolder&&"trash"===zn.getters.currentFolder.location||zn.getters.currentFolder&&"trash-root"===zn.getters.currentFolder.location)},e.prototype.$isMobile=function(){return[/Android/i,/webOS/i,/iPhone/i,/iPad/i,/iPod/i,/BlackBerry/i,/Windows Phone/i].some((function(e){return navigator.userAgent.match(e)}))},e.prototype.$isMinimalScale=function(){return"minimal-scale"===zn.getters.filesViewWidth},e.prototype.$isCompactScale=function(){return"compact-scale"===zn.getters.filesViewWidth},e.prototype.$isFullScale=function(){return"full-scale"===zn.getters.filesViewWidth},e.prototype.$isSomethingWrong=function(){J.$emit("alert:open",{title:this.$t("popup_error.title"),message:this.$t("popup_error.message")})}}},Vn=Bn,Un=n(8),Hn=n(67),qn={prefix:"fas",iconName:"bars",icon:[448,512,[],"f0c9","M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"]},Wn={prefix:"fas",iconName:"chevron-left",icon:[320,512,[],"f053","M34.52 239.03L228.87 44.69c9.37-9.37 24.57-9.37 33.94 0l22.67 22.67c9.36 9.36 9.37 24.52.04 33.9L131.49 256l154.02 154.75c9.34 9.38 9.32 24.54-.04 33.9l-22.67 22.67c-9.37 9.37-24.57 9.37-33.94 0L34.52 272.97c-9.37-9.37-9.37-24.57 0-33.94z"]},Zn={prefix:"fas",iconName:"chevron-right",icon:[320,512,[],"f054","M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"]},Gn={prefix:"fas",iconName:"ellipsis-h",icon:[512,512,[],"f141","M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z"]},Yn={prefix:"fas",iconName:"ellipsis-v",icon:[192,512,[],"f142","M96 184c39.8 0 72 32.2 72 72s-32.2 72-72 72-72-32.2-72-72 32.2-72 72-72zM24 80c0 39.8 32.2 72 72 72s72-32.2 72-72S135.8 8 96 8 24 40.2 24 80zm0 352c0 39.8 32.2 72 72 72s72-32.2 72-72-32.2-72-72-72-72 32.2-72 72z"]},Kn={prefix:"fas",iconName:"eye-slash",icon:[640,512,[],"f070","M320 400c-75.85 0-137.25-58.71-142.9-133.11L72.2 185.82c-13.79 17.3-26.48 35.59-36.72 55.59a32.35 32.35 0 0 0 0 29.19C89.71 376.41 197.07 448 320 448c26.91 0 52.87-4 77.89-10.46L346 397.39a144.13 144.13 0 0 1-26 2.61zm313.82 58.1l-110.55-85.44a331.25 331.25 0 0 0 81.25-102.07 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64a308.15 308.15 0 0 0-147.32 37.7L45.46 3.37A16 16 0 0 0 23 6.18L3.37 31.45A16 16 0 0 0 6.18 53.9l588.36 454.73a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zm-183.72-142l-39.3-30.38A94.75 94.75 0 0 0 416 256a94.76 94.76 0 0 0-121.31-92.21A47.65 47.65 0 0 1 304 192a46.64 46.64 0 0 1-1.54 10l-73.61-56.89A142.31 142.31 0 0 1 320 112a143.92 143.92 0 0 1 144 144c0 21.63-5.29 41.79-13.9 60.11z"]},Xn={prefix:"fas",iconName:"file",icon:[384,512,[],"f15b","M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm160-14.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"]},Jn={prefix:"fas",iconName:"file-audio",icon:[384,512,[],"f1c7","M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-64 268c0 10.7-12.9 16-20.5 8.5L104 376H76c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h28l35.5-36.5c7.6-7.6 20.5-2.2 20.5 8.5v136zm33.2-47.6c9.1-9.3 9.1-24.1 0-33.4-22.1-22.8 12.2-56.2 34.4-33.5 27.2 27.9 27.2 72.4 0 100.4-21.8 22.3-56.9-10.4-34.4-33.5zm86-117.1c54.4 55.9 54.4 144.8 0 200.8-21.8 22.4-57-10.3-34.4-33.5 36.2-37.2 36.3-96.5 0-133.8-22.1-22.8 12.3-56.3 34.4-33.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z"]},Qn={prefix:"fas",iconName:"file-image",icon:[384,512,[],"f1c5","M384 121.941V128H256V0h6.059a24 24 0 0 1 16.97 7.029l97.941 97.941a24.002 24.002 0 0 1 7.03 16.971zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zm-135.455 16c26.51 0 48 21.49 48 48s-21.49 48-48 48-48-21.49-48-48 21.491-48 48-48zm208 240h-256l.485-48.485L104.545 328c4.686-4.686 11.799-4.201 16.485.485L160.545 368 264.06 264.485c4.686-4.686 12.284-4.686 16.971 0L320.545 304v112z"]},er={prefix:"fas",iconName:"file-video",icon:[384,512,[],"f1c8","M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM224 136V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248c-13.2 0-24-10.8-24-24zm96 144.016v111.963c0 21.445-25.943 31.998-40.971 16.971L224 353.941V392c0 13.255-10.745 24-24 24H88c-13.255 0-24-10.745-24-24V280c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v38.059l55.029-55.013c15.011-15.01 40.971-4.491 40.971 16.97z"]},tr={prefix:"fas",iconName:"folder",icon:[512,512,[],"f07b","M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48z"]},nr={prefix:"fas",iconName:"folder-plus",icon:[512,512,[],"f65e","M464,128H272L208,64H48A48,48,0,0,0,0,112V400a48,48,0,0,0,48,48H464a48,48,0,0,0,48-48V176A48,48,0,0,0,464,128ZM359.5,296a16,16,0,0,1-16,16h-64v64a16,16,0,0,1-16,16h-16a16,16,0,0,1-16-16V312h-64a16,16,0,0,1-16-16V280a16,16,0,0,1,16-16h64V200a16,16,0,0,1,16-16h16a16,16,0,0,1,16,16v64h64a16,16,0,0,1,16,16Z"]},rr={prefix:"fas",iconName:"hdd",icon:[576,512,[],"f0a0","M576 304v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48zm-48-80a79.557 79.557 0 0 1 30.777 6.165L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L17.223 230.165A79.557 79.557 0 0 1 48 224h480zm-48 96c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm-96 0c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z"]},ir={prefix:"fas",iconName:"home",icon:[576,512,[],"f015","M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z"]},or={prefix:"fas",iconName:"info",icon:[192,512,[],"f129","M20 424.229h20V279.771H20c-11.046 0-20-8.954-20-20V212c0-11.046 8.954-20 20-20h112c11.046 0 20 8.954 20 20v212.229h20c11.046 0 20 8.954 20 20V492c0 11.046-8.954 20-20 20H20c-11.046 0-20-8.954-20-20v-47.771c0-11.046 8.954-20 20-20zM96 0C56.235 0 24 32.235 24 72s32.235 72 72 72 72-32.235 72-72S135.764 0 96 0z"]},ar={prefix:"fas",iconName:"pencil-alt",icon:[512,512,[],"f303","M497.9 142.1l-46.1 46.1c-4.7 4.7-12.3 4.7-17 0l-111-111c-4.7-4.7-4.7-12.3 0-17l46.1-46.1c18.7-18.7 49.1-18.7 67.9 0l60.1 60.1c18.8 18.7 18.8 49.1 0 67.9zM284.2 99.8L21.6 362.4.4 483.9c-2.9 16.4 11.4 30.6 27.8 27.8l121.5-21.3 262.6-262.6c4.7-4.7 4.7-12.3 0-17l-111-111c-4.8-4.7-12.4-4.7-17.1 0zM124.1 339.9c-5.5-5.5-5.5-14.3 0-19.8l154-154c5.5-5.5 14.3-5.5 19.8 0s5.5 14.3 0 19.8l-154 154c-5.5 5.5-14.3 5.5-19.8 0zM88 424h48v36.3l-64.5 11.3-31.1-31.1L51.7 376H88v48z"]},sr={prefix:"fas",iconName:"search",icon:[512,512,[],"f002","M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"]},lr={prefix:"fas",iconName:"share",icon:[512,512,[],"f064","M503.691 189.836L327.687 37.851C312.281 24.546 288 35.347 288 56.015v80.053C127.371 137.907 0 170.1 0 322.326c0 61.441 39.581 122.309 83.333 154.132 13.653 9.931 33.111-2.533 28.077-18.631C66.066 312.814 132.917 274.316 288 272.085V360c0 20.7 24.3 31.453 39.687 18.164l176.004-152c11.071-9.562 11.086-26.753 0-36.328z"]},cr={prefix:"fas",iconName:"sort",icon:[320,512,[],"f0dc","M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41zm255-105L177 64c-9.4-9.4-24.6-9.4-33.9 0L24 183c-15.1 15.1-4.4 41 17 41h238c21.4 0 32.1-25.9 17-41z"]},ur={prefix:"fas",iconName:"sync-alt",icon:[512,512,[],"f2f1","M370.72 133.28C339.458 104.008 298.888 87.962 255.848 88c-77.458.068-144.328 53.178-162.791 126.85-1.344 5.363-6.122 9.15-11.651 9.15H24.103c-7.498 0-13.194-6.807-11.807-14.176C33.933 94.924 134.813 8 256 8c66.448 0 126.791 26.136 171.315 68.685L463.03 40.97C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.749zM32 296h134.059c21.382 0 32.09 25.851 16.971 40.971l-41.75 41.75c31.262 29.273 71.835 45.319 114.876 45.28 77.418-.07 144.315-53.144 162.787-126.849 1.344-5.363 6.122-9.15 11.651-9.15h57.304c7.498 0 13.194 6.807 11.807 14.176C478.067 417.076 377.187 504 256 504c-66.448 0-126.791-26.136-171.315-68.685L48.97 471.03C33.851 486.149 8 475.441 8 454.059V320c0-13.255 10.745-24 24-24z"]},fr={prefix:"fas",iconName:"th",icon:[512,512,[],"f00a","M149.333 56v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zm181.334 240v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm32-240v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24zm-32 80V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm-205.334 56H24c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm386.667-56H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm0 160H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zM181.333 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24z"]},pr={prefix:"fas",iconName:"th-list",icon:[512,512,[],"f00b","M149.333 216v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-80c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zM125.333 32H24C10.745 32 0 42.745 0 56v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zm80 448H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm-24-424v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24zm24 264H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24z"]},dr={prefix:"fas",iconName:"times",icon:[352,512,[],"f00d","M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"]},vr={prefix:"fas",iconName:"trash-alt",icon:[448,512,[],"f2ed","M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm272-256a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"]},mr={prefix:"fas",iconName:"upload",icon:[512,512,[],"f093","M296 384h-80c-13.3 0-24-10.7-24-24V192h-87.7c-17.8 0-26.7-21.5-14.1-34.1L242.3 5.7c7.5-7.5 19.8-7.5 27.3 0l152.2 152.2c12.6 12.6 3.7 34.1-14.1 34.1H320v168c0 13.3-10.7 24-24 24zm216-8v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h136v8c0 30.9 25.1 56 56 56h80c30.9 0 56-25.1 56-56v-8h136c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z"]};n(69),Un.c.add(Jn,er,rr,ur,lr,ir,Kn,qn,sr,Yn,Wn,Zn,mr,vr,nr,fr,pr,or,tr,Xn,Qn,dr,cr,Gn,ar),i.a.component("FontAwesomeIcon",Hn.a),i.a.use(Vn),i.a.config.productionTip=!1;new i.a({i18n:X,store:zn,data:{config:config},render:function(e){return e(jn)}}).$mount("#app")},function(e,t){}]); \ No newline at end of file diff --git a/public/js/main.js.LICENSE.txt b/public/js/main.js.LICENSE.txt index 9f32d51c..8c0104bd 100644 --- a/public/js/main.js.LICENSE.txt +++ b/public/js/main.js.LICENSE.txt @@ -4,8 +4,14 @@ * Released under the MIT License. */ +/*! + * vue-i18n v8.17.4 + * (c) 2020 kazuya kawaguchi + * Released under the MIT License. + */ + /** - * vee-validate v3.2.5 + * vee-validate v3.3.0 * (c) 2020 Abdelrahman Awad * @license MIT */ @@ -20,7 +26,7 @@ */ /** - * vuex v3.1.3 + * vuex v3.3.0 * (c) 2020 Evan You * @license MIT */ diff --git a/resources/js/App.vue b/resources/js/App.vue index 7ed2f1d2..a7d18d45 100644 --- a/resources/js/App.vue +++ b/resources/js/App.vue @@ -1,25 +1,134 @@ diff --git a/resources/js/components/VueFileManagerComponents/Auth/AuthButton.vue b/resources/js/components/Auth/AuthButton.vue similarity index 100% rename from resources/js/components/VueFileManagerComponents/Auth/AuthButton.vue rename to resources/js/components/Auth/AuthButton.vue diff --git a/resources/js/components/VueFileManagerComponents/Auth/AuthContent.vue b/resources/js/components/Auth/AuthContent.vue similarity index 100% rename from resources/js/components/VueFileManagerComponents/Auth/AuthContent.vue rename to resources/js/components/Auth/AuthContent.vue diff --git a/resources/js/components/VueFileManagerComponents/Auth/AuthContentWrapper.vue b/resources/js/components/Auth/AuthContentWrapper.vue similarity index 100% rename from resources/js/components/VueFileManagerComponents/Auth/AuthContentWrapper.vue rename to resources/js/components/Auth/AuthContentWrapper.vue diff --git a/resources/js/components/VueFileManagerComponents/FilesView/Alert.vue b/resources/js/components/FilesView/Alert.vue similarity index 96% rename from resources/js/components/VueFileManagerComponents/FilesView/Alert.vue rename to resources/js/components/FilesView/Alert.vue index 819373f7..c70a2d60 100644 --- a/resources/js/components/VueFileManagerComponents/FilesView/Alert.vue +++ b/resources/js/components/FilesView/Alert.vue @@ -23,7 +23,7 @@ @@ -38,12 +41,30 @@ background: rgba($danger, .1); } + &.danger-solid { + color: white; + background: $danger; + } + &.secondary { color: $text; background: $light_background; } } + .sync-alt { + animation: spin 1s linear infinite; + } + + @keyframes spin { + 0% { + transform: rotate(0); + } + 100% { + transform: rotate(360deg); + } + } + @media (prefers-color-scheme: dark) { .button-base { diff --git a/resources/js/components/VueFileManagerComponents/FilesView/ButtonUpload.vue b/resources/js/components/FilesView/ButtonUpload.vue similarity index 100% rename from resources/js/components/VueFileManagerComponents/FilesView/ButtonUpload.vue rename to resources/js/components/FilesView/ButtonUpload.vue diff --git a/resources/js/components/VueFileManagerComponents/FilesView/ContextMenu.vue b/resources/js/components/FilesView/ContextMenu.vue similarity index 51% rename from resources/js/components/VueFileManagerComponents/FilesView/ContextMenu.vue rename to resources/js/components/FilesView/ContextMenu.vue index 5633ac54..c192dda4 100644 --- a/resources/js/components/VueFileManagerComponents/FilesView/ContextMenu.vue +++ b/resources/js/components/FilesView/ContextMenu.vue @@ -1,34 +1,108 @@ + + diff --git a/resources/js/components/VueFileManagerComponents/FilesView/EmptyPage.vue b/resources/js/components/FilesView/EmptyPage.vue similarity index 66% rename from resources/js/components/VueFileManagerComponents/FilesView/EmptyPage.vue rename to resources/js/components/FilesView/EmptyPage.vue index 21814f4f..84043fb9 100644 --- a/resources/js/components/VueFileManagerComponents/FilesView/EmptyPage.vue +++ b/resources/js/components/FilesView/EmptyPage.vue @@ -1,20 +1,32 @@ + + diff --git a/resources/js/components/VueFileManagerComponents/FilesView/FileItemGrid.vue b/resources/js/components/FilesView/FileItemGrid.vue similarity index 71% rename from resources/js/components/VueFileManagerComponents/FilesView/FileItemGrid.vue rename to resources/js/components/FilesView/FileItemGrid.vue index 7f75defa..e81ea818 100644 --- a/resources/js/components/VueFileManagerComponents/FilesView/FileItemGrid.vue +++ b/resources/js/components/FilesView/FileItemGrid.vue @@ -7,7 +7,7 @@ >
+ - {{ - data.mimetype - }} + + {{ data.mimetype }} + @@ -38,27 +39,41 @@
- {{ itemName }} + {{ itemName }} + - - {{ - data.filesize - }} +
- - {{ folderItems == 0 ? $t('folder.empty') : $tc('folder.item_counts', folderItems) }} - + +
+ +
+ + +
+ +
+ + + {{ data.filesize }} + + + + {{ folderItems == 0 ? $t('folder.empty') : $tc('folder.item_counts', folderItems) }} + +
- - - + + +
@@ -69,10 +84,12 @@ import {events} from '@/bus' export default { - name: 'FileItem', + name: 'FileItemGrid', props: ['data'], computed: { - ...mapGetters(['preview_type']), + ...mapGetters([ + 'FilePreviewType', 'sharedDetail' + ]), isFolder() { return this.data.type === 'folder' }, @@ -82,6 +99,18 @@ isImage() { return this.data.type === 'image' }, + canEditName() { + return !this.$isMobile() + && !this.$isThisLocation(['trash', 'trash-root']) + && !this.$checkPermission('visitor') + && !(this.sharedDetail && this.sharedDetail.type === 'file') + }, + canShowMobileOptions() { + return ! (this.sharedDetail && this.sharedDetail.type === 'file') + }, + canDrag() { + return !this.isDeleted && this.$checkPermission(['master', 'editor']) + }, timeStamp() { return this.data.deleted_at ? this.$t('item_thumbnail.deleted_at', this.data.deleted_at) : this.data.created_at }, @@ -102,7 +131,7 @@ methods: { showItemActions() { // Load file info detail - this.$store.dispatch('loadFileInfoDetail', this.data) + this.$store.commit('GET_FILEINFO_DETAIL', this.data) events.$emit('mobileMenu:show') }, @@ -125,11 +154,15 @@ if (this.$isMobile() && this.isFolder) { // Go to folder - this.$store.dispatch('goToFolder', [this.data, false]) + if (this.$isThisLocation('public')) { + this.$store.dispatch('browseShared', [this.data, false]) + } else { + this.$store.dispatch('getFolder', [this.data, false]) + } } // Load file info detail - this.$store.dispatch('loadFileInfoDetail', this.data) + this.$store.commit('GET_FILEINFO_DETAIL', this.data) // Get target classname let itemClass = e.target.className @@ -155,15 +188,19 @@ if (this.isFolder) { // Go to folder - this.$store.dispatch('goToFolder', [this.data, false]) + if (this.$isThisLocation('public')) { + this.$store.dispatch('browseShared', [this.data, false]) + } else { + this.$store.dispatch('getFolder', [this.data, false]) + } } }, - changeItemName: debounce(function (e) { + renameItem: debounce(function (e) { // Prevent submit empty string - if (e.target.innerText === '') return + if (e.target.innerText.trim() === '') return - this.$store.dispatch('changeItemName', { + this.$store.dispatch('renameItem', { unique_id: this.data.unique_id, type: this.data.type, name: e.target.innerText @@ -220,19 +257,29 @@ @include font-size(12); font-weight: 400; color: $text-muted; - display: block; + display: inline-block; } - .name { + .item-info { display: block; + line-height: 1; + } - &[contenteditable] { - -webkit-user-select: text; - user-select: text; + .item-shared { + display: inline-block; + + .label { + @include font-size(12); + font-weight: 400; + color: $theme; } - &[contenteditable='true']:hover { - text-decoration: underline; + .shared-icon { + @include font-size(9); + + path { + fill: $theme; + } } } @@ -243,6 +290,16 @@ max-height: 40px; overflow: hidden; text-overflow: ellipsis; + word-break: break-all; + + &[contenteditable] { + -webkit-user-select: text; + user-select: text; + } + + &[contenteditable='true']:hover { + text-decoration: underline; + } &.actived { max-height: initial; @@ -326,6 +383,7 @@ height: 110px; border-radius: 5px; margin: 0 auto; + pointer-events: none; } .folder-icon { @@ -377,4 +435,6 @@ } } } + + diff --git a/resources/js/components/VueFileManagerComponents/FilesView/FileItemList.vue b/resources/js/components/FilesView/FileItemList.vue similarity index 73% rename from resources/js/components/VueFileManagerComponents/FilesView/FileItemList.vue rename to resources/js/components/FilesView/FileItemList.vue index 1391eb99..47b6d0c7 100644 --- a/resources/js/components/VueFileManagerComponents/FilesView/FileItemList.vue +++ b/resources/js/components/FilesView/FileItemList.vue @@ -1,12 +1,13 @@ + + + + diff --git a/resources/js/components/VueFileManagerComponents/FilesView/MobileOptionList.vue b/resources/js/components/FilesView/MobileMenu.vue similarity index 54% rename from resources/js/components/VueFileManagerComponents/FilesView/MobileOptionList.vue rename to resources/js/components/FilesView/MobileMenu.vue index 73ed4154..f0c8e27b 100644 --- a/resources/js/components/VueFileManagerComponents/FilesView/MobileOptionList.vue +++ b/resources/js/components/FilesView/MobileMenu.vue @@ -8,58 +8,85 @@ @click="closeAndResetContextMenu" > -
+
@@ -69,7 +96,7 @@ import {mapGetters} from 'vuex' export default { - name: 'MobileOptionList', + name: 'MobileMenu', computed: { ...mapGetters(['fileInfoDetail', 'app']), isInFavourites() { @@ -92,11 +119,20 @@ }, methods: { moveItem() { - // Move item fire popup - events.$emit('popup:move-item', this.fileInfoDetail); + // Open move item popup + events.$emit('popup:open', {name: 'move', item: this.fileInfoDetail}) + }, + shareItem() { + if (this.fileInfoDetail.shared) { + // Open share item popup + events.$emit('popup:open', {name: 'share-edit', item: this.fileInfoDetail}) + } else { + // Open share item popup + events.$emit('popup:open', {name: 'share-create', item: this.fileInfoDetail}) + } }, addToFavourites() { - if (this.app.favourites && ! this.app.favourites.find(el => el.unique_id == this.fileInfoDetail.unique_id)) { + if (this.app.favourites && !this.app.favourites.find(el => el.unique_id == this.fileInfoDetail.unique_id)) { this.$store.dispatch('addToFavourites', this.fileInfoDetail) } else { this.$store.dispatch('removeFromFavourites', this.fileInfoDetail) @@ -109,9 +145,9 @@ this.fileInfoDetail.name + '.' + this.fileInfoDetail.mimetype ) }, - removeItem() { + deleteItem() { // Dispatch remove item - this.$store.dispatch('removeItem', this.fileInfoDetail) + this.$store.dispatch('deleteItem', this.fileInfoDetail) }, renameItem() { let itemName = prompt( @@ -127,10 +163,10 @@ name: itemName } - this.$store.dispatch('changeItemName', item) + this.$store.dispatch('renameItem', item) // Change item name if is mobile device or prompted - if ( this.$isMobile() ) { + if (this.$isMobile()) { events.$emit('change:name', item) } } diff --git a/resources/js/components/VueFileManagerComponents/FilesView/MobileToolbar.vue b/resources/js/components/FilesView/MobileToolbar.vue similarity index 85% rename from resources/js/components/VueFileManagerComponents/FilesView/MobileToolbar.vue rename to resources/js/components/FilesView/MobileToolbar.vue index 7a40db24..b6b7fe5c 100644 --- a/resources/js/components/VueFileManagerComponents/FilesView/MobileToolbar.vue +++ b/resources/js/components/FilesView/MobileToolbar.vue @@ -1,5 +1,5 @@ + + diff --git a/resources/js/components/Others/Forms/CopyInput.vue b/resources/js/components/Others/Forms/CopyInput.vue new file mode 100644 index 00000000..d6e2defc --- /dev/null +++ b/resources/js/components/Others/Forms/CopyInput.vue @@ -0,0 +1,90 @@ + + + + + diff --git a/resources/js/components/Others/Forms/SelectInput.vue b/resources/js/components/Others/Forms/SelectInput.vue new file mode 100644 index 00000000..b548efe0 --- /dev/null +++ b/resources/js/components/Others/Forms/SelectInput.vue @@ -0,0 +1,194 @@ + + + + + diff --git a/resources/js/components/Others/Forms/SwitchInput.vue b/resources/js/components/Others/Forms/SwitchInput.vue new file mode 100644 index 00000000..14972135 --- /dev/null +++ b/resources/js/components/Others/Forms/SwitchInput.vue @@ -0,0 +1,98 @@ + + + + + diff --git a/resources/js/components/Others/MoveItem.vue b/resources/js/components/Others/MoveItem.vue new file mode 100644 index 00000000..148269b6 --- /dev/null +++ b/resources/js/components/Others/MoveItem.vue @@ -0,0 +1,132 @@ + + + + + diff --git a/resources/js/components/VueFileManagerComponents/Others/PageHeader.vue b/resources/js/components/Others/PageHeader.vue similarity index 91% rename from resources/js/components/VueFileManagerComponents/Others/PageHeader.vue rename to resources/js/components/Others/PageHeader.vue index 9bfa775d..4b7a86e3 100644 --- a/resources/js/components/VueFileManagerComponents/Others/PageHeader.vue +++ b/resources/js/components/Others/PageHeader.vue @@ -26,7 +26,10 @@ }, methods: { goHome() { - if (this.isSmallAppSize) events.$emit('show:sidebar') + if (this.isSmallAppSize) { + events.$emit('show:sidebar') + this.$router.push({name: 'Files'}) + } } } } diff --git a/resources/js/components/Others/Popup/PopupActions.vue b/resources/js/components/Others/Popup/PopupActions.vue new file mode 100644 index 00000000..ed79940b --- /dev/null +++ b/resources/js/components/Others/Popup/PopupActions.vue @@ -0,0 +1,40 @@ + + + + + diff --git a/resources/js/components/Others/Popup/PopupContent.vue b/resources/js/components/Others/Popup/PopupContent.vue new file mode 100644 index 00000000..43ddceb0 --- /dev/null +++ b/resources/js/components/Others/Popup/PopupContent.vue @@ -0,0 +1,62 @@ + + + + + diff --git a/resources/js/components/Others/Popup/PopupHeader.vue b/resources/js/components/Others/Popup/PopupHeader.vue new file mode 100644 index 00000000..7e2de000 --- /dev/null +++ b/resources/js/components/Others/Popup/PopupHeader.vue @@ -0,0 +1,52 @@ + + + + + diff --git a/resources/js/components/Others/Popup/PopupWrapper.vue b/resources/js/components/Others/Popup/PopupWrapper.vue new file mode 100644 index 00000000..4ce26b55 --- /dev/null +++ b/resources/js/components/Others/Popup/PopupWrapper.vue @@ -0,0 +1,144 @@ + + + + + diff --git a/resources/js/components/Others/ShareCreate.vue b/resources/js/components/Others/ShareCreate.vue new file mode 100644 index 00000000..7d82fcb5 --- /dev/null +++ b/resources/js/components/Others/ShareCreate.vue @@ -0,0 +1,213 @@ + + + + + diff --git a/resources/js/components/Others/ShareEdit.vue b/resources/js/components/Others/ShareEdit.vue new file mode 100644 index 00000000..f841b8a3 --- /dev/null +++ b/resources/js/components/Others/ShareEdit.vue @@ -0,0 +1,259 @@ + + + + + diff --git a/resources/js/components/VueFileManagerComponents/Others/TextLabel.vue b/resources/js/components/Others/TextLabel.vue similarity index 89% rename from resources/js/components/VueFileManagerComponents/Others/TextLabel.vue rename to resources/js/components/Others/TextLabel.vue index 3676f111..41e1e126 100644 --- a/resources/js/components/VueFileManagerComponents/Others/TextLabel.vue +++ b/resources/js/components/Others/TextLabel.vue @@ -24,7 +24,7 @@ @media (prefers-color-scheme: dark) { .text-label { - color: rgba($dark_mode_text_secondary, .4); + color: $theme; } } diff --git a/resources/js/components/VueFileManagerComponents/Others/ThemeLabel.vue b/resources/js/components/Others/ThemeLabel.vue similarity index 100% rename from resources/js/components/VueFileManagerComponents/Others/ThemeLabel.vue rename to resources/js/components/Others/ThemeLabel.vue diff --git a/resources/js/components/VueFileManagerComponents/Others/ThumbnailItem.vue b/resources/js/components/Others/ThumbnailItem.vue similarity index 75% rename from resources/js/components/VueFileManagerComponents/Others/ThumbnailItem.vue rename to resources/js/components/Others/ThumbnailItem.vue index e3f32a75..e750b0ac 100644 --- a/resources/js/components/VueFileManagerComponents/Others/ThumbnailItem.vue +++ b/resources/js/components/Others/ThumbnailItem.vue @@ -1,17 +1,17 @@ @@ -34,18 +44,18 @@ export default { name: 'ThumbnailItem', - props: ['file'], + props: ['item', 'info'], computed: { ...mapGetters(['currentFolder']), isFolder() { - return this.file.type === 'folder' + return this.item.type === 'folder' }, isFile() { - return this.file.type !== 'folder' && this.file.type !== 'image' + return this.item.type !== 'folder' && this.item.type !== 'image' }, isImage() { - return this.file.type === 'image' - } + return this.item.type === 'image' + }, }, } @@ -66,6 +76,14 @@ text-overflow: ellipsis; white-space: nowrap; + .item-size, + .item-length { + @include font-size(12); + font-weight: 400; + color: $text-muted; + display: block; + } + .subtitle { @include font-size(11); font-weight: 400; @@ -141,7 +159,7 @@ .small { .file-item { padding: 0 15px; - margin-bottom: 10px; + margin-bottom: 25px; } } diff --git a/resources/js/components/VueFileManagerComponents/Others/TreeMenu.vue b/resources/js/components/Others/TreeMenu.vue similarity index 98% rename from resources/js/components/VueFileManagerComponents/Others/TreeMenu.vue rename to resources/js/components/Others/TreeMenu.vue index 48c0ddba..edf741a1 100644 --- a/resources/js/components/VueFileManagerComponents/Others/TreeMenu.vue +++ b/resources/js/components/Others/TreeMenu.vue @@ -13,7 +13,7 @@ - - diff --git a/resources/js/components/VueFileManagerComponents/Auth.vue b/resources/js/components/VueFileManagerComponents/Auth.vue deleted file mode 100644 index 8ab3e26b..00000000 --- a/resources/js/components/VueFileManagerComponents/Auth.vue +++ /dev/null @@ -1,555 +0,0 @@ - - - - - diff --git a/resources/js/components/VueFileManagerComponents/FilesView/EmptyMessage.vue b/resources/js/components/VueFileManagerComponents/FilesView/EmptyMessage.vue deleted file mode 100644 index e17ec10a..00000000 --- a/resources/js/components/VueFileManagerComponents/FilesView/EmptyMessage.vue +++ /dev/null @@ -1,47 +0,0 @@ - - - - - diff --git a/resources/js/components/VueFileManagerComponents/FilesView/FileInfoPanel.vue b/resources/js/components/VueFileManagerComponents/FilesView/FileInfoPanel.vue deleted file mode 100644 index 794c81b6..00000000 --- a/resources/js/components/VueFileManagerComponents/FilesView/FileInfoPanel.vue +++ /dev/null @@ -1,241 +0,0 @@ - - - - - diff --git a/resources/js/components/VueFileManagerComponents/FilesView/MobileActions.vue b/resources/js/components/VueFileManagerComponents/FilesView/MobileActions.vue deleted file mode 100644 index 1dc78bb6..00000000 --- a/resources/js/components/VueFileManagerComponents/FilesView/MobileActions.vue +++ /dev/null @@ -1,80 +0,0 @@ - - - - - diff --git a/resources/js/components/VueFileManagerComponents/Others/PopupMoveItem.vue b/resources/js/components/VueFileManagerComponents/Others/PopupMoveItem.vue deleted file mode 100644 index cfe5df26..00000000 --- a/resources/js/components/VueFileManagerComponents/Others/PopupMoveItem.vue +++ /dev/null @@ -1,299 +0,0 @@ - - - - - diff --git a/resources/js/helpers.js b/resources/js/helpers.js index c9e2f22c..d263af76 100644 --- a/resources/js/helpers.js +++ b/resources/js/helpers.js @@ -1,22 +1,16 @@ import store from './store/index' -import {debounce} from "lodash"; +import {debounce, includes} from "lodash"; import {events} from './bus' import axios from 'axios' const Helpers = { install(Vue) { - Vue.prototype.$goToView = function(view) { - events.$emit('show:content') - - this.$store.commit('SET_CURRENT_VIEW', view) - } - Vue.prototype.$updateText = debounce(function (route, name, value) { if (value === '') return - axios.put(this.$store.getters.api + route, {name, value}) + axios.patch(this.$store.getters.api + route, {name, value}) .catch(error => { events.$emit('alert:open', { title: this.$t('popup_error.title'), @@ -32,7 +26,7 @@ const Helpers = { // Add image to form formData.append(name, image) - formData.append('_method', 'PUT') + formData.append('_method', 'PATCH') axios.post(this.$store.getters.api + route, formData, { headers: { @@ -61,7 +55,8 @@ const Helpers = { // Prevent submit empty files if (files && files.length == 0) return - if (this.$store.getters.app.storage.percentage >= 100) { + // Check storage size + if (! this.$isThisLocation(['public']) && this.$store.getters.app.storage.percentage >= 100) { events.$emit('alert:open', { emoji: '😬😬😬', title: this.$t('popup_exceed_limit.title'), @@ -94,7 +89,8 @@ const Helpers = { formData.append('parent_id', rootFolder) // Upload data - await store.dispatch('uploadFiles', formData).then(() => { + await store.dispatch('uploadFiles', formData) + .then(() => { // Progress file log store.commit('UPDATE_FILE_COUNT_PROGRESS', { current: fileCountSucceed, @@ -110,7 +106,7 @@ const Helpers = { } }).catch(error => { - if (error.response.status == 423) { + if (error.response.status === 423) { events.$emit('alert:open', { emoji: '😬😬😬', @@ -138,7 +134,8 @@ const Helpers = { // Get files const files = [...event.dataTransfer.items].map(item => item.getAsFile()); - if (this.$store.getters.app.storage.percentage >= 100) { + // Check storage size + if (! this.$isThisLocation(['public']) && this.$store.getters.app.storage.percentage >= 100) { events.$emit('alert:open', { emoji: '😬😬😬', title: this.$t('popup_exceed_limit.title'), @@ -147,6 +144,7 @@ const Helpers = { return } + let fileCountSucceed = 1 store.commit('UPDATE_FILE_COUNT_PROGRESS', { @@ -215,9 +213,35 @@ const Helpers = { anchor.click() } - Vue.prototype.$isTrashLocation = function() { + Vue.prototype.$closePopup = function() { + events.$emit('popup:close') + } - return store.getters.currentFolder && store.getters.currentFolder.location === 'trash' || store.getters.currentFolder && store.getters.currentFolder.location === 'trash-root' ? true : false + Vue.prototype.$isThisLocation = function(location) { + + // Get current location + let currentLocation = store.getters.currentFolder && store.getters.currentFolder.location ? store.getters.currentFolder.location : undefined + + // Check if type is object + if (typeof location === 'Object' || location instanceof Object) { + return includes(location, currentLocation) + + } else { + return currentLocation === location + } + } + + Vue.prototype.$checkPermission = function(type) { + + let currentPermission = store.getters.permission + + // Check if type is object + if (typeof type === 'Object' || type instanceof Object) { + return includes(type, currentPermission) + + } else { + return currentPermission === type + } } Vue.prototype.$isMobile = function() { diff --git a/resources/js/i18n/index.js b/resources/js/i18n/index.js index e50b81df..c9186503 100644 --- a/resources/js/i18n/index.js +++ b/resources/js/i18n/index.js @@ -2,14 +2,14 @@ import Vue from 'vue'; import VueI18n from 'vue-i18n'; import en from './lang/en.json' -import sk from './lang/sk.json' +//import sk from './lang/sk.json' Vue.use(VueI18n); const i18n = new VueI18n({ locale: config.locale, messages: Object.assign({ - en, sk + en }), }); diff --git a/resources/js/i18n/lang/en.json b/resources/js/i18n/lang/en.json index cae98d66..0bcee805 100644 --- a/resources/js/i18n/lang/en.json +++ b/resources/js/i18n/lang/en.json @@ -24,6 +24,17 @@ "button_create_account": "Create Account", "have_an_account": "Do you have an account?" }, + "page_shared": { + "subtitle": "Please type the password to get shared content:", + "title": "Your Share Link is Protected", + "placeholder_pass": "Type password", + "download_file": "Download File", + "submit": "Submit" + }, + "page_shared_404": { + "subtitle": "The content you are finding was probably deleted.", + "title": "Not Found :(" + }, "page_create_password": { "title": "Only One Step to Log In", "subtitle": "Create your new password here:", @@ -71,11 +82,15 @@ "nothing_was_found": "Nothing was found" }, "locations": { - "home": "Home", - "trash": "Trash" + "shared": "Shared", + "trash": "Trash", + "home": "Home" }, "file_detail": { + "author_participant": "Public Participant", "created_at": "Created at", + "shared": "Shared", + "author": "Author", "where": "Where", "size": "Size" }, @@ -117,6 +132,7 @@ "profile_settings": "Profile Settings", "create_folder": "Create Folder", "empty_trash": "Empty Trash", + "share_edit": "Edit Sharing", "add_folder": "Add Folder", "download": "Download", "log_out": "Log Out", @@ -125,9 +141,11 @@ "detail": "Detail", "rename": "Rename", "delete": "Delete", + "share": "Share", "move": "Move" }, "sidebar": { + "shared": "Shared", "locations": "Locations", "favourites": "Favourites", "favourites_empty": "Drag here your favourite folder.", @@ -161,5 +179,39 @@ "popup_exceed_limit": { "title": "Whooops, you exceed your storage limit :(", "message": "Please contact your administrator to change your limit." + }, + "popup_share_create": { + "title": "Share Your {item}" + }, + "popup_share_edit": { + "title": "Update sharing options", + "change_pass": "Change Password", + "save": "Save Changes", + "stop": "Stop Sharing", + "confirm": "Confirm" + }, + "shared": { + "empty_shared": "You Haven't Shared Anything Yet", + "editor": "Can edit and upload files", + "visitor": "Can only view and download", + "can_download": "Can download file" + }, + "shared_form": { + "placeholder_permission": "Select your permission", + "label_password_protection": "Password Protected", + "button_done": "Awesome, I’m done!", + "button_generate": "Generate Link", + "label_permission": "Permission", + "label_shared_url": "Share url" + }, + "actions": { + "create_folder": "Create folder", + "preview": "Change preview", + "upload": "Upload file", + "delete": "Delete item" + }, + "types": { + "folder": "Folder", + "file": "File" } } \ No newline at end of file diff --git a/resources/js/i18n/lang/sk.json b/resources/js/i18n/lang/sk.json index b5206571..091771a0 100644 --- a/resources/js/i18n/lang/sk.json +++ b/resources/js/i18n/lang/sk.json @@ -24,6 +24,17 @@ "button_create_account": "Vytvoriť účet", "have_an_account": "Máš už účet?" }, + "page_shared": { + "subtitle": "Prosím vložte heslo pre získanie prístupu k obsahu:", + "title": "Zdieľaný odkaz je chránený", + "placeholder_pass": "Vložte heslo", + "download_file": "Stiahnúť súbor", + "submit": "Potvrdiť" + }, + "page_shared_404": { + "subtitle": "Obsah ktorý hľadáš bol pravdepodobne vymazaný.", + "title": "Obsah sa nenašiel :(" + }, "page_create_password": { "title": "Iba jeden krok pre prihlásenie", "subtitle": "Vytvorte si nové heslo tu:", @@ -71,12 +82,16 @@ "nothing_was_found": "Nič sa nenašlo" }, "locations": { + "shared": "Zdieľané", "home": "Domov", "trash": "Kôš" }, "file_detail": { + "author_participant": "Verejný účastník", "created_at": "Vytvorené", "where": "Umiestnenie", + "shared": "Zdieľané", + "author": "Autor", "size": "Veľkosť" }, "empty_page": { @@ -116,18 +131,21 @@ "add_to_favourites": "Pridať do obľúbených", "profile_settings": "Nastavenia profilu", "create_folder": "Vytvoriť priečinok", + "share_edit": "Upraviť zdieľanie", "empty_trash": "Vyprázdniť kôš", "add_folder": "Nový priečinok", - "download": "Stiahnúť", "log_out": "Odhlásiť sa", + "download": "Stiahnúť", + "rename": "Premenovať", "restore": "Obnoviť", "upload": "Nahrať", "detail": "Detail", - "rename": "Premenovať", "delete": "Vymazať", + "share": "Zdieľať", "move": "Presunúť" }, "sidebar": { + "shared": "Zdieľané", "locations": "Umiestnenie", "favourites": "Obľúbené", "favourites_empty": "Presuňte sem svoj obľúbený priečinok.", @@ -161,5 +179,39 @@ "popup_exceed_limit": { "title": "Ups, presiahli ste limit úložiska", "message": "Prosím, kontaktujte administrátora pre navyšenie limitu." + }, + "popup_share_create": { + "title": "Zdieľaj {item}" + }, + "popup_share_edit": { + "title": "Upraviť nastavenia zdieľania", + "change_pass": "Zmeniť heslo", + "save": "Uložiť zmeny", + "stop": "Zastaviť zdieľanie", + "confirm": "Potvrdiť" + }, + "shared": { + "empty_shared": "Zatiaľ ste nič nezdieľali", + "editor": "Môže upravovať a nahrávať súbory", + "visitor": "Môže len vidieť a sťahovať súbory", + "can_download": "Môže stiahnúť súbor" + }, + "shared_form": { + "placeholder_permission": "Zvoľte oprávnenia", + "label_password_protection": "Chrániť heslom", + "button_done": "Super, som hotový!", + "button_generate": "Vygenerovať link", + "label_permission": "Oprávnenie", + "label_shared_url": "Zdieľací odkaz" + }, + "actions": { + "create_folder": "Vytvoriť priečinok", + "preview": "Zmeniť náhľad", + "upload": "Nahrať súbory", + "delete": "Vymazať položku" + }, + "types": { + "folder": "Priečinok", + "file": "Súbor" } } \ No newline at end of file diff --git a/resources/js/main.js b/resources/js/main.js index 67b78801..0fc54868 100644 --- a/resources/js/main.js +++ b/resources/js/main.js @@ -1,12 +1,22 @@ require('./bootstrap'); import Vue from 'vue' +import VueRouter from 'vue-router' +import router from './router' import i18n from './i18n/index.js' import App from './App.vue' -import store from './store/index' +import store from './store' import Helpers from './helpers' import { library } from '@fortawesome/fontawesome-svg-core' import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome' import { + faLock, + faLockOpen, + faDownload, + faUserFriends, + faCheck, + faLink, + faUserEdit, + faUser, faFileAudio, faFileVideo, faSyncAlt, @@ -18,6 +28,7 @@ import { faEllipsisV, faChevronLeft, faChevronRight, + faChevronDown, faUpload, faFolderPlus, faTh, @@ -35,6 +46,14 @@ import { } from '@fortawesome/free-solid-svg-icons' library.add( + faLock, + faLockOpen, + faDownload, + faUserFriends, + faCheck, + faLink, + faUserEdit, + faUser, faFileAudio, faFileVideo, faHdd, @@ -47,6 +66,7 @@ library.add( faEllipsisV, faChevronLeft, faChevronRight, + faChevronDown, faUpload, faTrashAlt, faFolderPlus, @@ -63,6 +83,7 @@ library.add( ) Vue.component('FontAwesomeIcon', FontAwesomeIcon) +Vue.use(VueRouter) Vue.use(Helpers) Vue.config.productionTip = false @@ -70,6 +91,7 @@ Vue.config.productionTip = false var vueFileManager = new Vue({ i18n, store, + router, data: { config, }, diff --git a/resources/js/router.js b/resources/js/router.js new file mode 100644 index 00000000..228977f1 --- /dev/null +++ b/resources/js/router.js @@ -0,0 +1,114 @@ +import Vue from 'vue' +import Router from 'vue-router' + +import Index from './views/Auth/SignIn' +import SignUp from './views/Auth/SignUp' +import SharedPage from './views/Shared/SharedPage' +import NotFoundShared from './views/Shared/NotFoundShared' +import ForgottenPassword from './views/Auth/ForgottenPassword' +import CreateNewPassword from './views/Auth/CreateNewPassword' + +import Files from './views/Files' +import Profile from './views/Profile' + +Vue.use(Router) + +const router = new Router({ + mode: 'history', + routes: [ + { + name: 'SignIn', + path: '/', + component: Index, + meta: { + requiresAuth: false + }, + }, + { + name: 'SignUp', + path: '/sign-up', + component: SignUp, + meta: { + requiresAuth: false + }, + }, + { + name: 'ForgottenPassword', + path: '/forgotten-password', + component: ForgottenPassword, + meta: { + requiresAuth: false + }, + }, + { + name: 'CreateNewPassword', + path: '/create-new-password', + component: CreateNewPassword, + meta: { + requiresAuth: false + }, + }, + { + name: 'SharedPage', + path: '/shared/:token', + component: SharedPage, + meta: { + requiresAuth: false + }, + }, + { + name: 'NotFoundShared', + path: '/shared-not-found', + component: NotFoundShared, + meta: { + requiresAuth: false + }, + }, + { + name: 'Files', + path: '/files', + component: Files, + meta: { + requiresAuth: true + }, + }, + { + name: 'Profile', + path: '/profile', + component: Profile, + meta: { + requiresAuth: true + }, + }, + ], + scrollBehavior(to, from, savedPosition) { + + if (savedPosition) { + return savedPosition + } else { + return {x: 0, y: 0} + } + }, +}) + +router.beforeEach((to, from, next) => { + + if (to.matched.some(record => record.meta.requiresAuth)) { + // this route requires auth, check if logged in + // if not, redirect to login page. + + //if ( ! store.getters.isLogged) { + if ( false ) { + next({ + name: 'SignIn', + query: { redirect: to.fullPath } + }) + } else { + next() + } + } else { + next() // make sure to always call next()! + } +}) + +export default router \ No newline at end of file diff --git a/resources/js/store/index.js b/resources/js/store/index.js index 91671f54..14be0e1f 100644 --- a/resources/js/store/index.js +++ b/resources/js/store/index.js @@ -1,14 +1,20 @@ import Vuex from 'vuex' import Vue from 'vue' -import filesView from './modules/filesView' +import fileFunctions from './modules/fileFunctions' +import fileBrowser from './modules/fileBrowser' import userAuth from './modules/userAuth' +import sharing from './modules/sharing' import app from './modules/app' Vue.use(Vuex) export default new Vuex.Store({ modules: { - filesView, userAuth, app, + fileFunctions, + fileBrowser, + userAuth, + sharing, + app, } }) \ No newline at end of file diff --git a/resources/js/store/modules/app.js b/resources/js/store/modules/app.js index 36c1c987..304ae658 100644 --- a/resources/js/store/modules/app.js +++ b/resources/js/store/modules/app.js @@ -1,24 +1,64 @@ const defaultState = { - currentView: 'files', + fileInfoPanelVisible: localStorage.getItem('file_info_visibility') == 'true' || false, + FilePreviewType: localStorage.getItem('preview_type') || 'list', appSize: undefined, config: undefined, } const actions = { + changePreviewType: ({commit, dispatch, state, getters}) => { + // Get preview type + let previewType = state.FilePreviewType == 'grid' ? 'list' : 'grid' + // Store preview type to localStorage + localStorage.setItem('preview_type', previewType) + + // Change preview + commit('CHANGE_PREVIEW', previewType) + + if (getters.currentFolder.location === 'trash-root') { + dispatch('getTrash') + + } else { + + if ( getters.currentFolder.location === 'public' ) { + dispatch('browseShared', [getters.currentFolder, false, true]) + } else { + dispatch('getFolder', [getters.currentFolder, false, true]) + } + } + }, + fileInfoToggle: (context, visibility = undefined) => { + if (!visibility) { + if (context.state.fileInfoPanelVisible) { + context.commit('FILE_INFO_TOGGLE', false) + } else { + context.commit('FILE_INFO_TOGGLE', true) + } + } else { + context.commit('FILE_INFO_TOGGLE', visibility) + } + }, } const mutations = { - SET_CONFIG(state, config) { - state.config = config - }, - SET_CURRENT_VIEW(state, view) { - state.currentView = view + FILE_INFO_TOGGLE(state, isVisible) { + state.fileInfoPanelVisible = isVisible + + localStorage.setItem('file_info_visibility', isVisible) }, SET_APP_WIDTH(state, scale) { state.appSize = scale }, + CHANGE_PREVIEW(state, type) { + state.FilePreviewType = type + }, + SET_CONFIG(state, config) { + state.config = config + }, + } const getters = { - currentView: state => state.currentView, + fileInfoVisible: state => state.fileInfoPanelVisible, + FilePreviewType: state => state.FilePreviewType, appSize: state => state.appSize, api: state => state.config.api, config: state => state.config, diff --git a/resources/js/store/modules/fileBrowser.js b/resources/js/store/modules/fileBrowser.js new file mode 100644 index 00000000..a0d22feb --- /dev/null +++ b/resources/js/store/modules/fileBrowser.js @@ -0,0 +1,345 @@ +import axios from 'axios' +import {events} from '@/bus' +import router from '@/router' +import {includes} from 'lodash' +import i18n from '@/i18n/index' + +const defaultState = { + uploadingFilesCount: undefined, + fileInfoDetail: undefined, + currentFolder: undefined, + homeDirectory: undefined, + uploadingFileProgress: 0, + filesViewWidth: undefined, + navigation: undefined, + isSearching: false, + browseHistory: [], + isLoading: true, + data: [], +} + +const actions = { + getFolder: (context, [folder, back = false, init = false]) => { + events.$emit('show:content') + + // Go to files view + if (!includes(['Files', 'SharedPage'], router.currentRoute.name)) { + router.push({name: 'Files'}) + } + + context.commit('LOADING_STATE', true) + context.commit('FLUSH_DATA') + + // Clear search + if (context.state.isSearching) { + context.commit('CHANGE_SEARCHING_STATE', false) + events.$emit('clear-query') + } + + // Create current folder for history + let currentFolder = { + name: folder.name, + unique_id: folder.unique_id, + location: folder.deleted_at || folder.location === 'trash' ? 'trash' : 'base' + } + + let url = currentFolder.location === 'trash' + ? '/folders/' + currentFolder.unique_id + '?trash=true' + : '/folders/' + currentFolder.unique_id + + axios + .get(context.getters.api + url) + .then(response => { + context.commit('LOADING_STATE', false) + context.commit('GET_DATA', response.data) + context.commit('STORE_CURRENT_FOLDER', currentFolder) + + events.$emit('scrollTop') + + if (back) { + context.commit('REMOVE_BROWSER_HISTORY') + + } else { + if (!init) context.commit('ADD_BROWSER_HISTORY', currentFolder) + } + }) + .catch(error => { + + // Redirect if unauthenticated + if ([401, 403].includes(error.response.status)) { + + context.commit('SET_AUTHORIZED', false) + router.push({name: 'SignIn'}) + + } else { + + // Show error message + events.$emit('alert:open', { + title: i18n.t('popup_error.title'), + message: i18n.t('popup_error.message'), + }) + } + }) + }, + getShared: (context, back = false) => { + events.$emit('show:content') + + // Go to files view + if (router.currentRoute.name !== 'Files') { + router.push({name: 'Files'}) + } + + if (!back) context.commit('FLUSH_BROWSER_HISTORY') + context.commit('FLUSH_DATA') + context.commit('LOADING_STATE', true) + + // Create shared object for history + let trash = { + name: 'Shared', + unique_id: undefined, + location: 'shared', + } + + axios + .get(context.getters.api + '/shared-all') + .then(response => { + context.commit('GET_DATA', response.data) + context.commit('LOADING_STATE', false) + context.commit('STORE_CURRENT_FOLDER', trash) + context.commit('ADD_BROWSER_HISTORY', trash) + + events.$emit('scrollTop') + }) + .catch(() => { + // Show error message + events.$emit('alert:open', { + title: i18n.t('popup_error.title'), + message: i18n.t('popup_error.message'), + }) + }) + }, + getTrash: (context, back = false) => { + events.$emit('show:content') + + // Go to files view + if (router.currentRoute.name !== 'Files') { + router.push({name: 'Files'}) + } + + if (!back) context.commit('FLUSH_BROWSER_HISTORY') + context.commit('FLUSH_DATA') + context.commit('LOADING_STATE', true) + + // Create trash object for history + let trash = { + name: 'Trash', + unique_id: undefined, + location: 'trash-root', + } + + axios + .get(context.getters.api + '/trash') + .then(response => { + context.commit('GET_DATA', response.data) + context.commit('LOADING_STATE', false) + context.commit('STORE_CURRENT_FOLDER', trash) + context.commit('ADD_BROWSER_HISTORY', trash) + + events.$emit('scrollTop') + }) + .catch(() => { + // Show error message + events.$emit('alert:open', { + title: i18n.t('popup_error.title'), + message: i18n.t('popup_error.message'), + }) + }) + }, + getSearchResult: ({commit, getters}, query) => { + commit('FLUSH_DATA') + commit('LOADING_STATE', true) + commit('CHANGE_SEARCHING_STATE', true) + + // Get route + let route = undefined + + if (getters.sharedDetail && getters.sharedDetail.protected) + route = '/api/search/private' + else if (getters.sharedDetail && !getters.sharedDetail.protected) + route = '/api/search/public/' + router.currentRoute.params.token + else + route = '/api/search' + + axios + .get(route, { + params: {query: query} + }) + .then(response => { + commit('LOADING_STATE', false) + commit('GET_DATA', response.data) + }) + .catch(() => { + // Show error message + events.$emit('alert:open', { + title: i18n.t('popup_error.title'), + message: i18n.t('popup_error.message'), + }) + }) + }, + getFileDetail: (context, file) => { + axios + .get(context.getters.api + '/file-detail/' + file.unique_id) + .then(response => { + context.commit('LOAD_FILEINFO_DETAIL', response.data) + }) + .catch(() => { + // Show error message + events.$emit('alert:open', { + title: i18n.t('popup_error.title'), + message: i18n.t('popup_error.message'), + }) + }) + }, + getFolderTree: ({commit, getters}) => { + + return new Promise((resolve, reject) => { + + // Get route + let route = undefined + + if (getters.sharedDetail && getters.sharedDetail.protected) + route = '/api/navigation/private' + else if (getters.sharedDetail && !getters.sharedDetail.protected) + route = '/api/navigation/public/' + router.currentRoute.params.token + else + route = '/api/navigation' + + axios + .get(route) + .then(response => { + resolve(response) + + commit('UPDATE_FOLDER_TREE', response.data) + }) + .catch((error) => { + reject(error) + + // Show error message + events.$emit('alert:open', { + title: i18n.t('popup_error.title'), + message: i18n.t('popup_error.message'), + }) + }) + }) + }, +} + +const mutations = { + UPDATE_FOLDER_TREE(state, tree) { + state.navigation = tree + }, + LOADING_STATE(state, val) { + state.isLoading = val + }, + SET_START_DIRECTORY(state, directory) { + state.homeDirectory = directory + }, + FLUSH_BROWSER_HISTORY(state) { + state.browseHistory = [] + }, + FLUSH_SHARED(state, unique_id) { + state.data.find(item => { + if (item.unique_id == unique_id) item.shared = undefined + }) + }, + ADD_BROWSER_HISTORY(state, folder) { + state.browseHistory.push(folder) + }, + REMOVE_BROWSER_HISTORY(state) { + state.browseHistory.pop() + }, + CHANGE_ITEM_NAME(state, updatedFile) { + + // Rename filename in file info detail + if (state.fileInfoDetail && state.fileInfoDetail.unique_id == updatedFile.unique_id) { + state.fileInfoDetail = updatedFile + } + + // Rename item name in data view + state.data.find(item => { + if (item.unique_id == updatedFile.unique_id) item.name = updatedFile.name + }) + }, + CLEAR_FILEINFO_DETAIL(state) { + state.fileInfoDetail = undefined + }, + LOAD_FILEINFO_DETAIL(state, item) { + state.fileInfoDetail = item + }, + GET_FILEINFO_DETAIL(state, item) { + state.fileInfoDetail = state.data.find( + el => el.unique_id == item.unique_id + ) + }, + CHANGE_SEARCHING_STATE(state, searchState) { + state.isSearching = searchState + }, + UPLOADING_FILE_PROGRESS(state, percentage) { + state.uploadingFileProgress = percentage + }, + UPDATE_FILE_COUNT_PROGRESS(state, data) { + state.uploadingFilesCount = data + }, + UPDATE_SHARED_ITEM(state, data) { + state.data.find(item => { + if (item.unique_id == data.item_id) item.shared = data + }) + }, + FLUSH_DATA(state) { + state.data = [] + }, + GET_DATA(state, loaded_data) { + state.data = loaded_data + }, + ADD_NEW_FOLDER(state, folder) { + state.data.unshift(folder) + }, + ADD_NEW_ITEMS(state, items) { + state.data = state.data.concat(items) + }, + REMOVE_ITEM(state, unique_id) { + state.data = state.data.filter(el => el.unique_id !== unique_id) + }, + INCREASE_FOLDER_ITEM(state, unique_id) { + state.data.map(el => { + if (el.unique_id && el.unique_id == unique_id) el.items++ + }) + }, + STORE_CURRENT_FOLDER(state, folder) { + state.currentFolder = folder + }, + SET_FILES_VIEW_SIZE(state, type) { + state.filesViewWidth = type + }, +} + +const getters = { + uploadingFileProgress: state => state.uploadingFileProgress, + uploadingFilesCount: state => state.uploadingFilesCount, + fileInfoDetail: state => state.fileInfoDetail, + filesViewWidth: state => state.filesViewWidth, + homeDirectory: state => state.homeDirectory, + currentFolder: state => state.currentFolder, + browseHistory: state => state.browseHistory, + isSearching: state => state.isSearching, + navigation: state => state.navigation, + isLoading: state => state.isLoading, + data: state => state.data, +} + +export default { + state: defaultState, + getters, + actions, + mutations +} diff --git a/resources/js/store/modules/fileFunctions.js b/resources/js/store/modules/fileFunctions.js new file mode 100644 index 00000000..34e5f35f --- /dev/null +++ b/resources/js/store/modules/fileFunctions.js @@ -0,0 +1,190 @@ +import i18n from '@/i18n/index' +import router from '@/router' +import {events} from '@/bus' +import axios from 'axios' + +const actions = { + moveItem: ({commit, getters}, [item_from, to_item]) => { + + // Get route + let route = getters.sharedDetail && ! getters.sharedDetail.protected + ? '/api/move/' + item_from.unique_id + '/public/' + router.currentRoute.params.token + : '/api/move/' + item_from.unique_id + + axios + .patch(route, { + from_type: item_from.type, + to_unique_id: to_item.unique_id + }) + .then(() => { + commit('REMOVE_ITEM', item_from.unique_id) + commit('INCREASE_FOLDER_ITEM', to_item.unique_id) + }) + .catch(() => isSomethingWrong()) + }, + createFolder: ({commit, getters}, folderName) => { + + // Get route + let route = getters.sharedDetail && ! getters.sharedDetail.protected + ? '/api/create-folder/public/' + router.currentRoute.params.token + : '/api/create-folder' + + axios + .post(route, { + parent_id: getters.currentFolder.unique_id, + name: folderName + }) + .then(response => { + commit('ADD_NEW_FOLDER', response.data) + }) + .catch(() => isSomethingWrong()) + }, + renameItem: ({commit, getters}, data) => { + + // Updated name in favourites panel + if (getters.permission === 'master' && data.type === 'folder') + commit('UPDATE_NAME_IN_FAVOURITES', data) + + // Get route + let route = getters.sharedDetail && ! getters.sharedDetail.protected + ? '/api/rename-item/' + data.unique_id + '/public/' + router.currentRoute.params.token + : '/api/rename-item/' + data.unique_id + + axios + .patch(route, { + name: data.name, + type: data.type, + }) + .then(response => { + commit('CHANGE_ITEM_NAME', response.data) + }) + .catch(() => isSomethingWrong()) + }, + uploadFiles: ({commit, getters}, files) => { + return new Promise((resolve, reject) => { + + // Get route + let route = getters.sharedDetail && ! getters.sharedDetail.protected + ? '/api/upload/public/' + router.currentRoute.params.token + : '/api/upload' + + axios + .post(route, files, { + headers: { + 'Content-Type': 'multipart/form-data' + }, + onUploadProgress: progressEvent => { + var percentCompleted = Math.round((progressEvent.loaded * 100) / progressEvent.total) + + commit('UPLOADING_FILE_PROGRESS', percentCompleted) + } + }) + .then(response => { + + // Check if user is in uploading folder, if yes, than show new file + if (response.data.folder_id == getters.currentFolder.unique_id) + commit('ADD_NEW_ITEMS', response.data) + + commit('UPLOADING_FILE_PROGRESS', 0) + + if (getters.permission === 'master') + commit('UPDATE_RECENT_UPLOAD', response.data) + + resolve(response) + }) + .catch(error => { + reject(error) + + // Reset uploader + commit('UPDATE_FILE_COUNT_PROGRESS', undefined) + }) + }) + }, + restoreItem: ({commit, getters}, item) => { + + let restoreToHome = false + + // Check if file can be restored to home directory + if (getters.currentFolder.location === 'trash') + restoreToHome = true + + // Remove file + commit('REMOVE_ITEM', item.unique_id) + + // Remove file preview + commit('CLEAR_FILEINFO_DETAIL') + + axios + .patch(getters.api + '/restore-item/' + item.unique_id, { + type: item.type, + to_home: restoreToHome, + }) + .catch(() => isSomethingWrong()) + }, + deleteItem: ({commit, getters}, data) => { + + // Remove file + commit('REMOVE_ITEM', data.unique_id) + + // Remove item from sidebar + if (getters.permission === 'master') { + + if (data.type === 'folder') + commit('REMOVE_ITEM_FROM_FAVOURITES', data) + else + commit('REMOVE_ITEM_FROM_RECENT_UPLOAD', data.unique_id) + } + + // Remove file preview + commit('CLEAR_FILEINFO_DETAIL') + + // Get route + let route = getters.sharedDetail && ! getters.sharedDetail.protected + ? '/api/remove-item/' + data.unique_id + '/public/' + router.currentRoute.params.token + : '/api/remove-item/' + data.unique_id + + axios + .delete(route, { + data: { + type: data.type, + force_delete: data.deleted_at ? true : false + } + }) + .catch(() => isSomethingWrong()) + }, + emptyTrash: ({commit, getters}) => { + + // Clear file browser + commit('FLUSH_DATA') + commit('LOADING_STATE', true) + + axios + .delete(getters.api + '/empty-trash') + .then(() => { + commit('LOADING_STATE', false) + events.$emit('scrollTop') + + // Remove file preview + commit('CLEAR_FILEINFO_DETAIL') + + // Show success message + events.$emit('success:open', { + title: i18n.t('popup_trashed.title'), + message: i18n.t('popup_trashed.message'), + }) + }) + .catch(() => isSomethingWrong()) + }, +} + +// Show error message +function isSomethingWrong() { + events.$emit('alert:open', { + title: i18n.t('popup_error.title'), + message: i18n.t('popup_error.message'), + }) +} + +export default { + actions, +} diff --git a/resources/js/store/modules/filesView.js b/resources/js/store/modules/filesView.js deleted file mode 100644 index 3cb93487..00000000 --- a/resources/js/store/modules/filesView.js +++ /dev/null @@ -1,482 +0,0 @@ -import axios from 'axios' -import {events} from '@/bus' -import i18n from '@/i18n/index.js' - -const defaultState = { - fileInfoPanelVisible: localStorage.getItem('file_info_visibility') == 'true' || false, - preview_type: localStorage.getItem('preview_type') || 'list', - uploadingFilesCount: undefined, - fileInfoDetail: undefined, - currentFolder: undefined, - homeDirectory: undefined, - uploadingFileProgress: 0, - filesViewWidth: undefined, - isSearching: false, - browseHistory: [], - isLoading: true, - data: [], -} - -const actions = { - goToFolder: (context, [folder, back = false, init = false]) => { - events.$emit('show:content') - - // Go to files view - if (context.getters.currentView !== 'files') { - context.commit('SET_CURRENT_VIEW', 'files') - } - - context.commit('LOADING_STATE', true) - context.commit('FLUSH_DATA') - - // Clear search - if (context.state.isSearching) { - context.commit('CHANGE_SEARCHING_STATE', false) - events.$emit('clear-query') - } - - // Create current folder for history - let currentFolder = { - name: folder.name, - unique_id: folder.unique_id, - location: folder.deleted_at || folder.location === 'trash' ? 'trash' : 'base' - } - - let url = currentFolder.location === 'trash' ?'/folder/' + currentFolder.unique_id + '?trash=true' : '/folder/' + currentFolder.unique_id - - axios - .get(context.getters.api + url) - .then(response => { - context.commit('LOADING_STATE', false) - context.commit('GET_DATA', response.data) - context.commit('STORE_CURRENT_FOLDER', currentFolder) - - events.$emit('scrollTop') - - if (back) { - context.commit('REMOVE_BROWSER_HISTORY') - - } else { - if (!init) context.commit('ADD_BROWSER_HISTORY', currentFolder) - } - }) - .catch(() => { - // Show error message - events.$emit('alert:open', { - title: i18n.t('popup_error.title'), - message: i18n.t('popup_error.message'), - }) - }) - }, - getTrash: (context, back = false) => { - events.$emit('show:content') - - // Go to files view - if (context.getters.currentView !== 'files') { - context.commit('SET_CURRENT_VIEW', 'files') - } - - if (! back) context.commit('FLUSH_BROWSER_HISTORY') - context.commit('FLUSH_DATA') - context.commit('LOADING_STATE', true) - - // Create trash object for history - let trash = { - name: 'Trash', - unique_id: undefined, - location: 'trash-root', - } - - axios - .get(context.getters.api + '/trash') - .then(response => { - context.commit('GET_DATA', response.data) - context.commit('LOADING_STATE', false) - context.commit('STORE_CURRENT_FOLDER', trash) - context.commit('ADD_BROWSER_HISTORY', trash) - - events.$emit('scrollTop') - }) - .catch(() => { - // Show error message - events.$emit('alert:open', { - title: i18n.t('popup_error.title'), - message: i18n.t('popup_error.message'), - }) - }) - }, - emptyTrash: (context) => { - context.commit('FLUSH_DATA') - context.commit('LOADING_STATE', true) - - axios - .delete(context.getters.api + '/empty-trash') - .then(() => { - context.commit('LOADING_STATE', false) - events.$emit('scrollTop') - - // Remove file preview - context.commit('CLEAR_FILEINFO_DETAIL') - - // Show error message - events.$emit('success:open', { - title: i18n.t('popup_trashed.title'), - message: i18n.t('popup_trashed.message'), - }) - }) - .catch(() => { - // Show error message - events.$emit('alert:open', { - title: i18n.t('popup_error.title'), - message: i18n.t('popup_error.message'), - }) - }) - }, - createFolder: (context, folderName) => { - const parent_id = context.state.currentFolder - ? context.state.currentFolder.unique_id - : 0 - - axios - .post(context.getters.api + '/create-folder', { - parent_id: parent_id, - name: folderName - }) - .then(response => { - context.commit('ADD_NEW_FOLDER', response.data) - }) - .catch(() => { - // Show error message - events.$emit('alert:open', { - title: i18n.t('popup_error.title'), - message: i18n.t('popup_error.message'), - }) - }) - }, - removeItems: (context, [ids, items]) => { - context.commit('REMOVE_ITEMS', ids) - - // Remove file preview - context.commit('CLEAR_FILEINFO_DETAIL') - - axios - .post(context.getters.api + '/remove-items', { - items: items - }) - .catch(() => { - // Show error message - events.$emit('alert:open', { - title: i18n.t('popup_error.title'), - message: i18n.t('popup_error.message'), - }) - }) - }, - removeItem: ({commit, state, getters}, data) => { - - // Remove file - commit('REMOVE_ITEM', data.unique_id) - - if (data.type === 'file' || data.type === 'image') - commit('REMOVE_ITEM_FROM_RECENT_UPLOAD', data.unique_id) - if (data.type === 'folder') - commit('REMOVE_ITEM_FROM_FAVOURITES', data) - - // Remove file preview - commit('CLEAR_FILEINFO_DETAIL') - - axios - .post(getters.api + '/remove-item', { - type: data.type, - unique_id: data.unique_id, - force_delete: data.deleted_at ? true : false - }) - .catch(() => { - // Show error message - events.$emit('alert:open', { - title: i18n.t('popup_error.title'), - message: i18n.t('popup_error.message'), - }) - }) - }, - restoreItem: (context, item) => { - - let restoreToHome = false - - // Check if file can be restored to home directory - if (context.state.currentFolder.location === 'trash') restoreToHome = true - - // Remove file - context.commit('REMOVE_ITEM', item.unique_id) - - // Remove file preview - context.commit('CLEAR_FILEINFO_DETAIL') - - axios - .post(context.getters.api + '/restore-item', { - type: item.type, - unique_id: item.unique_id, - to_home: restoreToHome, - }) - .catch(() => { - // Show error message - events.$emit('alert:open', { - title: i18n.t('popup_error.title'), - message: i18n.t('popup_error.message'), - }) - }) - }, - uploadFiles: (context, files) => { - return new Promise((resolve, reject) => { - axios - .post(context.getters.api + '/upload-file', files, { - headers: { - 'Content-Type': 'multipart/form-data' - }, - onUploadProgress: progressEvent => { - var percentCompleted = Math.round( - (progressEvent.loaded * 100) / - progressEvent.total - ) - - context.commit( - 'UPLOADING_FILE_PROGRESS', - percentCompleted - ) - } - }) - .then(response => { - - // Check if user is in uploading folder, if yes, than show new file - if (response.data.folder_id == context.state.currentFolder.unique_id) - context.commit('ADD_NEW_ITEMS', response.data) - - context.commit('UPDATE_RECENT_UPLOAD', response.data) - context.commit( - 'UPLOADING_FILE_PROGRESS', - 0 - ) - resolve(response) - }) - .catch(error => { - reject(error) - - context.commit('UPDATE_FILE_COUNT_PROGRESS', undefined) - }) - }) - }, - changeItemName: (context, data) => { - - - if (data.type === 'folder') context.commit('UPDATE_NAME_IN_FAVOURITES', data) - - axios - .post(context.getters.api + '/rename-item', data) - .then(response => { - context.commit('CHANGE_ITEM_NAME', response.data) - }) - .catch(() => { - // Show error message - events.$emit('alert:open', { - title: i18n.t('popup_error.title'), - message: i18n.t('popup_error.message'), - }) - }) - }, - getSearchResult: (context, query) => { - context.commit('FLUSH_DATA') - context.commit('LOADING_STATE', true) - context.commit('CHANGE_SEARCHING_STATE', true) - - axios - .get(context.getters.api + '/search', { - params: {query: query} - }) - .then(response => { - context.commit('LOADING_STATE', false) - context.commit('GET_DATA', response.data) - }) - .catch(() => { - // Show error message - events.$emit('alert:open', { - title: i18n.t('popup_error.title'), - message: i18n.t('popup_error.message'), - }) - }) - }, - changePreviewType: ({commit, dispatch, state}) => { - // Get preview type - let previewType = localStorage.getItem('preview_type') == 'grid' ? 'list' : 'grid' - - // Store preview type to localStorage - localStorage.setItem('preview_type', previewType) - - // Change preview - commit('CHANGE_PREVIEW', previewType) - - if (state.currentFolder.location === 'trash-root') { - dispatch('getTrash') - - } else { - dispatch('goToFolder', [state.currentFolder, false, true]) - } - }, - fileInfoToggle: (context, visibility = undefined) => { - if (!visibility) { - if (context.state.fileInfoPanelVisible) { - context.commit('FILE_INFO_TOGGLE', false) - } else { - context.commit('FILE_INFO_TOGGLE', true) - } - } else { - context.commit('FILE_INFO_TOGGLE', visibility) - } - }, - getLatestUploadDetail: (context, file) => { - axios - .get(context.getters.api + '/file-detail/' + file.unique_id) - .then(response => { - context.commit('LOAD_FILEINFO_DETAIL', response.data) - }) - .catch(() => { - // Show error message - events.$emit('alert:open', { - title: i18n.t('popup_error.title'), - message: i18n.t('popup_error.message'), - }) - }) - }, - loadFileInfoDetail: (context, file) => { - - context.commit('GET_FILEINFO_DETAIL', file) - }, - moveItem: (context, [item_from, to_item]) => { - axios - .post(context.getters.api + '/move-item', { - from_unique_id: item_from.unique_id, - from_type: item_from.type, - to_unique_id: to_item.unique_id - }) - .then(() => { - context.commit('REMOVE_ITEM', item_from.unique_id) - context.commit('INCREASE_FOLDER_ITEM', to_item.unique_id) - }) - .catch(() => { - // Show error message - events.$emit('alert:open', { - title: i18n.t('popup_error.title'), - message: i18n.t('popup_error.message'), - }) - }) - } -} - -const mutations = { - LOADING_STATE(state, val) { - state.isLoading = val - }, - SET_START_DIRECTORY(state, directory) { - state.homeDirectory = directory - }, - FLUSH_BROWSER_HISTORY(state) { - state.browseHistory = [] - }, - ADD_BROWSER_HISTORY(state, folder) { - state.browseHistory.push(folder) - }, - REMOVE_BROWSER_HISTORY(state) { - state.browseHistory.pop() - }, - CHANGE_ITEM_NAME(state, updatedFile) { - - // Rename filename in file info detail - if (state.fileInfoDetail && state.fileInfoDetail.unique_id == updatedFile.unique_id) { - state.fileInfoDetail = updatedFile - } - - // Rename item name in data view - state.data.find(item => { - if (item.unique_id == updatedFile.unique_id) item.name = updatedFile.name - }) - }, - CLEAR_FILEINFO_DETAIL(state) { - state.fileInfoDetail = undefined - }, - LOAD_FILEINFO_DETAIL(state, item) { - state.fileInfoDetail = item - }, - GET_FILEINFO_DETAIL(state, item) { - state.fileInfoDetail = state.data.find( - el => el.unique_id == item.unique_id - ) - }, - FILE_INFO_TOGGLE(state, isVisible) { - state.fileInfoPanelVisible = isVisible - - localStorage.setItem('file_info_visibility', isVisible) - }, - CHANGE_PREVIEW(state, type) { - state.preview_type = type - }, - CHANGE_SEARCHING_STATE(state, searchState) { - state.isSearching = searchState - }, - UPLOADING_FILE_PROGRESS(state, percentage) { - state.uploadingFileProgress = percentage - }, - UPDATE_FILE_COUNT_PROGRESS(state, data) { - state.uploadingFilesCount = data - }, - FLUSH_DATA(state) { - state.data = [] - }, - GET_DATA(state, loaded_data) { - state.data = loaded_data - }, - ADD_NEW_FOLDER(state, folder) { - state.data.unshift(folder) - }, - ADD_NEW_ITEMS(state, items) { - state.data = state.data.concat(items) - }, - REMOVE_ITEMS(state, ids) { - state.data = state.data.filter( - el => -1 == ids.indexOf(el.unique_id) - ) - }, - REMOVE_ITEM(state, unique_id) { - state.data = state.data.filter(el => el.unique_id !== unique_id) - }, - INCREASE_FOLDER_ITEM(state, unique_id) { - state.data.map(el => { - if (el.unique_id && el.unique_id == unique_id) el.items++ - }) - }, - STORE_CURRENT_FOLDER(state, folder) { - state.currentFolder = folder - }, - SET_FILES_VIEW_SIZE(state, type) { - state.filesViewWidth = type - }, -} - -const getters = { - uploadingFileProgress: state => state.uploadingFileProgress, - uploadingFilesCount: state => state.uploadingFilesCount, - fileInfoVisible: state => state.fileInfoPanelVisible, - fileInfoDetail: state => state.fileInfoDetail, - filesViewWidth: state => state.filesViewWidth, - homeDirectory: state => state.homeDirectory, - currentFolder: state => state.currentFolder, - browseHistory: state => state.browseHistory, - preview_type: state => state.preview_type, - isSearching: state => state.isSearching, - isLoading: state => state.isLoading, - data: state => state.data, -} - -export default { - state: defaultState, - getters, - actions, - mutations -} diff --git a/resources/js/store/modules/sharing.js b/resources/js/store/modules/sharing.js new file mode 100644 index 00000000..e522436c --- /dev/null +++ b/resources/js/store/modules/sharing.js @@ -0,0 +1,106 @@ +import i18n from '@/i18n/index' +import router from '@/router' +import {events} from '@/bus' +import axios from 'axios' + +const defaultState = { + permissionOptions: [ + { + label: i18n.t('shared.editor'), + value: 'editor', + icon: 'user-edit', + }, + { + label: i18n.t('shared.visitor'), + value: 'visitor', + icon: 'user', + }, + ], + sharedDetail: undefined, + sharedFile: undefined, +} +const actions = { + browseShared: ({commit, state, getters}, [folder, back = false, init = false]) => { + commit('LOADING_STATE', true) + commit('FLUSH_DATA') + + // Clear search + if (getters.isSearching) { + commit('CHANGE_SEARCHING_STATE', false) + events.$emit('clear-query') + } + + // Create current folder for history + let currentFolder = { + name: folder.name, + unique_id: folder.unique_id, + location: 'public' + } + + let route = getters.sharedDetail.protected + ? '/api/folders/' + currentFolder.unique_id + '/private' + : '/api/folders/' + currentFolder.unique_id + '/public/' + router.currentRoute.params.token +'/' + + return new Promise((resolve, reject) => { + axios + .get(route) + .then(response => { + + commit('LOADING_STATE', false) + commit('GET_DATA', response.data) + commit('STORE_CURRENT_FOLDER', currentFolder) + events.$emit('scrollTop') + + if (back) { + commit('REMOVE_BROWSER_HISTORY') + + } else { + if (!init) + commit('ADD_BROWSER_HISTORY', currentFolder) + } + + resolve(response) + }) + .catch((error) => { + // Show error message + events.$emit('alert:open', { + title: i18n.t('popup_error.title'), + message: i18n.t('popup_error.message'), + }) + + reject(error) + }) + }) + }, + getSingleFile: ({commit, state}) => { + + let route = state.sharedDetail.protected + ? '/api/files/private' + : '/api/files/' + router.currentRoute.params.token + '/public' + + axios.get(route) + .then(response => { + commit('STORE_SHARED_FILE', response.data) + }) + }, +} +const mutations = { + SET_SHARED_DETAIL(state, data) { + state.sharedDetail = data + }, + STORE_SHARED_FILE(state, data) { + state.sharedFile = data + } +} +const getters = { + permissionOptions: state => state.permissionOptions, + sharedDetail: state => state.sharedDetail, + sharedFile: state => state.sharedFile, +} + +export default { + state: defaultState, + getters, + actions, + mutations +} diff --git a/resources/js/store/modules/userAuth.js b/resources/js/store/modules/userAuth.js index 4cdad741..aa18abd2 100644 --- a/resources/js/store/modules/userAuth.js +++ b/resources/js/store/modules/userAuth.js @@ -1,13 +1,16 @@ import axios from 'axios' import {events} from '@/bus' import i18n from '@/i18n/index.js' +import router from '@/router' const defaultState = { authorized: undefined, + permission: 'master', // master | editor | visitor app: undefined, } + const actions = { - getAppData: ({commit, dispatch, getters}) => { + getAppData: ({commit, getters}) => { axios .get(getters.api + '/user') @@ -16,8 +19,11 @@ const actions = { }).catch((error) => { - if (error.response.status == 401) { + // Redirect if unauthenticated + if ([401, 403].includes(error.response.status)) { + commit('SET_AUTHORIZED', false) + router.push({name: 'SignIn'}) } } ) @@ -29,7 +35,8 @@ const actions = { // Commit Remove Access Token from vuex storage commit('DESTROY_DATA') - commit('SET_CURRENT_VIEW', 'files') + + router.push({name: 'SignIn'}) }) }, addToFavourites: (context, folder) => { @@ -38,7 +45,9 @@ const actions = { context.commit('ADD_TO_FAVOURITES', folder) axios - .post(context.getters.api + '/add-to-favourites', {unique_id: folder.unique_id}) + .post(context.getters.api + '/folders/favourites', { + unique_id: folder.unique_id + }) .catch(() => { // Show error message events.$emit('alert:open', { @@ -53,7 +62,7 @@ const actions = { context.commit('REMOVE_ITEM_FROM_FAVOURITES', folder) axios - .post(context.getters.api + '/remove-from-favourites', {unique_id: folder.unique_id}) + .delete(context.getters.api + '/folders/favourites/' + folder.unique_id) .catch(() => { // Show error message events.$emit('alert:open', { @@ -62,35 +71,14 @@ const actions = { }) }) }, - getFolderTree: (context) => { - return new Promise((resolve, reject) => { - axios - .get(context.getters.api + '/folder-tree') - .then(response => { - resolve(response) - - context.commit('UPDATE_FOLDER_TREE', response.data) - }) - .catch((error) => { - reject(error) - - // Show error message - events.$emit('alert:open', { - title: i18n.t('popup_error.title'), - message: i18n.t('popup_error.message'), - }) - }) - }) - - - }, } + const mutations = { RETRIEVE_APP_DATA(state, app) { state.app = app }, - UPDATE_FOLDER_TREE(state, tree) { - state.app.folders = tree + SET_PERMISSION(state, role) { + state.permission = role }, SET_AUTHORIZED(state, data) { state.authorized = data @@ -132,9 +120,11 @@ const mutations = { }) } } + const getters = { - isLogged: state => state.authorized, + permission: state => state.permission, isGuest: state => ! state.authorized, + isLogged: state => state.authorized, app: state => state.app, } diff --git a/resources/js/views/Auth/CreateNewPassword.vue b/resources/js/views/Auth/CreateNewPassword.vue new file mode 100644 index 00000000..3c5d71f6 --- /dev/null +++ b/resources/js/views/Auth/CreateNewPassword.vue @@ -0,0 +1,177 @@ + + + + + diff --git a/resources/js/views/Auth/ForgottenPassword.vue b/resources/js/views/Auth/ForgottenPassword.vue new file mode 100644 index 00000000..a5b7218a --- /dev/null +++ b/resources/js/views/Auth/ForgottenPassword.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/resources/js/views/Auth/SignIn.vue b/resources/js/views/Auth/SignIn.vue new file mode 100644 index 00000000..497c2d8f --- /dev/null +++ b/resources/js/views/Auth/SignIn.vue @@ -0,0 +1,193 @@ + + + + + diff --git a/resources/js/views/Auth/SignUp.vue b/resources/js/views/Auth/SignUp.vue new file mode 100644 index 00000000..eec2cd05 --- /dev/null +++ b/resources/js/views/Auth/SignUp.vue @@ -0,0 +1,157 @@ + + + + + diff --git a/resources/js/components/VueFileManagerComponents/FilesView.vue b/resources/js/views/Files.vue similarity index 80% rename from resources/js/components/VueFileManagerComponents/FilesView.vue rename to resources/js/views/Files.vue index 67adb4e2..b1da922e 100644 --- a/resources/js/components/VueFileManagerComponents/FilesView.vue +++ b/resources/js/views/Files.vue @@ -1,16 +1,15 @@ + + diff --git a/resources/js/views/Shared/SharedPage.vue b/resources/js/views/Shared/SharedPage.vue new file mode 100644 index 00000000..87e2c46e --- /dev/null +++ b/resources/js/views/Shared/SharedPage.vue @@ -0,0 +1,290 @@ + + + + + diff --git a/resources/lang/en/vuefilemanager.php b/resources/lang/en/vuefilemanager.php index a725eb0c..ed904b80 100644 --- a/resources/lang/en/vuefilemanager.php +++ b/resources/lang/en/vuefilemanager.php @@ -1,7 +1,8 @@ 'We can\'t find a user with that e-mail address.', - 'home' => 'Home', - 'time' => '%d. %B. %Y at %H:%M', - ]; \ No newline at end of file +return [ + 'user_not_fount' => 'We can\'t find a user with that e-mail address.', + 'home' => 'Home', + 'time' => '%d. %B. %Y at %H:%M', + 'incorrect_password' => 'Sorry, your password is incorrect.', +]; \ No newline at end of file diff --git a/resources/lang/sk/vuefilemanager.php b/resources/lang/sk/vuefilemanager.php index b276a5d0..e1a78f13 100644 --- a/resources/lang/sk/vuefilemanager.php +++ b/resources/lang/sk/vuefilemanager.php @@ -1,7 +1,8 @@ 'Uživateľ s touto emailovou adresou sa nenašiel.', - 'home' => 'Domov', - 'time' => '%d. %B. %Y o %H:%M', + 'user_not_fount' => 'Uživateľ s touto emailovou adresou sa nenašiel.', + 'home' => 'Domov', + 'time' => '%d. %B. %Y o %H:%M', + 'incorrect_password' => 'Prepáč, zadané heslo je nesprávne', ]; \ No newline at end of file diff --git a/resources/sass/app.scss b/resources/sass/app.scss index f3c31d3c..80fa3b82 100644 --- a/resources/sass/app.scss +++ b/resources/sass/app.scss @@ -5,3 +5,13 @@ @import 'vue-file-manager/_variables'; @import 'vue-file-manager/_mixins'; //@import 'vue-file-manager/_forms'; + +#application-wrapper { + display: flex; + height: 100%; + + #content { + position: relative; + width: 100%; + } +} \ No newline at end of file diff --git a/resources/sass/vue-file-manager/_auth.scss b/resources/sass/vue-file-manager/_auth.scss new file mode 100644 index 00000000..0262d531 --- /dev/null +++ b/resources/sass/vue-file-manager/_auth.scss @@ -0,0 +1,110 @@ +.auth-form { + text-align: center; + max-width: 600px; + padding: 25px 20px; + display: table-cell; + vertical-align: middle; + + input { + min-width: 310px; + } + + .additional-link { + + a { + font-weight: 700; + text-decoration: none; + } + } + + .user-avatar { + width: 100px; + height: 100px; + object-fit: cover; + margin-bottom: 20px; + border-radius: 8px; + box-shadow: 0 10px 30px rgba(25, 54, 60, 0.2); + } + + .logo { + width: 120px; + margin-bottom: 20px; + } + + h1 { + @include font-size(34); + font-weight: 800; + line-height: 1.2; + margin-bottom: 2px; + color: $text; + } + + h2 { + @include font-size(23); + font-weight: 500; + margin-bottom: 50px; + color: $text; + } + + .block-form { + margin-left: auto; + margin-right: auto; + + .block-wrapper label { + text-align: right; + } + } +} + +@media only screen and (min-width: 690px) and (max-width: 960px) { + + .auth-form { + padding-left: 20%; + padding-right: 20%; + } +} + +@media only screen and (max-width: 690px) { + + .auth-form { + width: 100%; + + h1 { + @include font-size(30); + } + + h2 { + @include font-size(21); + } + } +} + +@media only screen and (max-width: 490px) { + + .auth-form { + h1 { + @include font-size(22); + } + + h2 { + @include font-size(18); + } + + input { + min-width: initial; + } + + .additional-link { + @include font-size(15); + } + } +} + +@media (prefers-color-scheme: dark) { + .auth-form { + + h1, h2, .additional-link { + color: $dark_mode_text_primary; + } + } +} \ No newline at end of file diff --git a/resources/sass/vue-file-manager/_forms.scss b/resources/sass/vue-file-manager/_forms.scss index f6df2ac2..bbb2ac75 100644 --- a/resources/sass/vue-file-manager/_forms.scss +++ b/resources/sass/vue-file-manager/_forms.scss @@ -79,7 +79,7 @@ input[type="email"] { appearance: none; font-weight: 700; outline: 0; - min-width: 310px; + width: 100%; &.is-error { border-color: $danger; diff --git a/resources/sass/vue-file-manager/_inapp-forms.scss b/resources/sass/vue-file-manager/_inapp-forms.scss new file mode 100644 index 00000000..fff8fdb5 --- /dev/null +++ b/resources/sass/vue-file-manager/_inapp-forms.scss @@ -0,0 +1,63 @@ +// Forms +.form-wrapper { + padding: 0 20px; +} + +.input-wrapper { + margin-bottom: 20px; + + &:last-child { + margin-bottom: 0; + } + + input { + width: 100%; + color: $text; + + &.is-error { + border-color: $danger; + box-shadow: 0 0 7px rgba($danger, 0.3); + } + } +} + +.inline-wrapper { + display: flex; + align-items: center; + justify-content: space-between; + + &.icon-append { + + .input-text { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + + .icon { + background: $theme; + padding: 14px 18px; + border-top-right-radius: 8px; + border-bottom-right-radius: 8px; + @include font-size(16); + text-align: center; + + svg path { + fill: white; + } + } + } +} + +.input-label { + @include font-size(15); + color: $text; + font-weight: 700; + margin-bottom: 5px; + display: block; +} + +@media (prefers-color-scheme: dark) { + .input-label { + color: $dark_mode_text_primary; + } +} \ No newline at end of file diff --git a/resources/sass/vue-file-manager/_variables.scss b/resources/sass/vue-file-manager/_variables.scss index 4c5c6ca2..58070843 100755 --- a/resources/sass/vue-file-manager/_variables.scss +++ b/resources/sass/vue-file-manager/_variables.scss @@ -2,20 +2,21 @@ $text: #1b2539; $text-muted: #667b90; -$light_mode_border: rgba(0, 0, 0, 0.02); $theme: #00BC7E; -$danger: #d22323; + +$light_mode_border: rgba(0, 0, 0, 0.02); +$danger: #fd397a; $light_text: #A4ADB6; $light_background: #f6f6f6; $dark_background: #EBEBEB; $shadow: 0 7px 25px 1px rgba(0, 0, 0, 0.12); -$light_mode_popup_shadow: 0 10px 50px rgba(0, 0, 0, .10); -$light_mode_vignette: rgba(255, 255, 255, 0.80); +$light_mode_popup_shadow: 0 15px 50px 10px rgba(26,38,74,0.12); +$light_mode_vignette: rgba(9, 8, 12, 0.15); // Dark Mode $dark_mode_vignette: rgba(0, 0, 0, 0.3); $dark_mode_background: #1a1f25; -$dark_mode_foreground: #1c222d; +$dark_mode_foreground: #202733; $dark_mode_text_primary: #B8C4D0; $dark_mode_text_secondary: #667b90; $dark_mode_vignette: rgba(22, 23, 27, 0.70); diff --git a/resources/views/index.blade.php b/resources/views/index.blade.php index 70352214..6e47ac37 100644 --- a/resources/views/index.blade.php +++ b/resources/views/index.blade.php @@ -3,8 +3,7 @@ - + VueFileManager | Make your own Private Cloud with VueFileManager client powered by Laravel and Vue @@ -19,6 +18,7 @@ +