Showing preview only (1,356K chars total). Download the full file or copy to clipboard to get everything.
Repository: neoighodaro-articles/e-commerce-laravel-vue
Branch: master
Commit: 6549e998883d
Files: 103
Total size: 1.3 MB
Directory structure:
gitextract__7t7vs8o/
├── .gitattributes
├── .gitignore
├── app/
│ ├── Console/
│ │ └── Kernel.php
│ ├── Exceptions/
│ │ └── Handler.php
│ ├── Http/
│ │ ├── Controllers/
│ │ │ ├── Auth/
│ │ │ │ ├── ForgotPasswordController.php
│ │ │ │ ├── LoginController.php
│ │ │ │ ├── RegisterController.php
│ │ │ │ └── ResetPasswordController.php
│ │ │ ├── Controller.php
│ │ │ ├── OrderController.php
│ │ │ ├── ProductController.php
│ │ │ └── UserController.php
│ │ ├── Kernel.php
│ │ └── Middleware/
│ │ ├── EncryptCookies.php
│ │ ├── RedirectIfAuthenticated.php
│ │ ├── TrimStrings.php
│ │ ├── TrustProxies.php
│ │ └── VerifyCsrfToken.php
│ ├── Order.php
│ ├── Product.php
│ ├── Providers/
│ │ ├── AppServiceProvider.php
│ │ ├── AuthServiceProvider.php
│ │ ├── BroadcastServiceProvider.php
│ │ ├── EventServiceProvider.php
│ │ └── RouteServiceProvider.php
│ └── User.php
├── artisan
├── bootstrap/
│ ├── app.php
│ └── cache/
│ └── .gitignore
├── composer.json
├── config/
│ ├── app.php
│ ├── auth.php
│ ├── broadcasting.php
│ ├── cache.php
│ ├── database.php
│ ├── filesystems.php
│ ├── hashing.php
│ ├── logging.php
│ ├── mail.php
│ ├── queue.php
│ ├── services.php
│ ├── session.php
│ └── view.php
├── database/
│ ├── .gitignore
│ ├── factories/
│ │ └── UserFactory.php
│ ├── migrations/
│ │ ├── 2014_10_12_000000_create_users_table.php
│ │ ├── 2014_10_12_100000_create_password_resets_table.php
│ │ ├── 2018_04_07_050507_create_products_table.php
│ │ └── 2018_04_07_050555_create_orders_table.php
│ └── seeds/
│ ├── DatabaseSeeder.php
│ ├── ProductTableSeeder.php
│ └── UserTableSeeder.php
├── package.json
├── phpunit.xml
├── public/
│ ├── .htaccess
│ ├── css/
│ │ └── app.css
│ ├── index.php
│ ├── js/
│ │ ├── app.js
│ │ └── bootstrap.js
│ ├── mix-manifest.json
│ └── robots.txt
├── readme.md
├── resources/
│ ├── assets/
│ │ ├── js/
│ │ │ ├── app.js
│ │ │ ├── bootstrap.js
│ │ │ ├── components/
│ │ │ │ ├── ExampleComponent.vue
│ │ │ │ └── admin/
│ │ │ │ ├── Main.vue
│ │ │ │ ├── Orders.vue
│ │ │ │ ├── ProductModal.vue
│ │ │ │ ├── Products.vue
│ │ │ │ └── Users.vue
│ │ │ └── views/
│ │ │ ├── Admin.vue
│ │ │ ├── App.vue
│ │ │ ├── Checkout.vue
│ │ │ ├── Confirmation.vue
│ │ │ ├── Home.vue
│ │ │ ├── Login.vue
│ │ │ ├── Register.vue
│ │ │ ├── SingleProduct.vue
│ │ │ └── UserBoard.vue
│ │ └── sass/
│ │ ├── _variables.scss
│ │ └── app.scss
│ ├── lang/
│ │ └── en/
│ │ ├── auth.php
│ │ ├── pagination.php
│ │ ├── passwords.php
│ │ └── validation.php
│ └── views/
│ └── landing.blade.php
├── routes/
│ ├── api.php
│ ├── channels.php
│ ├── console.php
│ └── web.php
├── server.php
├── storage/
│ ├── app/
│ │ └── .gitignore
│ ├── framework/
│ │ ├── .gitignore
│ │ ├── cache/
│ │ │ └── .gitignore
│ │ ├── sessions/
│ │ │ └── .gitignore
│ │ ├── testing/
│ │ │ └── .gitignore
│ │ └── views/
│ │ └── .gitignore
│ └── logs/
│ └── .gitignore
├── tests/
│ ├── CreatesApplication.php
│ ├── Feature/
│ │ └── ExampleTest.php
│ ├── TestCase.php
│ └── Unit/
│ └── ExampleTest.php
└── webpack.mix.js
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitattributes
================================================
* text=auto
*.css linguist-vendored
*.scss linguist-vendored
*.js linguist-vendored
CHANGELOG.md export-ignore
================================================
FILE: .gitignore
================================================
/node_modules
/public/hot
/public/storage
/storage/*.key
/vendor
/.idea
/.vscode
/.vagrant
/database/database.sqlite
Homestead.json
Homestead.yaml
npm-debug.log
yarn-error.log
.env
================================================
FILE: app/Console/Kernel.php
================================================
<?php
namespace App\Console;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
{
/**
* The Artisan commands provided by your application.
*
* @var array
*/
protected $commands = [
//
];
/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
// $schedule->command('inspire')
// ->hourly();
}
/**
* Register the commands for the application.
*
* @return void
*/
protected function commands()
{
$this->load(__DIR__.'/Commands');
require base_path('routes/console.php');
}
}
================================================
FILE: app/Exceptions/Handler.php
================================================
<?php
namespace App\Exceptions;
use Exception;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
class Handler extends ExceptionHandler
{
/**
* A list of the exception types that are not reported.
*
* @var array
*/
protected $dontReport = [
//
];
/**
* A list of the inputs that are never flashed for validation exceptions.
*
* @var array
*/
protected $dontFlash = [
'password',
'password_confirmation',
];
/**
* Report or log an exception.
*
* @param \Exception $exception
* @return void
*/
public function report(Exception $exception)
{
parent::report($exception);
}
/**
* Render an exception into an HTTP response.
*
* @param \Illuminate\Http\Request $request
* @param \Exception $exception
* @return \Illuminate\Http\Response
*/
public function render($request, Exception $exception)
{
return parent::render($request, $exception);
}
}
================================================
FILE: app/Http/Controllers/Auth/ForgotPasswordController.php
================================================
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
class ForgotPasswordController extends Controller
{
/*
|--------------------------------------------------------------------------
| Password Reset Controller
|--------------------------------------------------------------------------
|
| This controller is responsible for handling password reset emails and
| includes a trait which assists in sending these notifications from
| your application to your users. Feel free to explore this trait.
|
*/
use SendsPasswordResetEmails;
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest');
}
}
================================================
FILE: app/Http/Controllers/Auth/LoginController.php
================================================
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
class LoginController extends Controller
{
/*
|--------------------------------------------------------------------------
| Login Controller
|--------------------------------------------------------------------------
|
| This controller handles authenticating users for the application and
| redirecting them to your home screen. The controller uses a trait
| to conveniently provide its functionality to your applications.
|
*/
use AuthenticatesUsers;
/**
* Where to redirect users after login.
*
* @var string
*/
protected $redirectTo = '/home';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest')->except('logout');
}
}
================================================
FILE: app/Http/Controllers/Auth/RegisterController.php
================================================
<?php
namespace App\Http\Controllers\Auth;
use App\User;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use Illuminate\Foundation\Auth\RegistersUsers;
class RegisterController extends Controller
{
/*
|--------------------------------------------------------------------------
| Register Controller
|--------------------------------------------------------------------------
|
| This controller handles the registration of new users as well as their
| validation and creation. By default this controller uses a trait to
| provide this functionality without requiring any additional code.
|
*/
use RegistersUsers;
/**
* Where to redirect users after registration.
*
* @var string
*/
protected $redirectTo = '/home';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest');
}
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return \Illuminate\Contracts\Validation\Validator
*/
protected function validator(array $data)
{
return Validator::make($data, [
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:6|confirmed',
]);
}
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return \App\User
*/
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
}
}
================================================
FILE: app/Http/Controllers/Auth/ResetPasswordController.php
================================================
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ResetsPasswords;
class ResetPasswordController extends Controller
{
/*
|--------------------------------------------------------------------------
| Password Reset Controller
|--------------------------------------------------------------------------
|
| This controller is responsible for handling password reset requests
| and uses a simple trait to include this behavior. You're free to
| explore this trait and override any methods you wish to tweak.
|
*/
use ResetsPasswords;
/**
* Where to redirect users after resetting their password.
*
* @var string
*/
protected $redirectTo = '/home';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest');
}
}
================================================
FILE: app/Http/Controllers/Controller.php
================================================
<?php
namespace App\Http\Controllers;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
class Controller extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
}
================================================
FILE: app/Http/Controllers/OrderController.php
================================================
<?php
namespace App\Http\Controllers;
use App\Order;
use Auth;
use Illuminate\Http\Request;
class OrderController extends Controller
{
public function index()
{
return response()->json(Order::with(['product'])->get(),200);
}
public function deliverOrder(Order $order)
{
$order->is_delivered = true;
$status = $order->save();
return response()->json([
'status' => $status,
'data' => $order,
'message' => $status ? 'Order Delivered!' : 'Error Delivering Order'
]);
}
public function store(Request $request)
{
$order = Order::create([
'product_id' => $request->product,
'user_id' => Auth::id(),
'quantity' => $request->quantity,
'address' => $request->address
]);
return response()->json([
'status' => (bool) $order,
'data' => $order,
'message' => $order ? 'Order Created!' : 'Error Creating Order'
]);
}
public function show(Order $order)
{
return response()->json($order,200);
}
public function update(Request $request, Order $order)
{
$status = $order->update(
$request->only(['quantity'])
);
return response()->json([
'status' => $status,
'message' => $status ? 'Order Updated!' : 'Error Updating Order'
]);
}
public function destroy(Order $order)
{
$status = $order->delete();
return response()->json([
'status' => $status,
'message' => $status ? 'Order Deleted!' : 'Error Deleting Order'
]);
}
}
================================================
FILE: app/Http/Controllers/ProductController.php
================================================
<?php
namespace App\Http\Controllers;
use App\Product;
use Illuminate\Http\Request;
class ProductController extends Controller
{
public function index()
{
return response()->json(Product::all(),200);
}
public function store(Request $request)
{
$product = Product::create([
'name' => $request->name,
'description' => $request->description,
'units' => $request->units,
'price' => $request->price,
'image' => $request->image
]);
return response()->json([
'status' => (bool) $product,
'data' => $product,
'message' => $product ? 'Product Created!' : 'Error Creating Product'
]);
}
public function show(Product $product)
{
return response()->json($product,200);
}
public function uploadFile(Request $request)
{
if($request->hasFile('image')){
$name = time()."_".$request->file('image')->getClientOriginalName();
$request->file('image')->move(public_path('images'), $name);
}
return response()->json(asset("images/$name"),201);
}
public function update(Request $request, Product $product)
{
$status = $product->update(
$request->only(['name', 'description', 'units', 'price', 'image'])
);
return response()->json([
'status' => $status,
'message' => $status ? 'Product Updated!' : 'Error Updating Product'
]);
}
public function updateUnits(Request $request, Product $product)
{
$product->units = $product->units + $request->get('units');
$status = $product->save();
return response()->json([
'status' => $status,
'message' => $status ? 'Units Added!' : 'Error Adding Product Units'
]);
}
public function destroy(Product $product)
{
$status = $product->delete();
return response()->json([
'status' => $status,
'message' => $status ? 'Product Deleted!' : 'Error Deleting Product'
]);
}
}
================================================
FILE: app/Http/Controllers/UserController.php
================================================
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Auth;
use Validator;
use App\User;
class UserController extends Controller
{
public function index(){
return response()->json(User::with(['orders'])->get(), 200);
}
public function login(Request $request)
{
$credentials = [
'email' => $request->get('email'),
'password' => $request->get('password'),
];
$status = 401;
$response = ['error' => 'Unauthorised'];
if (Auth::attempt($credentials)) {
$status = 200;
$response = [
'token' => Auth::user()->createToken('bigStore')->accessToken,
'user' => Auth::user()
];
}
return response()->json($response, $status);
}
public function register(Request $request)
{
$validator = Validator::make($request->all(), [
'name' => 'required',
'email' => 'required|email',
'password' => 'required',
'c_password' => 'required|same:password',
]);
if ($validator->fails()) {
return response()->json(['error' => $validator->errors()], 401);
}
$input = $request->all();
$input['password'] = bcrypt($input['password']);
$user = User::create($input);
$success = [
'user' => $user,
'token' => $user->createToken('bigStore')->accessToken,
];
return response()->json($success);
}
public function show(User $user)
{
return response()->json($user,200);
}
public function showOrders(User $user)
{
return response()->json($user->orders()->with(['product'])->get(),200);
}
}
================================================
FILE: app/Http/Kernel.php
================================================
<?php
namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel
{
/**
* The application's global HTTP middleware stack.
*
* These middleware are run during every request to your application.
*
* @var array
*/
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
\App\Http\Middleware\TrustProxies::class,
];
/**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
// \Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
'api' => [
'throttle:60,1',
'bindings',
],
];
/**
* The application's route middleware.
*
* These middleware may be assigned to groups or used individually.
*
* @var array
*/
protected $routeMiddleware = [
'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
];
}
================================================
FILE: app/Http/Middleware/EncryptCookies.php
================================================
<?php
namespace App\Http\Middleware;
use Illuminate\Cookie\Middleware\EncryptCookies as Middleware;
class EncryptCookies extends Middleware
{
/**
* The names of the cookies that should not be encrypted.
*
* @var array
*/
protected $except = [
//
];
}
================================================
FILE: app/Http/Middleware/RedirectIfAuthenticated.php
================================================
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
class RedirectIfAuthenticated
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null $guard
* @return mixed
*/
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {
return redirect('/home');
}
return $next($request);
}
}
================================================
FILE: app/Http/Middleware/TrimStrings.php
================================================
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\TrimStrings as Middleware;
class TrimStrings extends Middleware
{
/**
* The names of the attributes that should not be trimmed.
*
* @var array
*/
protected $except = [
'password',
'password_confirmation',
];
}
================================================
FILE: app/Http/Middleware/TrustProxies.php
================================================
<?php
namespace App\Http\Middleware;
use Illuminate\Http\Request;
use Fideloper\Proxy\TrustProxies as Middleware;
class TrustProxies extends Middleware
{
/**
* The trusted proxies for this application.
*
* @var array
*/
protected $proxies;
/**
* The headers that should be used to detect proxies.
*
* @var string
*/
protected $headers = Request::HEADER_X_FORWARDED_ALL;
}
================================================
FILE: app/Http/Middleware/VerifyCsrfToken.php
================================================
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;
class VerifyCsrfToken extends Middleware
{
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
//
];
}
================================================
FILE: app/Order.php
================================================
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Order extends Model
{
use SoftDeletes;
protected $fillable = [
'product_id', 'user_id', 'quantity', 'address',
];
public function user(){
return $this->belongsTo(User::class,'user_id');
}
public function product(){
return $this->belongsTo(Product::class,'product_id');
}
}
================================================
FILE: app/Product.php
================================================
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Product extends Model
{
use SoftDeletes;
protected $fillable = [
'name', 'price', 'units', 'description', 'image'
];
public function orders(){
return $this->hasMany(Order::class);
}
}
================================================
FILE: app/Providers/AppServiceProvider.php
================================================
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Schema;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Schema::defaultStringLength(191);
}
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
}
================================================
FILE: app/Providers/AuthServiceProvider.php
================================================
<?php
namespace App\Providers;
use Illuminate\Support\Facades\Gate;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
use Laravel\Passport\Passport;
class AuthServiceProvider extends ServiceProvider
{
/**
* The policy mappings for the application.
*
* @var array
*/
protected $policies = [
'App\Model' => 'App\Policies\ModelPolicy',
];
/**
* Register any authentication / authorization services.
*
* @return void
*/
public function boot()
{
$this->registerPolicies();
Passport::routes();
}
}
================================================
FILE: app/Providers/BroadcastServiceProvider.php
================================================
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Broadcast;
class BroadcastServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Broadcast::routes();
require base_path('routes/channels.php');
}
}
================================================
FILE: app/Providers/EventServiceProvider.php
================================================
<?php
namespace App\Providers;
use Illuminate\Support\Facades\Event;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
class EventServiceProvider extends ServiceProvider
{
/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen = [
'App\Events\Event' => [
'App\Listeners\EventListener',
],
];
/**
* Register any events for your application.
*
* @return void
*/
public function boot()
{
parent::boot();
//
}
}
================================================
FILE: app/Providers/RouteServiceProvider.php
================================================
<?php
namespace App\Providers;
use Illuminate\Support\Facades\Route;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
class RouteServiceProvider extends ServiceProvider
{
/**
* This namespace is applied to your controller routes.
*
* In addition, it is set as the URL generator's root namespace.
*
* @var string
*/
protected $namespace = 'App\Http\Controllers';
/**
* Define your route model bindings, pattern filters, etc.
*
* @return void
*/
public function boot()
{
//
parent::boot();
}
/**
* Define the routes for the application.
*
* @return void
*/
public function map()
{
$this->mapApiRoutes();
$this->mapWebRoutes();
//
}
/**
* Define the "web" routes for the application.
*
* These routes all receive session state, CSRF protection, etc.
*
* @return void
*/
protected function mapWebRoutes()
{
Route::middleware('web')
->namespace($this->namespace)
->group(base_path('routes/web.php'));
}
/**
* Define the "api" routes for the application.
*
* These routes are typically stateless.
*
* @return void
*/
protected function mapApiRoutes()
{
Route::prefix('api')
->middleware('api')
->namespace($this->namespace)
->group(base_path('routes/api.php'));
}
}
================================================
FILE: app/User.php
================================================
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Database\Eloquent\SoftDeletes;
use Laravel\Passport\HasApiTokens;
class User extends Authenticatable
{
use Notifiable, SoftDeletes, HasApiTokens;
protected $fillable = [
'name', 'email', 'password',
];
protected $hidden = [
'password', 'remember_token',
];
public function orders(){
return $this->hasMany(Order::class);
}
}
================================================
FILE: artisan
================================================
#!/usr/bin/env php
<?php
define('LARAVEL_START', microtime(true));
/*
|--------------------------------------------------------------------------
| Register The Auto Loader
|--------------------------------------------------------------------------
|
| Composer provides a convenient, automatically generated class loader
| for our application. We just need to utilize it! We'll require it
| into the script here so that we do not have to worry about the
| loading of any our classes "manually". Feels great to relax.
|
*/
require __DIR__.'/vendor/autoload.php';
$app = require_once __DIR__.'/bootstrap/app.php';
/*
|--------------------------------------------------------------------------
| Run The Artisan Application
|--------------------------------------------------------------------------
|
| When we run the console application, the current CLI command will be
| executed in this console and the response sent back to a terminal
| or another output device for the developers. Here goes nothing!
|
*/
$kernel = $app->make(Illuminate\Contracts\Console\Kernel::class);
$status = $kernel->handle(
$input = new Symfony\Component\Console\Input\ArgvInput,
new Symfony\Component\Console\Output\ConsoleOutput
);
/*
|--------------------------------------------------------------------------
| Shutdown The Application
|--------------------------------------------------------------------------
|
| Once Artisan has finished running, we will fire off the shutdown events
| so that any final work may be done by the application before we shut
| down the process. This is the last thing to happen to the request.
|
*/
$kernel->terminate($input, $status);
exit($status);
================================================
FILE: bootstrap/app.php
================================================
<?php
/*
|--------------------------------------------------------------------------
| Create The Application
|--------------------------------------------------------------------------
|
| The first thing we will do is create a new Laravel application instance
| which serves as the "glue" for all the components of Laravel, and is
| the IoC container for the system binding all of the various parts.
|
*/
$app = new Illuminate\Foundation\Application(
realpath(__DIR__.'/../')
);
/*
|--------------------------------------------------------------------------
| Bind Important Interfaces
|--------------------------------------------------------------------------
|
| Next, we need to bind some important interfaces into the container so
| we will be able to resolve them when needed. The kernels serve the
| incoming requests to this application from both the web and CLI.
|
*/
$app->singleton(
Illuminate\Contracts\Http\Kernel::class,
App\Http\Kernel::class
);
$app->singleton(
Illuminate\Contracts\Console\Kernel::class,
App\Console\Kernel::class
);
$app->singleton(
Illuminate\Contracts\Debug\ExceptionHandler::class,
App\Exceptions\Handler::class
);
/*
|--------------------------------------------------------------------------
| Return The Application
|--------------------------------------------------------------------------
|
| This script returns the application instance. The instance is given to
| the calling script so we can separate the building of the instances
| from the actual running of the application and sending responses.
|
*/
return $app;
================================================
FILE: bootstrap/cache/.gitignore
================================================
*
!.gitignore
================================================
FILE: composer.json
================================================
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"type": "project",
"require": {
"php": "^7.1.3",
"fideloper/proxy": "^4.0",
"laravel/framework": "5.6.*",
"laravel/passport": "^5.0",
"laravel/tinker": "^1.0"
},
"require-dev": {
"filp/whoops": "^2.0",
"fzaninotto/faker": "^1.4",
"mockery/mockery": "^1.0",
"nunomaduro/collision": "^2.0",
"phpunit/phpunit": "^7.0"
},
"autoload": {
"classmap": [
"database/seeds",
"database/factories"
],
"psr-4": {
"App\\": "app/"
}
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
}
},
"extra": {
"laravel": {
"dont-discover": [
]
}
},
"scripts": {
"post-root-package-install": [
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"@php artisan key:generate"
],
"post-autoload-dump": [
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
"@php artisan package:discover"
]
},
"config": {
"preferred-install": "dist",
"sort-packages": true,
"optimize-autoloader": true
},
"minimum-stability": "dev",
"prefer-stable": true
}
================================================
FILE: config/app.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Application Name
|--------------------------------------------------------------------------
|
| This value is the name of your application. This value is used when the
| framework needs to place the application's name in a notification or
| any other location as required by the application or its packages.
|
*/
'name' => env('APP_NAME', 'Laravel'),
/*
|--------------------------------------------------------------------------
| Application Environment
|--------------------------------------------------------------------------
|
| This value determines the "environment" your application is currently
| running in. This may determine how you prefer to configure various
| services your application utilizes. Set this in your ".env" file.
|
*/
'env' => env('APP_ENV', 'production'),
/*
|--------------------------------------------------------------------------
| Application Debug Mode
|--------------------------------------------------------------------------
|
| When your application is in debug mode, detailed error messages with
| stack traces will be shown on every error that occurs within your
| application. If disabled, a simple generic error page is shown.
|
*/
'debug' => env('APP_DEBUG', false),
/*
|--------------------------------------------------------------------------
| Application URL
|--------------------------------------------------------------------------
|
| This URL is used by the console to properly generate URLs when using
| the Artisan command line tool. You should set this to the root of
| your application so that it is used when running Artisan tasks.
|
*/
'url' => env('APP_URL', 'http://localhost'),
/*
|--------------------------------------------------------------------------
| Application Timezone
|--------------------------------------------------------------------------
|
| Here you may specify the default timezone for your application, which
| will be used by the PHP date and date-time functions. We have gone
| ahead and set this to a sensible default for you out of the box.
|
*/
'timezone' => 'UTC',
/*
|--------------------------------------------------------------------------
| Application Locale Configuration
|--------------------------------------------------------------------------
|
| The application locale determines the default locale that will be used
| by the translation service provider. You are free to set this value
| to any of the locales which will be supported by the application.
|
*/
'locale' => 'en',
/*
|--------------------------------------------------------------------------
| Application Fallback Locale
|--------------------------------------------------------------------------
|
| The fallback locale determines the locale to use when the current one
| is not available. You may change the value to correspond to any of
| the language folders that are provided through your application.
|
*/
'fallback_locale' => 'en',
/*
|--------------------------------------------------------------------------
| Encryption Key
|--------------------------------------------------------------------------
|
| This key is used by the Illuminate encrypter service and should be set
| to a random, 32 character string, otherwise these encrypted strings
| will not be safe. Please do this before deploying an application!
|
*/
'key' => env('APP_KEY'),
'cipher' => 'AES-256-CBC',
/*
|--------------------------------------------------------------------------
| Autoloaded Service Providers
|--------------------------------------------------------------------------
|
| The service providers listed here will be automatically loaded on the
| request to your application. Feel free to add your own services to
| this array to grant expanded functionality to your applications.
|
*/
'providers' => [
/*
* Laravel Framework Service Providers...
*/
Illuminate\Auth\AuthServiceProvider::class,
Illuminate\Broadcasting\BroadcastServiceProvider::class,
Illuminate\Bus\BusServiceProvider::class,
Illuminate\Cache\CacheServiceProvider::class,
Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class,
Illuminate\Cookie\CookieServiceProvider::class,
Illuminate\Database\DatabaseServiceProvider::class,
Illuminate\Encryption\EncryptionServiceProvider::class,
Illuminate\Filesystem\FilesystemServiceProvider::class,
Illuminate\Foundation\Providers\FoundationServiceProvider::class,
Illuminate\Hashing\HashServiceProvider::class,
Illuminate\Mail\MailServiceProvider::class,
Illuminate\Notifications\NotificationServiceProvider::class,
Illuminate\Pagination\PaginationServiceProvider::class,
Illuminate\Pipeline\PipelineServiceProvider::class,
Illuminate\Queue\QueueServiceProvider::class,
Illuminate\Redis\RedisServiceProvider::class,
Illuminate\Auth\Passwords\PasswordResetServiceProvider::class,
Illuminate\Session\SessionServiceProvider::class,
Illuminate\Translation\TranslationServiceProvider::class,
Illuminate\Validation\ValidationServiceProvider::class,
Illuminate\View\ViewServiceProvider::class,
/*
* Package Service Providers...
*/
/*
* Application Service Providers...
*/
App\Providers\AppServiceProvider::class,
App\Providers\AuthServiceProvider::class,
// App\Providers\BroadcastServiceProvider::class,
App\Providers\EventServiceProvider::class,
App\Providers\RouteServiceProvider::class,
],
/*
|--------------------------------------------------------------------------
| Class Aliases
|--------------------------------------------------------------------------
|
| This array of class aliases will be registered when this application
| is started. However, feel free to register as many as you wish as
| the aliases are "lazy" loaded so they don't hinder performance.
|
*/
'aliases' => [
'App' => Illuminate\Support\Facades\App::class,
'Artisan' => Illuminate\Support\Facades\Artisan::class,
'Auth' => Illuminate\Support\Facades\Auth::class,
'Blade' => Illuminate\Support\Facades\Blade::class,
'Broadcast' => Illuminate\Support\Facades\Broadcast::class,
'Bus' => Illuminate\Support\Facades\Bus::class,
'Cache' => Illuminate\Support\Facades\Cache::class,
'Config' => Illuminate\Support\Facades\Config::class,
'Cookie' => Illuminate\Support\Facades\Cookie::class,
'Crypt' => Illuminate\Support\Facades\Crypt::class,
'DB' => Illuminate\Support\Facades\DB::class,
'Eloquent' => Illuminate\Database\Eloquent\Model::class,
'Event' => Illuminate\Support\Facades\Event::class,
'File' => Illuminate\Support\Facades\File::class,
'Gate' => Illuminate\Support\Facades\Gate::class,
'Hash' => Illuminate\Support\Facades\Hash::class,
'Lang' => Illuminate\Support\Facades\Lang::class,
'Log' => Illuminate\Support\Facades\Log::class,
'Mail' => Illuminate\Support\Facades\Mail::class,
'Notification' => Illuminate\Support\Facades\Notification::class,
'Password' => Illuminate\Support\Facades\Password::class,
'Queue' => Illuminate\Support\Facades\Queue::class,
'Redirect' => Illuminate\Support\Facades\Redirect::class,
'Redis' => Illuminate\Support\Facades\Redis::class,
'Request' => Illuminate\Support\Facades\Request::class,
'Response' => Illuminate\Support\Facades\Response::class,
'Route' => Illuminate\Support\Facades\Route::class,
'Schema' => Illuminate\Support\Facades\Schema::class,
'Session' => Illuminate\Support\Facades\Session::class,
'Storage' => Illuminate\Support\Facades\Storage::class,
'URL' => Illuminate\Support\Facades\URL::class,
'Validator' => Illuminate\Support\Facades\Validator::class,
'View' => Illuminate\Support\Facades\View::class,
],
];
================================================
FILE: config/auth.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Authentication Defaults
|--------------------------------------------------------------------------
|
| This option controls the default authentication "guard" and password
| reset options for your application. You may change these defaults
| as required, but they're a perfect start for most applications.
|
*/
'defaults' => [
'guard' => 'web',
'passwords' => 'users',
],
/*
|--------------------------------------------------------------------------
| Authentication Guards
|--------------------------------------------------------------------------
|
| Next, you may define every authentication guard for your application.
| Of course, a great default configuration has been defined for you
| here which uses session storage and the Eloquent user provider.
|
| All authentication drivers have a user provider. This defines how the
| users are actually retrieved out of your database or other storage
| mechanisms used by this application to persist your user's data.
|
| Supported: "session", "token"
|
*/
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
],
/*
|--------------------------------------------------------------------------
| User Providers
|--------------------------------------------------------------------------
|
| All authentication drivers have a user provider. This defines how the
| users are actually retrieved out of your database or other storage
| mechanisms used by this application to persist your user's data.
|
| If you have multiple user tables or models you may configure multiple
| sources which represent each model / table. These sources may then
| be assigned to any extra authentication guards you have defined.
|
| Supported: "database", "eloquent"
|
*/
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
// 'users' => [
// 'driver' => 'database',
// 'table' => 'users',
// ],
],
/*
|--------------------------------------------------------------------------
| Resetting Passwords
|--------------------------------------------------------------------------
|
| You may specify multiple password reset configurations if you have more
| than one user table or model in the application and you want to have
| separate password reset settings based on the specific user types.
|
| The expire time is the number of minutes that the reset token should be
| considered valid. This security feature keeps tokens short-lived so
| they have less time to be guessed. You may change this as needed.
|
*/
'passwords' => [
'users' => [
'provider' => 'users',
'table' => 'password_resets',
'expire' => 60,
],
],
];
================================================
FILE: config/broadcasting.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Broadcaster
|--------------------------------------------------------------------------
|
| This option controls the default broadcaster that will be used by the
| framework when an event needs to be broadcast. You may set this to
| any of the connections defined in the "connections" array below.
|
| Supported: "pusher", "redis", "log", "null"
|
*/
'default' => env('BROADCAST_DRIVER', 'null'),
/*
|--------------------------------------------------------------------------
| Broadcast Connections
|--------------------------------------------------------------------------
|
| Here you may define all of the broadcast connections that will be used
| to broadcast events to other systems or over websockets. Samples of
| each available type of connection are provided inside this array.
|
*/
'connections' => [
'pusher' => [
'driver' => 'pusher',
'key' => env('PUSHER_APP_KEY'),
'secret' => env('PUSHER_APP_SECRET'),
'app_id' => env('PUSHER_APP_ID'),
'options' => [
'cluster' => env('PUSHER_APP_CLUSTER'),
'encrypted' => true,
],
],
'redis' => [
'driver' => 'redis',
'connection' => 'default',
],
'log' => [
'driver' => 'log',
],
'null' => [
'driver' => 'null',
],
],
];
================================================
FILE: config/cache.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Cache Store
|--------------------------------------------------------------------------
|
| This option controls the default cache connection that gets used while
| using this caching library. This connection is used when another is
| not explicitly specified when executing a given caching function.
|
| Supported: "apc", "array", "database", "file", "memcached", "redis"
|
*/
'default' => env('CACHE_DRIVER', 'file'),
/*
|--------------------------------------------------------------------------
| Cache Stores
|--------------------------------------------------------------------------
|
| Here you may define all of the cache "stores" for your application as
| well as their drivers. You may even define multiple stores for the
| same cache driver to group types of items stored in your caches.
|
*/
'stores' => [
'apc' => [
'driver' => 'apc',
],
'array' => [
'driver' => 'array',
],
'database' => [
'driver' => 'database',
'table' => 'cache',
'connection' => null,
],
'file' => [
'driver' => 'file',
'path' => storage_path('framework/cache/data'),
],
'memcached' => [
'driver' => 'memcached',
'persistent_id' => env('MEMCACHED_PERSISTENT_ID'),
'sasl' => [
env('MEMCACHED_USERNAME'),
env('MEMCACHED_PASSWORD'),
],
'options' => [
// Memcached::OPT_CONNECT_TIMEOUT => 2000,
],
'servers' => [
[
'host' => env('MEMCACHED_HOST', '127.0.0.1'),
'port' => env('MEMCACHED_PORT', 11211),
'weight' => 100,
],
],
],
'redis' => [
'driver' => 'redis',
'connection' => 'default',
],
],
/*
|--------------------------------------------------------------------------
| Cache Key Prefix
|--------------------------------------------------------------------------
|
| When utilizing a RAM based store such as APC or Memcached, there might
| be other applications utilizing the same cache. So, we'll specify a
| value to get prefixed to all our keys so we can avoid collisions.
|
*/
'prefix' => env(
'CACHE_PREFIX',
str_slug(env('APP_NAME', 'laravel'), '_').'_cache'
),
];
================================================
FILE: config/database.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Database Connection Name
|--------------------------------------------------------------------------
|
| Here you may specify which of the database connections below you wish
| to use as your default connection for all database work. Of course
| you may use many connections at once using the Database library.
|
*/
'default' => env('DB_CONNECTION', 'mysql'),
/*
|--------------------------------------------------------------------------
| Database Connections
|--------------------------------------------------------------------------
|
| Here are each of the database connections setup for your application.
| Of course, examples of configuring each database platform that is
| supported by Laravel is shown below to make development simple.
|
|
| All database work in Laravel is done through the PHP PDO facilities
| so make sure you have the driver for your particular database of
| choice installed on your machine before you begin development.
|
*/
'connections' => [
'sqlite' => [
'driver' => 'sqlite',
'database' => env('DB_DATABASE', database_path('database.sqlite')),
'prefix' => '',
],
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
'pgsql' => [
'driver' => 'pgsql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '5432'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
'schema' => 'public',
'sslmode' => 'prefer',
],
'sqlsrv' => [
'driver' => 'sqlsrv',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '1433'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
],
],
/*
|--------------------------------------------------------------------------
| Migration Repository Table
|--------------------------------------------------------------------------
|
| This table keeps track of all the migrations that have already run for
| your application. Using this information, we can determine which of
| the migrations on disk haven't actually been run in the database.
|
*/
'migrations' => 'migrations',
/*
|--------------------------------------------------------------------------
| Redis Databases
|--------------------------------------------------------------------------
|
| Redis is an open source, fast, and advanced key-value store that also
| provides a richer set of commands than a typical key-value systems
| such as APC or Memcached. Laravel makes it easy to dig right in.
|
*/
'redis' => [
'client' => 'predis',
'default' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => 0,
],
],
];
================================================
FILE: config/filesystems.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Filesystem Disk
|--------------------------------------------------------------------------
|
| Here you may specify the default filesystem disk that should be used
| by the framework. The "local" disk, as well as a variety of cloud
| based disks are available to your application. Just store away!
|
*/
'default' => env('FILESYSTEM_DRIVER', 'local'),
/*
|--------------------------------------------------------------------------
| Default Cloud Filesystem Disk
|--------------------------------------------------------------------------
|
| Many applications store files both locally and in the cloud. For this
| reason, you may specify a default "cloud" driver here. This driver
| will be bound as the Cloud disk implementation in the container.
|
*/
'cloud' => env('FILESYSTEM_CLOUD', 's3'),
/*
|--------------------------------------------------------------------------
| Filesystem Disks
|--------------------------------------------------------------------------
|
| Here you may configure as many filesystem "disks" as you wish, and you
| may even configure multiple disks of the same driver. Defaults have
| been setup for each driver as an example of the required options.
|
| Supported Drivers: "local", "ftp", "sftp", "s3", "rackspace"
|
*/
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
],
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
's3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
'url' => env('AWS_URL'),
],
],
];
================================================
FILE: config/hashing.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Hash Driver
|--------------------------------------------------------------------------
|
| This option controls the default hash driver that will be used to hash
| passwords for your application. By default, the bcrypt algorithm is
| used; however, you remain free to modify this option if you wish.
|
| Supported: "bcrypt", "argon"
|
*/
'driver' => 'bcrypt',
/*
|--------------------------------------------------------------------------
| Bcrypt Options
|--------------------------------------------------------------------------
|
| Here you may specify the configuration options that should be used when
| passwords are hashed using the Bcrypt algorithm. This will allow you
| to control the amount of time it takes to hash the given password.
|
*/
'bcrypt' => [
'rounds' => 10,
],
/*
|--------------------------------------------------------------------------
| Argon Options
|--------------------------------------------------------------------------
|
| Here you may specify the configuration options that should be used when
| passwords are hashed using the Argon algorithm. These will allow you
| to control the amount of time it takes to hash the given password.
|
*/
'argon' => [
'memory' => 1024,
'threads' => 2,
'time' => 2,
],
];
================================================
FILE: config/logging.php
================================================
<?php
use Monolog\Handler\StreamHandler;
return [
/*
|--------------------------------------------------------------------------
| Default Log Channel
|--------------------------------------------------------------------------
|
| This option defines the default log channel that gets used when writing
| messages to the logs. The name specified in this option should match
| one of the channels defined in the "channels" configuration array.
|
*/
'default' => env('LOG_CHANNEL', 'stack'),
/*
|--------------------------------------------------------------------------
| Log Channels
|--------------------------------------------------------------------------
|
| Here you may configure the log channels for your application. Out of
| the box, Laravel uses the Monolog PHP logging library. This gives
| you a variety of powerful log handlers / formatters to utilize.
|
| Available Drivers: "single", "daily", "slack", "syslog",
| "errorlog", "monolog",
| "custom", "stack"
|
*/
'channels' => [
'stack' => [
'driver' => 'stack',
'channels' => ['single'],
],
'single' => [
'driver' => 'single',
'path' => storage_path('logs/laravel.log'),
'level' => 'debug',
],
'daily' => [
'driver' => 'daily',
'path' => storage_path('logs/laravel.log'),
'level' => 'debug',
'days' => 7,
],
'slack' => [
'driver' => 'slack',
'url' => env('LOG_SLACK_WEBHOOK_URL'),
'username' => 'Laravel Log',
'emoji' => ':boom:',
'level' => 'critical',
],
'stderr' => [
'driver' => 'monolog',
'handler' => StreamHandler::class,
'with' => [
'stream' => 'php://stderr',
],
],
'syslog' => [
'driver' => 'syslog',
'level' => 'debug',
],
'errorlog' => [
'driver' => 'errorlog',
'level' => 'debug',
],
],
];
================================================
FILE: config/mail.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Mail Driver
|--------------------------------------------------------------------------
|
| Laravel supports both SMTP and PHP's "mail" function as drivers for the
| sending of e-mail. You may specify which one you're using throughout
| your application here. By default, Laravel is setup for SMTP mail.
|
| Supported: "smtp", "sendmail", "mailgun", "mandrill", "ses",
| "sparkpost", "log", "array"
|
*/
'driver' => env('MAIL_DRIVER', 'smtp'),
/*
|--------------------------------------------------------------------------
| SMTP Host Address
|--------------------------------------------------------------------------
|
| Here you may provide the host address of the SMTP server used by your
| applications. A default option is provided that is compatible with
| the Mailgun mail service which will provide reliable deliveries.
|
*/
'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
/*
|--------------------------------------------------------------------------
| SMTP Host Port
|--------------------------------------------------------------------------
|
| This is the SMTP port used by your application to deliver e-mails to
| users of the application. Like the host we have set this value to
| stay compatible with the Mailgun e-mail application by default.
|
*/
'port' => env('MAIL_PORT', 587),
/*
|--------------------------------------------------------------------------
| Global "From" Address
|--------------------------------------------------------------------------
|
| You may wish for all e-mails sent by your application to be sent from
| the same address. Here, you may specify a name and address that is
| used globally for all e-mails that are sent by your application.
|
*/
'from' => [
'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
'name' => env('MAIL_FROM_NAME', 'Example'),
],
/*
|--------------------------------------------------------------------------
| E-Mail Encryption Protocol
|--------------------------------------------------------------------------
|
| Here you may specify the encryption protocol that should be used when
| the application send e-mail messages. A sensible default using the
| transport layer security protocol should provide great security.
|
*/
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
/*
|--------------------------------------------------------------------------
| SMTP Server Username
|--------------------------------------------------------------------------
|
| If your SMTP server requires a username for authentication, you should
| set it here. This will get used to authenticate with your server on
| connection. You may also set the "password" value below this one.
|
*/
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
/*
|--------------------------------------------------------------------------
| Sendmail System Path
|--------------------------------------------------------------------------
|
| When using the "sendmail" driver to send e-mails, we will need to know
| the path to where Sendmail lives on this server. A default path has
| been provided here, which will work well on most of your systems.
|
*/
'sendmail' => '/usr/sbin/sendmail -bs',
/*
|--------------------------------------------------------------------------
| Markdown Mail Settings
|--------------------------------------------------------------------------
|
| If you are using Markdown based email rendering, you may configure your
| theme and component paths here, allowing you to customize the design
| of the emails. Or, you may simply stick with the Laravel defaults!
|
*/
'markdown' => [
'theme' => 'default',
'paths' => [
resource_path('views/vendor/mail'),
],
],
];
================================================
FILE: config/queue.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Queue Connection Name
|--------------------------------------------------------------------------
|
| Laravel's queue API supports an assortment of back-ends via a single
| API, giving you convenient access to each back-end using the same
| syntax for every one. Here you may define a default connection.
|
*/
'default' => env('QUEUE_DRIVER', 'sync'),
/*
|--------------------------------------------------------------------------
| Queue Connections
|--------------------------------------------------------------------------
|
| Here you may configure the connection information for each server that
| is used by your application. A default configuration has been added
| for each back-end shipped with Laravel. You are free to add more.
|
| Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null"
|
*/
'connections' => [
'sync' => [
'driver' => 'sync',
],
'database' => [
'driver' => 'database',
'table' => 'jobs',
'queue' => 'default',
'retry_after' => 90,
],
'beanstalkd' => [
'driver' => 'beanstalkd',
'host' => 'localhost',
'queue' => 'default',
'retry_after' => 90,
],
'sqs' => [
'driver' => 'sqs',
'key' => env('SQS_KEY', 'your-public-key'),
'secret' => env('SQS_SECRET', 'your-secret-key'),
'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'),
'queue' => env('SQS_QUEUE', 'your-queue-name'),
'region' => env('SQS_REGION', 'us-east-1'),
],
'redis' => [
'driver' => 'redis',
'connection' => 'default',
'queue' => 'default',
'retry_after' => 90,
'block_for' => null,
],
],
/*
|--------------------------------------------------------------------------
| Failed Queue Jobs
|--------------------------------------------------------------------------
|
| These options configure the behavior of failed queue job logging so you
| can control which database and table are used to store the jobs that
| have failed. You may change them to any database / table you wish.
|
*/
'failed' => [
'database' => env('DB_CONNECTION', 'mysql'),
'table' => 'failed_jobs',
],
];
================================================
FILE: config/services.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Third Party Services
|--------------------------------------------------------------------------
|
| This file is for storing the credentials for third party services such
| as Stripe, Mailgun, SparkPost and others. This file provides a sane
| default location for this type of information, allowing packages
| to have a conventional place to find your various credentials.
|
*/
'mailgun' => [
'domain' => env('MAILGUN_DOMAIN'),
'secret' => env('MAILGUN_SECRET'),
],
'ses' => [
'key' => env('SES_KEY'),
'secret' => env('SES_SECRET'),
'region' => 'us-east-1',
],
'sparkpost' => [
'secret' => env('SPARKPOST_SECRET'),
],
'stripe' => [
'model' => App\User::class,
'key' => env('STRIPE_KEY'),
'secret' => env('STRIPE_SECRET'),
],
];
================================================
FILE: config/session.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Session Driver
|--------------------------------------------------------------------------
|
| This option controls the default session "driver" that will be used on
| requests. By default, we will use the lightweight native driver but
| you may specify any of the other wonderful drivers provided here.
|
| Supported: "file", "cookie", "database", "apc",
| "memcached", "redis", "array"
|
*/
'driver' => env('SESSION_DRIVER', 'file'),
/*
|--------------------------------------------------------------------------
| Session Lifetime
|--------------------------------------------------------------------------
|
| Here you may specify the number of minutes that you wish the session
| to be allowed to remain idle before it expires. If you want them
| to immediately expire on the browser closing, set that option.
|
*/
'lifetime' => env('SESSION_LIFETIME', 120),
'expire_on_close' => false,
/*
|--------------------------------------------------------------------------
| Session Encryption
|--------------------------------------------------------------------------
|
| This option allows you to easily specify that all of your session data
| should be encrypted before it is stored. All encryption will be run
| automatically by Laravel and you can use the Session like normal.
|
*/
'encrypt' => false,
/*
|--------------------------------------------------------------------------
| Session File Location
|--------------------------------------------------------------------------
|
| When using the native session driver, we need a location where session
| files may be stored. A default has been set for you but a different
| location may be specified. This is only needed for file sessions.
|
*/
'files' => storage_path('framework/sessions'),
/*
|--------------------------------------------------------------------------
| Session Database Connection
|--------------------------------------------------------------------------
|
| When using the "database" or "redis" session drivers, you may specify a
| connection that should be used to manage these sessions. This should
| correspond to a connection in your database configuration options.
|
*/
'connection' => null,
/*
|--------------------------------------------------------------------------
| Session Database Table
|--------------------------------------------------------------------------
|
| When using the "database" session driver, you may specify the table we
| should use to manage the sessions. Of course, a sensible default is
| provided for you; however, you are free to change this as needed.
|
*/
'table' => 'sessions',
/*
|--------------------------------------------------------------------------
| Session Cache Store
|--------------------------------------------------------------------------
|
| When using the "apc" or "memcached" session drivers, you may specify a
| cache store that should be used for these sessions. This value must
| correspond with one of the application's configured cache stores.
|
*/
'store' => null,
/*
|--------------------------------------------------------------------------
| Session Sweeping Lottery
|--------------------------------------------------------------------------
|
| Some session drivers must manually sweep their storage location to get
| rid of old sessions from storage. Here are the chances that it will
| happen on a given request. By default, the odds are 2 out of 100.
|
*/
'lottery' => [2, 100],
/*
|--------------------------------------------------------------------------
| Session Cookie Name
|--------------------------------------------------------------------------
|
| Here you may change the name of the cookie used to identify a session
| instance by ID. The name specified here will get used every time a
| new session cookie is created by the framework for every driver.
|
*/
'cookie' => env(
'SESSION_COOKIE',
str_slug(env('APP_NAME', 'laravel'), '_').'_session'
),
/*
|--------------------------------------------------------------------------
| Session Cookie Path
|--------------------------------------------------------------------------
|
| The session cookie path determines the path for which the cookie will
| be regarded as available. Typically, this will be the root path of
| your application but you are free to change this when necessary.
|
*/
'path' => '/',
/*
|--------------------------------------------------------------------------
| Session Cookie Domain
|--------------------------------------------------------------------------
|
| Here you may change the domain of the cookie used to identify a session
| in your application. This will determine which domains the cookie is
| available to in your application. A sensible default has been set.
|
*/
'domain' => env('SESSION_DOMAIN', null),
/*
|--------------------------------------------------------------------------
| HTTPS Only Cookies
|--------------------------------------------------------------------------
|
| By setting this option to true, session cookies will only be sent back
| to the server if the browser has a HTTPS connection. This will keep
| the cookie from being sent to you if it can not be done securely.
|
*/
'secure' => env('SESSION_SECURE_COOKIE', false),
/*
|--------------------------------------------------------------------------
| HTTP Access Only
|--------------------------------------------------------------------------
|
| Setting this value to true will prevent JavaScript from accessing the
| value of the cookie and the cookie will only be accessible through
| the HTTP protocol. You are free to modify this option if needed.
|
*/
'http_only' => true,
/*
|--------------------------------------------------------------------------
| Same-Site Cookies
|--------------------------------------------------------------------------
|
| This option determines how your cookies behave when cross-site requests
| take place, and can be used to mitigate CSRF attacks. By default, we
| do not enable this as other CSRF protection services are in place.
|
| Supported: "lax", "strict"
|
*/
'same_site' => null,
];
================================================
FILE: config/view.php
================================================
<?php
return [
/*
|--------------------------------------------------------------------------
| View Storage Paths
|--------------------------------------------------------------------------
|
| Most templating systems load templates from disk. Here you may specify
| an array of paths that should be checked for your views. Of course
| the usual Laravel view path has already been registered for you.
|
*/
'paths' => [
resource_path('views'),
],
/*
|--------------------------------------------------------------------------
| Compiled View Path
|--------------------------------------------------------------------------
|
| This option determines where all the compiled Blade templates will be
| stored for your application. Typically, this is within the storage
| directory. However, as usual, you are free to change this value.
|
*/
'compiled' => realpath(storage_path('framework/views')),
];
================================================
FILE: database/.gitignore
================================================
*.sqlite
================================================
FILE: database/factories/UserFactory.php
================================================
<?php
use Faker\Generator as Faker;
/*
|--------------------------------------------------------------------------
| Model Factories
|--------------------------------------------------------------------------
|
| This directory should contain each of the model factory definitions for
| your application. Factories provide a convenient way to generate new
| model instances for testing / seeding your application's database.
|
*/
$factory->define(App\User::class, function (Faker $faker) {
return [
'name' => $faker->name,
'email' => $faker->unique()->safeEmail,
'password' => '$2y$10$TKh8H1.PfQx37YgCzwiKb.KjNyWgaHb9cbcoQgdIVFlYg7B77UdFm', // secret
'remember_token' => str_random(10),
];
});
================================================
FILE: database/migrations/2014_10_12_000000_create_users_table.php
================================================
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->boolean('is_admin')->default(false);
$table->string('password');
$table->rememberToken();
$table->timestamps();
$table->softDeletes();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('users');
}
}
================================================
FILE: database/migrations/2014_10_12_100000_create_password_resets_table.php
================================================
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreatePasswordResetsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('password_resets', function (Blueprint $table) {
$table->string('email')->index();
$table->string('token');
$table->timestamp('created_at')->nullable();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('password_resets');
}
}
================================================
FILE: database/migrations/2018_04_07_050507_create_products_table.php
================================================
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateProductsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('products', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('description');
$table->unsignedInteger('units')->default(0);
$table->double('price');
$table->string('image');
$table->timestamps();
$table->softDeletes();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('products');
}
}
================================================
FILE: database/migrations/2018_04_07_050555_create_orders_table.php
================================================
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateOrdersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('orders', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('product_id');
$table->unsignedInteger('user_id');
$table->unsignedInteger('quantity');
$table->string('address');
$table->boolean('is_delivered')->default(false);
$table->timestamps();
$table->softDeletes();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('orders');
}
}
================================================
FILE: database/seeds/DatabaseSeeder.php
================================================
<?php
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
$this->call(UserTableSeeder::class);
$this->call(ProductTableSeeder::class);
}
}
================================================
FILE: database/seeds/ProductTableSeeder.php
================================================
<?php
use Illuminate\Database\Seeder;
use App\Product;
class ProductTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$products = [
[
'name' => "MEN'S BETTER THAN NAKED™ JACKET",
'description' => "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua consequat.",
'units' => 21,
'price' => 200.10,
'image' => "http://images.thenorthface.com/is/image/TheNorthFace/236x204_CLR/mens-better-than-naked-jacket-AVMH_LC9_hero.png"
],
[
'name' => "WOMEN'S BETTER THAN NAKED™ JACKET",
'description' => "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua consequat.",
'units' => 400,
'price' => 1600.21,
'image' => "http://images.thenorthface.com/is/image/TheNorthFace/236x204_CLR/womens-better-than-naked-jacket-AVKL_NN4_hero.png"
],
[
'name' => "WOMEN'S SINGLE-TRACK SHOE",
'description' => "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua consequat.",
'units' => 37,
'price' => 378.00,
'image' => "http://images.thenorthface.com/is/image/TheNorthFace/236x204_CLR/womens-single-track-shoe-ALQF_JM3_hero.png"
],
[
'name' => "Enduro Boa® Hydration Pack",
'description' => "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua consequat.",
'units' => 10,
'price' => 21.10,
'image' => "http://images.thenorthface.com/is/image/TheNorthFace/236x204_CLR/enduro-boa-hydration-pack-AJQZ_JK3_hero.png"
]
];
foreach ($products as $product) {
Product::create($product);
}
}
}
================================================
FILE: database/seeds/UserTableSeeder.php
================================================
<?php
use Illuminate\Database\Seeder;
use App\User;
class UserTableSeeder extends Seeder
{
public function run()
{
$user = new User;
$user->name = "Admin";
$user->email = "admin@devtest.com";
$user->password = bcrypt('secret');
$user->is_admin = true;
$user->save();
}
}
================================================
FILE: package.json
================================================
{
"private": true,
"scripts": {
"dev": "npm run development",
"development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"watch": "npm run development -- --watch",
"watch-poll": "npm run watch -- --watch-poll",
"hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
"prod": "npm run production",
"production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
},
"devDependencies": {
"axios": "^0.21",
"bootstrap": "^4.3.1",
"cross-env": "^5.1",
"jquery": "^3.5",
"laravel-mix": "^2.0",
"vue": "^2.5.7"
}
}
================================================
FILE: phpunit.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
backupStaticAttributes="false"
bootstrap="vendor/autoload.php"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
stopOnFailure="false">
<testsuites>
<testsuite name="Feature">
<directory suffix="Test.php">./tests/Feature</directory>
</testsuite>
<testsuite name="Unit">
<directory suffix="Test.php">./tests/Unit</directory>
</testsuite>
</testsuites>
<filter>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory suffix=".php">./app</directory>
</whitelist>
</filter>
<php>
<env name="APP_ENV" value="testing"/>
<env name="CACHE_DRIVER" value="array"/>
<env name="SESSION_DRIVER" value="array"/>
<env name="QUEUE_DRIVER" value="sync"/>
<env name="MAIL_DRIVER" value="array"/>
</php>
</phpunit>
================================================
FILE: public/.htaccess
================================================
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
================================================
FILE: public/css/app.css
================================================
@import url(https://fonts.googleapis.com/css?family=Raleway:300,400,600);/*!
* Bootstrap v4.0.0 (https://getbootstrap.com)
* Copyright 2011-2018 The Bootstrap Authors
* Copyright 2011-2018 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
:root {
--blue: #007bff;
--indigo: #6610f2;
--purple: #6f42c1;
--pink: #e83e8c;
--red: #dc3545;
--orange: #fd7e14;
--yellow: #ffc107;
--green: #28a745;
--teal: #20c997;
--cyan: #17a2b8;
--white: #fff;
--gray: #6c757d;
--gray-dark: #343a40;
--primary: #007bff;
--secondary: #6c757d;
--success: #28a745;
--info: #17a2b8;
--warning: #ffc107;
--danger: #dc3545;
--light: #f8f9fa;
--dark: #343a40;
--breakpoint-xs: 0;
--breakpoint-sm: 576px;
--breakpoint-md: 768px;
--breakpoint-lg: 992px;
--breakpoint-xl: 1200px;
--font-family-sans-serif: "Raleway", sans-serif;
--font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
}
*,
*::before,
*::after {
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
html {
font-family: sans-serif;
line-height: 1.15;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
-ms-overflow-style: scrollbar;
-webkit-tap-highlight-color: transparent;
}
@-ms-viewport {
width: device-width;
}
article,
aside,
dialog,
figcaption,
figure,
footer,
header,
hgroup,
main,
nav,
section {
display: block;
}
body {
margin: 0;
font-family: "Raleway", sans-serif;
font-size: 0.9rem;
font-weight: 400;
line-height: 1.6;
color: #212529;
text-align: left;
background-color: #f5f8fa;
}
[tabindex="-1"]:focus {
outline: 0 !important;
}
hr {
-webkit-box-sizing: content-box;
box-sizing: content-box;
height: 0;
overflow: visible;
}
h1,
h2,
h3,
h4,
h5,
h6 {
margin-top: 0;
margin-bottom: 0.5rem;
}
p {
margin-top: 0;
margin-bottom: 1rem;
}
abbr[title],
abbr[data-original-title] {
text-decoration: underline;
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
cursor: help;
border-bottom: 0;
}
address {
margin-bottom: 1rem;
font-style: normal;
line-height: inherit;
}
ol,
ul,
dl {
margin-top: 0;
margin-bottom: 1rem;
}
ol ol,
ul ul,
ol ul,
ul ol {
margin-bottom: 0;
}
dt {
font-weight: 700;
}
dd {
margin-bottom: .5rem;
margin-left: 0;
}
blockquote {
margin: 0 0 1rem;
}
dfn {
font-style: italic;
}
b,
strong {
font-weight: bolder;
}
small {
font-size: 80%;
}
sub,
sup {
position: relative;
font-size: 75%;
line-height: 0;
vertical-align: baseline;
}
sub {
bottom: -.25em;
}
sup {
top: -.5em;
}
a {
color: #007bff;
text-decoration: none;
background-color: transparent;
-webkit-text-decoration-skip: objects;
}
a:hover {
color: #0056b3;
text-decoration: underline;
}
a:not([href]):not([tabindex]) {
color: inherit;
text-decoration: none;
}
a:not([href]):not([tabindex]):hover,
a:not([href]):not([tabindex]):focus {
color: inherit;
text-decoration: none;
}
a:not([href]):not([tabindex]):focus {
outline: 0;
}
pre,
code,
kbd,
samp {
font-family: monospace, monospace;
font-size: 1em;
}
pre {
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
-ms-overflow-style: scrollbar;
}
figure {
margin: 0 0 1rem;
}
img {
vertical-align: middle;
border-style: none;
}
svg:not(:root) {
overflow: hidden;
}
table {
border-collapse: collapse;
}
caption {
padding-top: 0.75rem;
padding-bottom: 0.75rem;
color: #6c757d;
text-align: left;
caption-side: bottom;
}
th {
text-align: inherit;
}
label {
display: inline-block;
margin-bottom: .5rem;
}
button {
border-radius: 0;
}
button:focus {
outline: 1px dotted;
outline: 5px auto -webkit-focus-ring-color;
}
input,
button,
select,
optgroup,
textarea {
margin: 0;
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
button,
input {
overflow: visible;
}
button,
select {
text-transform: none;
}
button,
html [type="button"],
[type="reset"],
[type="submit"] {
-webkit-appearance: button;
}
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
padding: 0;
border-style: none;
}
input[type="radio"],
input[type="checkbox"] {
-webkit-box-sizing: border-box;
box-sizing: border-box;
padding: 0;
}
input[type="date"],
input[type="time"],
input[type="datetime-local"],
input[type="month"] {
-webkit-appearance: listbox;
}
textarea {
overflow: auto;
resize: vertical;
}
fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}
legend {
display: block;
width: 100%;
max-width: 100%;
padding: 0;
margin-bottom: .5rem;
font-size: 1.5rem;
line-height: inherit;
color: inherit;
white-space: normal;
}
progress {
vertical-align: baseline;
}
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}
[type="search"] {
outline-offset: -2px;
-webkit-appearance: none;
}
[type="search"]::-webkit-search-cancel-button,
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-file-upload-button {
font: inherit;
-webkit-appearance: button;
}
output {
display: inline-block;
}
summary {
display: list-item;
cursor: pointer;
}
template {
display: none;
}
[hidden] {
display: none !important;
}
h1,
h2,
h3,
h4,
h5,
h6,
.h1,
.h2,
.h3,
.h4,
.h5,
.h6 {
margin-bottom: 0.5rem;
font-family: inherit;
font-weight: 500;
line-height: 1.2;
color: inherit;
}
h1,
.h1 {
font-size: 2.25rem;
}
h2,
.h2 {
font-size: 1.8rem;
}
h3,
.h3 {
font-size: 1.575rem;
}
h4,
.h4 {
font-size: 1.35rem;
}
h5,
.h5 {
font-size: 1.125rem;
}
h6,
.h6 {
font-size: 0.9rem;
}
.lead {
font-size: 1.125rem;
font-weight: 300;
}
.display-1 {
font-size: 6rem;
font-weight: 300;
line-height: 1.2;
}
.display-2 {
font-size: 5.5rem;
font-weight: 300;
line-height: 1.2;
}
.display-3 {
font-size: 4.5rem;
font-weight: 300;
line-height: 1.2;
}
.display-4 {
font-size: 3.5rem;
font-weight: 300;
line-height: 1.2;
}
hr {
margin-top: 1rem;
margin-bottom: 1rem;
border: 0;
border-top: 1px solid rgba(0, 0, 0, 0.1);
}
small,
.small {
font-size: 80%;
font-weight: 400;
}
mark,
.mark {
padding: 0.2em;
background-color: #fcf8e3;
}
.list-unstyled {
padding-left: 0;
list-style: none;
}
.list-inline {
padding-left: 0;
list-style: none;
}
.list-inline-item {
display: inline-block;
}
.list-inline-item:not(:last-child) {
margin-right: 0.5rem;
}
.initialism {
font-size: 90%;
text-transform: uppercase;
}
.blockquote {
margin-bottom: 1rem;
font-size: 1.125rem;
}
.blockquote-footer {
display: block;
font-size: 80%;
color: #6c757d;
}
.blockquote-footer::before {
content: "\2014 \A0";
}
.img-fluid {
max-width: 100%;
height: auto;
}
.img-thumbnail {
padding: 0.25rem;
background-color: #f5f8fa;
border: 1px solid #dee2e6;
border-radius: 0.25rem;
max-width: 100%;
height: auto;
}
.figure {
display: inline-block;
}
.figure-img {
margin-bottom: 0.5rem;
line-height: 1;
}
.figure-caption {
font-size: 90%;
color: #6c757d;
}
code,
kbd,
pre,
samp {
font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
}
code {
font-size: 87.5%;
color: #e83e8c;
word-break: break-word;
}
a > code {
color: inherit;
}
kbd {
padding: 0.2rem 0.4rem;
font-size: 87.5%;
color: #fff;
background-color: #212529;
border-radius: 0.2rem;
}
kbd kbd {
padding: 0;
font-size: 100%;
font-weight: 700;
}
pre {
display: block;
font-size: 87.5%;
color: #212529;
}
pre code {
font-size: inherit;
color: inherit;
word-break: normal;
}
.pre-scrollable {
max-height: 340px;
overflow-y: scroll;
}
.container {
width: 100%;
padding-right: 15px;
padding-left: 15px;
margin-right: auto;
margin-left: auto;
}
@media (min-width: 576px) {
.container {
max-width: 540px;
}
}
@media (min-width: 768px) {
.container {
max-width: 720px;
}
}
@media (min-width: 992px) {
.container {
max-width: 960px;
}
}
@media (min-width: 1200px) {
.container {
max-width: 1140px;
}
}
.container-fluid {
width: 100%;
padding-right: 15px;
padding-left: 15px;
margin-right: auto;
margin-left: auto;
}
.row {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
margin-right: -15px;
margin-left: -15px;
}
.no-gutters {
margin-right: 0;
margin-left: 0;
}
.no-gutters > .col,
.no-gutters > [class*="col-"] {
padding-right: 0;
padding-left: 0;
}
.col-1,
.col-2,
.col-3,
.col-4,
.col-5,
.col-6,
.col-7,
.col-8,
.col-9,
.col-10,
.col-11,
.col-12,
.col,
.col-auto,
.col-sm-1,
.col-sm-2,
.col-sm-3,
.col-sm-4,
.col-sm-5,
.col-sm-6,
.col-sm-7,
.col-sm-8,
.col-sm-9,
.col-sm-10,
.col-sm-11,
.col-sm-12,
.col-sm,
.col-sm-auto,
.col-md-1,
.col-md-2,
.col-md-3,
.col-md-4,
.col-md-5,
.col-md-6,
.col-md-7,
.col-md-8,
.col-md-9,
.col-md-10,
.col-md-11,
.col-md-12,
.col-md,
.col-md-auto,
.col-lg-1,
.col-lg-2,
.col-lg-3,
.col-lg-4,
.col-lg-5,
.col-lg-6,
.col-lg-7,
.col-lg-8,
.col-lg-9,
.col-lg-10,
.col-lg-11,
.col-lg-12,
.col-lg,
.col-lg-auto,
.col-xl-1,
.col-xl-2,
.col-xl-3,
.col-xl-4,
.col-xl-5,
.col-xl-6,
.col-xl-7,
.col-xl-8,
.col-xl-9,
.col-xl-10,
.col-xl-11,
.col-xl-12,
.col-xl,
.col-xl-auto {
position: relative;
width: 100%;
min-height: 1px;
padding-right: 15px;
padding-left: 15px;
}
.col {
-ms-flex-preferred-size: 0;
flex-basis: 0;
-webkit-box-flex: 1;
-ms-flex-positive: 1;
flex-grow: 1;
max-width: 100%;
}
.col-auto {
-webkit-box-flex: 0;
-ms-flex: 0 0 auto;
flex: 0 0 auto;
width: auto;
max-width: none;
}
.col-1 {
-webkit-box-flex: 0;
-ms-flex: 0 0 8.33333333%;
flex: 0 0 8.33333333%;
max-width: 8.33333333%;
}
.col-2 {
-webkit-box-flex: 0;
-ms-flex: 0 0 16.66666667%;
flex: 0 0 16.66666667%;
max-width: 16.66666667%;
}
.col-3 {
-webkit-box-flex: 0;
-ms-flex: 0 0 25%;
flex: 0 0 25%;
max-width: 25%;
}
.col-4 {
-webkit-box-flex: 0;
-ms-flex: 0 0 33.33333333%;
flex: 0 0 33.33333333%;
max-width: 33.33333333%;
}
.col-5 {
-webkit-box-flex: 0;
-ms-flex: 0 0 41.66666667%;
flex: 0 0 41.66666667%;
max-width: 41.66666667%;
}
.col-6 {
-webkit-box-flex: 0;
-ms-flex: 0 0 50%;
flex: 0 0 50%;
max-width: 50%;
}
.col-7 {
-webkit-box-flex: 0;
-ms-flex: 0 0 58.33333333%;
flex: 0 0 58.33333333%;
max-width: 58.33333333%;
}
.col-8 {
-webkit-box-flex: 0;
-ms-flex: 0 0 66.66666667%;
flex: 0 0 66.66666667%;
max-width: 66.66666667%;
}
.col-9 {
-webkit-box-flex: 0;
-ms-flex: 0 0 75%;
flex: 0 0 75%;
max-width: 75%;
}
.col-10 {
-webkit-box-flex: 0;
-ms-flex: 0 0 83.33333333%;
flex: 0 0 83.33333333%;
max-width: 83.33333333%;
}
.col-11 {
-webkit-box-flex: 0;
-ms-flex: 0 0 91.66666667%;
flex: 0 0 91.66666667%;
max-width: 91.66666667%;
}
.col-12 {
-webkit-box-flex: 0;
-ms-flex: 0 0 100%;
flex: 0 0 100%;
max-width: 100%;
}
.order-first {
-webkit-box-ordinal-group: 0;
-ms-flex-order: -1;
order: -1;
}
.order-last {
-webkit-box-ordinal-group: 14;
-ms-flex-order: 13;
order: 13;
}
.order-0 {
-webkit-box-ordinal-group: 1;
-ms-flex-order: 0;
order: 0;
}
.order-1 {
-webkit-box-ordinal-group: 2;
-ms-flex-order: 1;
order: 1;
}
.order-2 {
-webkit-box-ordinal-group: 3;
-ms-flex-order: 2;
order: 2;
}
.order-3 {
-webkit-box-ordinal-group: 4;
-ms-flex-order: 3;
order: 3;
}
.order-4 {
-webkit-box-ordinal-group: 5;
-ms-flex-order: 4;
order: 4;
}
.order-5 {
-webkit-box-ordinal-group: 6;
-ms-flex-order: 5;
order: 5;
}
.order-6 {
-webkit-box-ordinal-group: 7;
-ms-flex-order: 6;
order: 6;
}
.order-7 {
-webkit-box-ordinal-group: 8;
-ms-flex-order: 7;
order: 7;
}
.order-8 {
-webkit-box-ordinal-group: 9;
-ms-flex-order: 8;
order: 8;
}
.order-9 {
-webkit-box-ordinal-group: 10;
-ms-flex-order: 9;
order: 9;
}
.order-10 {
-webkit-box-ordinal-group: 11;
-ms-flex-order: 10;
order: 10;
}
.order-11 {
-webkit-box-ordinal-group: 12;
-ms-flex-order: 11;
order: 11;
}
.order-12 {
-webkit-box-ordinal-group: 13;
-ms-flex-order: 12;
order: 12;
}
.offset-1 {
margin-left: 8.33333333%;
}
.offset-2 {
margin-left: 16.66666667%;
}
.offset-3 {
margin-left: 25%;
}
.offset-4 {
margin-left: 33.33333333%;
}
.offset-5 {
margin-left: 41.66666667%;
}
.offset-6 {
margin-left: 50%;
}
.offset-7 {
margin-left: 58.33333333%;
}
.offset-8 {
margin-left: 66.66666667%;
}
.offset-9 {
margin-left: 75%;
}
.offset-10 {
margin-left: 83.33333333%;
}
.offset-11 {
margin-left: 91.66666667%;
}
@media (min-width: 576px) {
.col-sm {
-ms-flex-preferred-size: 0;
flex-basis: 0;
-webkit-box-flex: 1;
-ms-flex-positive: 1;
flex-grow: 1;
max-width: 100%;
}
.col-sm-auto {
-webkit-box-flex: 0;
-ms-flex: 0 0 auto;
flex: 0 0 auto;
width: auto;
max-width: none;
}
.col-sm-1 {
-webkit-box-flex: 0;
-ms-flex: 0 0 8.33333333%;
flex: 0 0 8.33333333%;
max-width: 8.33333333%;
}
.col-sm-2 {
-webkit-box-flex: 0;
-ms-flex: 0 0 16.66666667%;
flex: 0 0 16.66666667%;
max-width: 16.66666667%;
}
.col-sm-3 {
-webkit-box-flex: 0;
-ms-flex: 0 0 25%;
flex: 0 0 25%;
max-width: 25%;
}
.col-sm-4 {
-webkit-box-flex: 0;
-ms-flex: 0 0 33.33333333%;
flex: 0 0 33.33333333%;
max-width: 33.33333333%;
}
.col-sm-5 {
-webkit-box-flex: 0;
-ms-flex: 0 0 41.66666667%;
flex: 0 0 41.66666667%;
max-width: 41.66666667%;
}
.col-sm-6 {
-webkit-box-flex: 0;
-ms-flex: 0 0 50%;
flex: 0 0 50%;
max-width: 50%;
}
.col-sm-7 {
-webkit-box-flex: 0;
-ms-flex: 0 0 58.33333333%;
flex: 0 0 58.33333333%;
max-width: 58.33333333%;
}
.col-sm-8 {
-webkit-box-flex: 0;
-ms-flex: 0 0 66.66666667%;
flex: 0 0 66.66666667%;
max-width: 66.66666667%;
}
.col-sm-9 {
-webkit-box-flex: 0;
-ms-flex: 0 0 75%;
flex: 0 0 75%;
max-width: 75%;
}
.col-sm-10 {
-webkit-box-flex: 0;
-ms-flex: 0 0 83.33333333%;
flex: 0 0 83.33333333%;
max-width: 83.33333333%;
}
.col-sm-11 {
-webkit-box-flex: 0;
-ms-flex: 0 0 91.66666667%;
flex: 0 0 91.66666667%;
max-width: 91.66666667%;
}
.col-sm-12 {
-webkit-box-flex: 0;
-ms-flex: 0 0 100%;
flex: 0 0 100%;
max-width: 100%;
}
.order-sm-first {
-webkit-box-ordinal-group: 0;
-ms-flex-order: -1;
order: -1;
}
.order-sm-last {
-webkit-box-ordinal-group: 14;
-ms-flex-order: 13;
order: 13;
}
.order-sm-0 {
-webkit-box-ordinal-group: 1;
-ms-flex-order: 0;
order: 0;
}
.order-sm-1 {
-webkit-box-ordinal-group: 2;
-ms-flex-order: 1;
order: 1;
}
.order-sm-2 {
-webkit-box-ordinal-group: 3;
-ms-flex-order: 2;
order: 2;
}
.order-sm-3 {
-webkit-box-ordinal-group: 4;
-ms-flex-order: 3;
order: 3;
}
.order-sm-4 {
-webkit-box-ordinal-group: 5;
-ms-flex-order: 4;
order: 4;
}
.order-sm-5 {
-webkit-box-ordinal-group: 6;
-ms-flex-order: 5;
order: 5;
}
.order-sm-6 {
-webkit-box-ordinal-group: 7;
-ms-flex-order: 6;
order: 6;
}
.order-sm-7 {
-webkit-box-ordinal-group: 8;
-ms-flex-order: 7;
order: 7;
}
.order-sm-8 {
-webkit-box-ordinal-group: 9;
-ms-flex-order: 8;
order: 8;
}
.order-sm-9 {
-webkit-box-ordinal-group: 10;
-ms-flex-order: 9;
order: 9;
}
.order-sm-10 {
-webkit-box-ordinal-group: 11;
-ms-flex-order: 10;
order: 10;
}
.order-sm-11 {
-webkit-box-ordinal-group: 12;
-ms-flex-order: 11;
order: 11;
}
.order-sm-12 {
-webkit-box-ordinal-group: 13;
-ms-flex-order: 12;
order: 12;
}
.offset-sm-0 {
margin-left: 0;
}
.offset-sm-1 {
margin-left: 8.33333333%;
}
.offset-sm-2 {
margin-left: 16.66666667%;
}
.offset-sm-3 {
margin-left: 25%;
}
.offset-sm-4 {
margin-left: 33.33333333%;
}
.offset-sm-5 {
margin-left: 41.66666667%;
}
.offset-sm-6 {
margin-left: 50%;
}
.offset-sm-7 {
margin-left: 58.33333333%;
}
.offset-sm-8 {
margin-left: 66.66666667%;
}
.offset-sm-9 {
margin-left: 75%;
}
.offset-sm-10 {
margin-left: 83.33333333%;
}
.offset-sm-11 {
margin-left: 91.66666667%;
}
}
@media (min-width: 768px) {
.col-md {
-ms-flex-preferred-size: 0;
flex-basis: 0;
-webkit-box-flex: 1;
-ms-flex-positive: 1;
flex-grow: 1;
max-width: 100%;
}
.col-md-auto {
-webkit-box-flex: 0;
-ms-flex: 0 0 auto;
flex: 0 0 auto;
width: auto;
max-width: none;
}
.col-md-1 {
-webkit-box-flex: 0;
-ms-flex: 0 0 8.33333333%;
flex: 0 0 8.33333333%;
max-width: 8.33333333%;
}
.col-md-2 {
-webkit-box-flex: 0;
-ms-flex: 0 0 16.66666667%;
flex: 0 0 16.66666667%;
max-width: 16.66666667%;
}
.col-md-3 {
-webkit-box-flex: 0;
-ms-flex: 0 0 25%;
flex: 0 0 25%;
max-width: 25%;
}
.col-md-4 {
-webkit-box-flex: 0;
-ms-flex: 0 0 33.33333333%;
flex: 0 0 33.33333333%;
max-width: 33.33333333%;
}
.col-md-5 {
-webkit-box-flex: 0;
-ms-flex: 0 0 41.66666667%;
flex: 0 0 41.66666667%;
max-width: 41.66666667%;
}
.col-md-6 {
-webkit-box-flex: 0;
-ms-flex: 0 0 50%;
flex: 0 0 50%;
max-width: 50%;
}
.col-md-7 {
-webkit-box-flex: 0;
-ms-flex: 0 0 58.33333333%;
flex: 0 0 58.33333333%;
max-width: 58.33333333%;
}
.col-md-8 {
-webkit-box-flex: 0;
-ms-flex: 0 0 66.66666667%;
flex: 0 0 66.66666667%;
max-width: 66.66666667%;
}
.col-md-9 {
-webkit-box-flex: 0;
-ms-flex: 0 0 75%;
flex: 0 0 75%;
max-width: 75%;
}
.col-md-10 {
-webkit-box-flex: 0;
-ms-flex: 0 0 83.33333333%;
flex: 0 0 83.33333333%;
max-width: 83.33333333%;
}
.col-md-11 {
-webkit-box-flex: 0;
-ms-flex: 0 0 91.66666667%;
flex: 0 0 91.66666667%;
max-width: 91.66666667%;
}
.col-md-12 {
-webkit-box-flex: 0;
-ms-flex: 0 0 100%;
flex: 0 0 100%;
max-width: 100%;
}
.order-md-first {
-webkit-box-ordinal-group: 0;
-ms-flex-order: -1;
order: -1;
}
.order-md-last {
-webkit-box-ordinal-group: 14;
-ms-flex-order: 13;
order: 13;
}
.order-md-0 {
-webkit-box-ordinal-group: 1;
-ms-flex-order: 0;
order: 0;
}
.order-md-1 {
-webkit-box-ordinal-group: 2;
-ms-flex-order: 1;
order: 1;
}
.order-md-2 {
-webkit-box-ordinal-group: 3;
-ms-flex-order: 2;
order: 2;
}
.order-md-3 {
-webkit-box-ordinal-group: 4;
-ms-flex-order: 3;
order: 3;
}
.order-md-4 {
-webkit-box-ordinal-group: 5;
-ms-flex-order: 4;
order: 4;
}
.order-md-5 {
-webkit-box-ordinal-group: 6;
-ms-flex-order: 5;
order: 5;
}
.order-md-6 {
-webkit-box-ordinal-group: 7;
-ms-flex-order: 6;
order: 6;
}
.order-md-7 {
-webkit-box-ordinal-group: 8;
-ms-flex-order: 7;
order: 7;
}
.order-md-8 {
-webkit-box-ordinal-group: 9;
-ms-flex-order: 8;
order: 8;
}
.order-md-9 {
-webkit-box-ordinal-group: 10;
-ms-flex-order: 9;
order: 9;
}
.order-md-10 {
-webkit-box-ordinal-group: 11;
-ms-flex-order: 10;
order: 10;
}
.order-md-11 {
-webkit-box-ordinal-group: 12;
-ms-flex-order: 11;
order: 11;
}
.order-md-12 {
-webkit-box-ordinal-group: 13;
-ms-flex-order: 12;
order: 12;
}
.offset-md-0 {
margin-left: 0;
}
.offset-md-1 {
margin-left: 8.33333333%;
}
.offset-md-2 {
margin-left: 16.66666667%;
}
.offset-md-3 {
margin-left: 25%;
}
.offset-md-4 {
margin-left: 33.33333333%;
}
.offset-md-5 {
margin-left: 41.66666667%;
}
.offset-md-6 {
margin-left: 50%;
}
.offset-md-7 {
margin-left: 58.33333333%;
}
.offset-md-8 {
margin-left: 66.66666667%;
}
.offset-md-9 {
margin-left: 75%;
}
.offset-md-10 {
margin-left: 83.33333333%;
}
.offset-md-11 {
margin-left: 91.66666667%;
}
}
@media (min-width: 992px) {
.col-lg {
-ms-flex-preferred-size: 0;
flex-basis: 0;
-webkit-box-flex: 1;
-ms-flex-positive: 1;
flex-grow: 1;
max-width: 100%;
}
.col-lg-auto {
-webkit-box-flex: 0;
-ms-flex: 0 0 auto;
flex: 0 0 auto;
width: auto;
max-width: none;
}
.col-lg-1 {
-webkit-box-flex: 0;
-ms-flex: 0 0 8.33333333%;
flex: 0 0 8.33333333%;
max-width: 8.33333333%;
}
.col-lg-2 {
-webkit-box-flex: 0;
-ms-flex: 0 0 16.66666667%;
flex: 0 0 16.66666667%;
max-width: 16.66666667%;
}
.col-lg-3 {
-webkit-box-flex: 0;
-ms-flex: 0 0 25%;
flex: 0 0 25%;
max-width: 25%;
}
.col-lg-4 {
-webkit-box-flex: 0;
-ms-flex: 0 0 33.33333333%;
flex: 0 0 33.33333333%;
max-width: 33.33333333%;
}
.col-lg-5 {
-webkit-box-flex: 0;
-ms-flex: 0 0 41.66666667%;
flex: 0 0 41.66666667%;
max-width: 41.66666667%;
}
.col-lg-6 {
-webkit-box-flex: 0;
-ms-flex: 0 0 50%;
flex: 0 0 50%;
max-width: 50%;
}
.col-lg-7 {
-webkit-box-flex: 0;
-ms-flex: 0 0 58.33333333%;
flex: 0 0 58.33333333%;
max-width: 58.33333333%;
}
.col-lg-8 {
-webkit-box-flex: 0;
-ms-flex: 0 0 66.66666667%;
flex: 0 0 66.66666667%;
max-width: 66.66666667%;
}
.col-lg-9 {
-webkit-box-flex: 0;
-ms-flex: 0 0 75%;
flex: 0 0 75%;
max-width: 75%;
}
.col-lg-10 {
-webkit-box-flex: 0;
-ms-flex: 0 0 83.33333333%;
flex: 0 0 83.33333333%;
max-width: 83.33333333%;
}
.col-lg-11 {
-webkit-box-flex: 0;
-ms-flex: 0 0 91.66666667%;
flex: 0 0 91.66666667%;
max-width: 91.66666667%;
}
.col-lg-12 {
-webkit-box-flex: 0;
-ms-flex: 0 0 100%;
flex: 0 0 100%;
max-width: 100%;
}
.order-lg-first {
-webkit-box-ordinal-group: 0;
-ms-flex-order: -1;
order: -1;
}
.order-lg-last {
-webkit-box-ordinal-group: 14;
-ms-flex-order: 13;
order: 13;
}
.order-lg-0 {
-webkit-box-ordinal-group: 1;
-ms-flex-order: 0;
order: 0;
}
.order-lg-1 {
-webkit-box-ordinal-group: 2;
-ms-flex-order: 1;
order: 1;
}
.order-lg-2 {
-webkit-box-ordinal-group: 3;
-ms-flex-order: 2;
order: 2;
}
.order-lg-3 {
-webkit-box-ordinal-group: 4;
-ms-flex-order: 3;
order: 3;
}
.order-lg-4 {
-webkit-box-ordinal-group: 5;
-ms-flex-order: 4;
order: 4;
}
.order-lg-5 {
-webkit-box-ordinal-group: 6;
-ms-flex-order: 5;
order: 5;
}
.order-lg-6 {
-webkit-box-ordinal-group: 7;
-ms-flex-order: 6;
order: 6;
}
.order-lg-7 {
-webkit-box-ordinal-group: 8;
-ms-flex-order: 7;
order: 7;
}
.order-lg-8 {
-webkit-box-ordinal-group: 9;
-ms-flex-order: 8;
order: 8;
}
.order-lg-9 {
-webkit-box-ordinal-group: 10;
-ms-flex-order: 9;
order: 9;
}
.order-lg-10 {
-webkit-box-ordinal-group: 11;
-ms-flex-order: 10;
order: 10;
}
.order-lg-11 {
-webkit-box-ordinal-group: 12;
-ms-flex-order: 11;
order: 11;
}
.order-lg-12 {
-webkit-box-ordinal-group: 13;
-ms-flex-order: 12;
order: 12;
}
.offset-lg-0 {
margin-left: 0;
}
.offset-lg-1 {
margin-left: 8.33333333%;
}
.offset-lg-2 {
margin-left: 16.66666667%;
}
.offset-lg-3 {
margin-left: 25%;
}
.offset-lg-4 {
margin-left: 33.33333333%;
}
.offset-lg-5 {
margin-left: 41.66666667%;
}
.offset-lg-6 {
margin-left: 50%;
}
.offset-lg-7 {
margin-left: 58.33333333%;
}
.offset-lg-8 {
margin-left: 66.66666667%;
}
.offset-lg-9 {
margin-left: 75%;
}
.offset-lg-10 {
margin-left: 83.33333333%;
}
.offset-lg-11 {
margin-left: 91.66666667%;
}
}
@media (min-width: 1200px) {
.col-xl {
-ms-flex-preferred-size: 0;
flex-basis: 0;
-webkit-box-flex: 1;
-ms-flex-positive: 1;
flex-grow: 1;
max-width: 100%;
}
.col-xl-auto {
-webkit-box-flex: 0;
-ms-flex: 0 0 auto;
flex: 0 0 auto;
width: auto;
max-width: none;
}
.col-xl-1 {
-webkit-box-flex: 0;
-ms-flex: 0 0 8.33333333%;
flex: 0 0 8.33333333%;
max-width: 8.33333333%;
}
.col-xl-2 {
-webkit-box-flex: 0;
-ms-flex: 0 0 16.66666667%;
flex: 0 0 16.66666667%;
max-width: 16.66666667%;
}
.col-xl-3 {
-webkit-box-flex: 0;
-ms-flex: 0 0 25%;
flex: 0 0 25%;
max-width: 25%;
}
.col-xl-4 {
-webkit-box-flex: 0;
-ms-flex: 0 0 33.33333333%;
flex: 0 0 33.33333333%;
max-width: 33.33333333%;
}
.col-xl-5 {
-webkit-box-flex: 0;
-ms-flex: 0 0 41.66666667%;
flex: 0 0 41.66666667%;
max-width: 41.66666667%;
}
.col-xl-6 {
-webkit-box-flex: 0;
-ms-flex: 0 0 50%;
flex: 0 0 50%;
max-width: 50%;
}
.col-xl-7 {
-webkit-box-flex: 0;
-ms-flex: 0 0 58.33333333%;
flex: 0 0 58.33333333%;
max-width: 58.33333333%;
}
.col-xl-8 {
-webkit-box-flex: 0;
-ms-flex: 0 0 66.66666667%;
flex: 0 0 66.66666667%;
max-width: 66.66666667%;
}
.col-xl-9 {
-webkit-box-flex: 0;
-ms-flex: 0 0 75%;
flex: 0 0 75%;
max-width: 75%;
}
.col-xl-10 {
-webkit-box-flex: 0;
-ms-flex: 0 0 83.33333333%;
flex: 0 0 83.33333333%;
max-width: 83.33333333%;
}
.col-xl-11 {
-webkit-box-flex: 0;
-ms-flex: 0 0 91.66666667%;
flex: 0 0 91.66666667%;
max-width: 91.66666667%;
}
.col-xl-12 {
-webkit-box-flex: 0;
-ms-flex: 0 0 100%;
flex: 0 0 100%;
max-width: 100%;
}
.order-xl-first {
-webkit-box-ordinal-group: 0;
-ms-flex-order: -1;
order: -1;
}
.order-xl-last {
-webkit-box-ordinal-group: 14;
-ms-flex-order: 13;
order: 13;
}
.order-xl-0 {
-webkit-box-ordinal-group: 1;
-ms-flex-order: 0;
order: 0;
}
.order-xl-1 {
-webkit-box-ordinal-group: 2;
-ms-flex-order: 1;
order: 1;
}
.order-xl-2 {
-webkit-box-ordinal-group: 3;
-ms-flex-order: 2;
order: 2;
}
.order-xl-3 {
-webkit-box-ordinal-group: 4;
-ms-flex-order: 3;
order: 3;
}
.order-xl-4 {
-webkit-box-ordinal-group: 5;
-ms-flex-order: 4;
order: 4;
}
.order-xl-5 {
-webkit-box-ordinal-group: 6;
-ms-flex-order: 5;
order: 5;
}
.order-xl-6 {
-webkit-box-ordinal-group: 7;
-ms-flex-order: 6;
order: 6;
}
.order-xl-7 {
-webkit-box-ordinal-group: 8;
-ms-flex-order: 7;
order: 7;
}
.order-xl-8 {
-webkit-box-ordinal-group: 9;
-ms-flex-order: 8;
order: 8;
}
.order-xl-9 {
-webkit-box-ordinal-group: 10;
-ms-flex-order: 9;
order: 9;
}
.order-xl-10 {
-webkit-box-ordinal-group: 11;
-ms-flex-order: 10;
order: 10;
}
.order-xl-11 {
-webkit-box-ordinal-group: 12;
-ms-flex-order: 11;
order: 11;
}
.order-xl-12 {
-webkit-box-ordinal-group: 13;
-ms-flex-order: 12;
order: 12;
}
.offset-xl-0 {
margin-left: 0;
}
.offset-xl-1 {
margin-left: 8.33333333%;
}
.offset-xl-2 {
margin-left: 16.66666667%;
}
.offset-xl-3 {
margin-left: 25%;
}
.offset-xl-4 {
margin-left: 33.33333333%;
}
.offset-xl-5 {
margin-left: 41.66666667%;
}
.offset-xl-6 {
margin-left: 50%;
}
.offset-xl-7 {
margin-left: 58.33333333%;
}
.offset-xl-8 {
margin-left: 66.66666667%;
}
.offset-xl-9 {
margin-left: 75%;
}
.offset-xl-10 {
margin-left: 83.33333333%;
}
.offset-xl-11 {
margin-left: 91.66666667%;
}
}
.table {
width: 100%;
max-width: 100%;
margin-bottom: 1rem;
background-color: transparent;
}
.table th,
.table td {
padding: 0.75rem;
vertical-align: top;
border-top: 1px solid #dee2e6;
}
.table thead th {
vertical-align: bottom;
border-bottom: 2px solid #dee2e6;
}
.table tbody + tbody {
border-top: 2px solid #dee2e6;
}
.table .table {
background-color: #f5f8fa;
}
.table-sm th,
.table-sm td {
padding: 0.3rem;
}
.table-bordered {
border: 1px solid #dee2e6;
}
.table-bordered th,
.table-bordered td {
border: 1px solid #dee2e6;
}
.table-bordered thead th,
.table-bordered thead td {
border-bottom-width: 2px;
}
.table-striped tbody tr:nth-of-type(odd) {
background-color: rgba(0, 0, 0, 0.05);
}
.table-hover tbody tr:hover {
background-color: rgba(0, 0, 0, 0.075);
}
.table-primary,
.table-primary > th,
.table-primary > td {
background-color: #b8daff;
}
.table-hover .table-primary:hover {
background-color: #9fcdff;
}
.table-hover .table-primary:hover > td,
.table-hover .table-primary:hover > th {
background-color: #9fcdff;
}
.table-secondary,
.table-secondary > th,
.table-secondary > td {
background-color: #d6d8db;
}
.table-hover .table-secondary:hover {
background-color: #c8cbcf;
}
.table-hover .table-secondary:hover > td,
.table-hover .table-secondary:hover > th {
background-color: #c8cbcf;
}
.table-success,
.table-success > th,
.table-success > td {
background-color: #c3e6cb;
}
.table-hover .table-success:hover {
background-color: #b1dfbb;
}
.table-hover .table-success:hover > td,
.table-hover .table-success:hover > th {
background-color: #b1dfbb;
}
.table-info,
.table-info > th,
.table-info > td {
background-color: #bee5eb;
}
.table-hover .table-info:hover {
background-color: #abdde5;
}
.table-hover .table-info:hover > td,
.table-hover .table-info:hover > th {
background-color: #abdde5;
}
.table-warning,
.table-warning > th,
.table-warning > td {
background-color: #ffeeba;
}
.table-hover .table-warning:hover {
background-color: #ffe8a1;
}
.table-hover .table-warning:hover > td,
.table-hover .table-warning:hover > th {
background-color: #ffe8a1;
}
.table-danger,
.table-danger > th,
.table-danger > td {
background-color: #f5c6cb;
}
.table-hover .table-danger:hover {
background-color: #f1b0b7;
}
.table-hover .table-danger:hover > td,
.table-hover .table-danger:hover > th {
background-color: #f1b0b7;
}
.table-light,
.table-light > th,
.table-light > td {
background-color: #fdfdfe;
}
.table-hover .table-light:hover {
background-color: #ececf6;
}
.table-hover .table-light:hover > td,
.table-hover .table-light:hover > th {
background-color: #ececf6;
}
.table-dark,
.table-dark > th,
.table-dark > td {
background-color: #c6c8ca;
}
.table-hover .table-dark:hover {
background-color: #b9bbbe;
}
.table-hover .table-dark:hover > td,
.table-hover .table-dark:hover > th {
background-color: #b9bbbe;
}
.table-active,
.table-active > th,
.table-active > td {
background-color: rgba(0, 0, 0, 0.075);
}
.table-hover .table-active:hover {
background-color: rgba(0, 0, 0, 0.075);
}
.table-hover .table-active:hover > td,
.table-hover .table-active:hover > th {
background-color: rgba(0, 0, 0, 0.075);
}
.table .thead-dark th {
color: #f5f8fa;
background-color: #212529;
border-color: #32383e;
}
.table .thead-light th {
color: #495057;
background-color: #e9ecef;
border-color: #dee2e6;
}
.table-dark {
color: #f5f8fa;
background-color: #212529;
}
.table-dark th,
.table-dark td,
.table-dark thead th {
border-color: #32383e;
}
.table-dark.table-bordered {
border: 0;
}
.table-dark.table-striped tbody tr:nth-of-type(odd) {
background-color: rgba(255, 255, 255, 0.05);
}
.table-dark.table-hover tbody tr:hover {
background-color: rgba(255, 255, 255, 0.075);
}
@media (max-width: 575.98px) {
.table-responsive-sm {
display: block;
width: 100%;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
-ms-overflow-style: -ms-autohiding-scrollbar;
}
.table-responsive-sm > .table-bordered {
border: 0;
}
}
@media (max-width: 767.98px) {
.table-responsive-md {
display: block;
width: 100%;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
-ms-overflow-style: -ms-autohiding-scrollbar;
}
.table-responsive-md > .table-bordered {
border: 0;
}
}
@media (max-width: 991.98px) {
.table-responsive-lg {
display: block;
width: 100%;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
-ms-overflow-style: -ms-autohiding-scrollbar;
}
.table-responsive-lg > .table-bordered {
border: 0;
}
}
@media (max-width: 1199.98px) {
.table-responsive-xl {
display: block;
width: 100%;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
-ms-overflow-style: -ms-autohiding-scrollbar;
}
.table-responsive-xl > .table-bordered {
border: 0;
}
}
.table-responsive {
display: block;
width: 100%;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
-ms-overflow-style: -ms-autohiding-scrollbar;
}
.table-responsive > .table-bordered {
border: 0;
}
.form-control {
display: block;
width: 100%;
padding: 0.375rem 0.75rem;
font-size: 0.9rem;
line-height: 1.6;
color: #495057;
background-color: #fff;
background-clip: padding-box;
border: 1px solid #ced4da;
border-radius: 0.25rem;
-webkit-transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;
transition: border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;
transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;
}
.form-control::-ms-expand {
background-color: transparent;
border: 0;
}
.form-control:focus {
color: #495057;
background-color: #fff;
border-color: #80bdff;
outline: 0;
-webkit-box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
}
.form-control::-webkit-input-placeholder {
color: #6c757d;
opacity: 1;
}
.form-control:-ms-input-placeholder {
color: #6c757d;
opacity: 1;
}
.form-control::-ms-input-placeholder {
color: #6c757d;
opacity: 1;
}
.form-control::placeholder {
color: #6c757d;
opacity: 1;
}
.form-control:disabled,
.form-control[readonly] {
background-color: #e9ecef;
opacity: 1;
}
select.form-control:not([size]):not([multiple]) {
height: calc(2.19rem + 2px);
}
select.form-control:focus::-ms-value {
color: #495057;
background-color: #fff;
}
.form-control-file,
.form-control-range {
display: block;
width: 100%;
}
.col-form-label {
padding-top: calc(0.375rem + 1px);
padding-bottom: calc(0.375rem + 1px);
margin-bottom: 0;
font-size: inherit;
line-height: 1.6;
}
.col-form-label-lg {
padding-top: calc(0.5rem + 1px);
padding-bottom: calc(0.5rem + 1px);
font-size: 1.125rem;
line-height: 1.5;
}
.col-form-label-sm {
padding-top: calc(0.25rem + 1px);
padding-bottom: calc(0.25rem + 1px);
font-size: 0.7875rem;
line-height: 1.5;
}
.form-control-plaintext {
display: block;
width: 100%;
padding-top: 0.375rem;
padding-bottom: 0.375rem;
margin-bottom: 0;
line-height: 1.6;
background-color: transparent;
border: solid transparent;
border-width: 1px 0;
}
.form-control-plaintext.form-control-sm,
.input-group-sm > .form-control-plaintext.form-control,
.input-group-sm > .input-group-prepend > .form-control-plaintext.input-group-text,
.input-group-sm > .input-group-append > .form-control-plaintext.input-group-text,
.input-group-sm > .input-group-prepend > .form-control-plaintext.btn,
.input-group-sm > .input-group-append > .form-control-plaintext.btn,
.form-control-plaintext.form-control-lg,
.input-group-lg > .form-control-plaintext.form-control,
.input-group-lg > .input-group-prepend > .form-control-plaintext.input-group-text,
.input-group-lg > .input-group-append > .form-control-plaintext.input-group-text,
.input-group-lg > .input-group-prepend > .form-control-plaintext.btn,
.input-group-lg > .input-group-append > .form-control-plaintext.btn {
padding-right: 0;
padding-left: 0;
}
.form-control-sm,
.input-group-sm > .form-control,
.input-group-sm > .input-group-prepend > .input-group-text,
.input-group-sm > .input-group-append > .input-group-text,
.input-group-sm > .input-group-prepend > .btn,
.input-group-sm > .input-group-append > .btn {
padding: 0.25rem 0.5rem;
font-size: 0.7875rem;
line-height: 1.5;
border-radius: 0.2rem;
}
select.form-control-sm:not([size]):not([multiple]),
.input-group-sm > select.form-control:not([size]):not([multiple]),
.input-group-sm > .input-group-prepend > select.input-group-text:not([size]):not([multiple]),
.input-group-sm > .input-group-append > select.input-group-text:not([size]):not([multiple]),
.input-group-sm > .input-group-prepend > select.btn:not([size]):not([multiple]),
.input-group-sm > .input-group-append > select.btn:not([size]):not([multiple]) {
height: calc(1.68125rem + 2px);
}
.form-control-lg,
.input-group-lg > .form-control,
.input-group-lg > .input-group-prepend > .input-group-text,
.input-group-lg > .input-group-append > .input-group-text,
.input-group-lg > .input-group-prepend > .btn,
.input-group-lg > .input-group-append > .btn {
padding: 0.5rem 1rem;
font-size: 1.125rem;
line-height: 1.5;
border-radius: 0.3rem;
}
select.form-control-lg:not([size]):not([multiple]),
.input-group-lg > select.form-control:not([size]):not([multiple]),
.input-group-lg > .input-group-prepend > select.input-group-text:not([size]):not([multiple]),
.input-group-lg > .input-group-append > select.input-group-text:not([size]):not([multiple]),
.input-group-lg > .input-group-prepend > select.btn:not([size]):not([multiple]),
.input-group-lg > .input-group-append > select.btn:not([size]):not([multiple]) {
height: calc(2.6875rem + 2px);
}
.form-group {
margin-bottom: 1rem;
}
.form-text {
display: block;
margin-top: 0.25rem;
}
.form-row {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
margin-right: -5px;
margin-left: -5px;
}
.form-row > .col,
.form-row > [class*="col-"] {
padding-right: 5px;
padding-left: 5px;
}
.form-check {
position: relative;
display: block;
padding-left: 1.25rem;
}
.form-check-input {
position: absolute;
margin-top: 0.3rem;
margin-left: -1.25rem;
}
.form-check-input:disabled ~ .form-check-label {
color: #6c757d;
}
.form-check-label {
margin-bottom: 0;
}
.form-check-inline {
display: -webkit-inline-box;
display: -ms-inline-flexbox;
display: inline-flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
padding-left: 0;
margin-right: 0.75rem;
}
.form-check-inline .form-check-input {
position: static;
margin-top: 0;
margin-right: 0.3125rem;
margin-left: 0;
}
.valid-feedback {
display: none;
width: 100%;
margin-top: 0.25rem;
font-size: 80%;
color: #28a745;
}
.valid-tooltip {
position: absolute;
top: 100%;
z-index: 5;
display: none;
max-width: 100%;
padding: .5rem;
margin-top: .1rem;
font-size: .875rem;
line-height: 1;
color: #fff;
background-color: rgba(40, 167, 69, 0.8);
border-radius: .2rem;
}
.was-validated .form-control:valid,
.form-control.is-valid,
.was-validated
.custom-select:valid,
.custom-select.is-valid {
border-color: #28a745;
}
.was-validated .form-control:valid:focus,
.form-control.is-valid:focus,
.was-validated
.custom-select:valid:focus,
.custom-select.is-valid:focus {
border-color: #28a745;
-webkit-box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);
box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);
}
.was-validated .form-control:valid ~ .valid-feedback,
.was-validated .form-control:valid ~ .valid-tooltip,
.form-control.is-valid ~ .valid-feedback,
.form-control.is-valid ~ .valid-tooltip,
.was-validated
.custom-select:valid ~ .valid-feedback,
.was-validated
.custom-select:valid ~ .valid-tooltip,
.custom-select.is-valid ~ .valid-feedback,
.custom-select.is-valid ~ .valid-tooltip {
display: block;
}
.was-validated .form-check-input:valid ~ .form-check-label,
.form-check-input.is-valid ~ .form-check-label {
color: #28a745;
}
.was-validated .form-check-input:valid ~ .valid-feedback,
.was-validated .form-check-input:valid ~ .valid-tooltip,
.form-check-input.is-valid ~ .valid-feedback,
.form-check-input.is-valid ~ .valid-tooltip {
display: block;
}
.was-validated .custom-control-input:valid ~ .custom-control-label,
.custom-control-input.is-valid ~ .custom-control-label {
color: #28a745;
}
.was-validated .custom-control-input:valid ~ .custom-control-label::before,
.custom-control-input.is-valid ~ .custom-control-label::before {
background-color: #71dd8a;
}
.was-validated .custom-control-input:valid ~ .valid-feedback,
.was-validated .custom-control-input:valid ~ .valid-tooltip,
.custom-control-input.is-valid ~ .valid-feedback,
.custom-control-input.is-valid ~ .valid-tooltip {
display: block;
}
.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before,
.custom-control-input.is-valid:checked ~ .custom-control-label::before {
background-color: #34ce57;
}
.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before,
.custom-control-input.is-valid:focus ~ .custom-control-label::before {
-webkit-box-shadow: 0 0 0 1px #f5f8fa, 0 0 0 0.2rem rgba(40, 167, 69, 0.25);
box-shadow: 0 0 0 1px #f5f8fa, 0 0 0 0.2rem rgba(40, 167, 69, 0.25);
}
.was-validated .custom-file-input:valid ~ .custom-file-label,
.custom-file-input.is-valid ~ .custom-file-label {
border-color: #28a745;
}
.was-validated .custom-file-input:valid ~ .custom-file-label::before,
.custom-file-input.is-valid ~ .custom-file-label::before {
border-color: inherit;
}
.was-validated .custom-file-input:valid ~ .valid-feedback,
.was-validated .custom-file-input:valid ~ .valid-tooltip,
.custom-file-input.is-valid ~ .valid-feedback,
.custom-file-input.is-valid ~ .valid-tooltip {
display: block;
}
.was-validated .custom-file-input:valid:focus ~ .custom-file-label,
.custom-file-input.is-valid:focus ~ .custom-file-label {
-webkit-box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);
box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);
}
.invalid-feedback {
display: none;
width: 100%;
margin-top: 0.25rem;
font-size: 80%;
color: #dc3545;
}
.invalid-tooltip {
position: absolute;
top: 100%;
z-index: 5;
display: none;
max-width: 100%;
padding: .5rem;
margin-top: .1rem;
font-size: .875rem;
line-height: 1;
color: #fff;
background-color: rgba(220, 53, 69, 0.8);
border-radius: .2rem;
}
.was-validated .form-control:invalid,
.form-control.is-invalid,
.was-validated
.custom-select:invalid,
.custom-select.is-invalid {
border-color: #dc3545;
}
.was-validated .form-control:invalid:focus,
.form-control.is-invalid:focus,
.was-validated
.custom-select:invalid:focus,
.custom-select.is-invalid:focus {
border-color: #dc3545;
-webkit-box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);
box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);
}
.was-validated .form-control:invalid ~ .invalid-feedback,
.was-validated .form-control:invalid ~ .invalid-tooltip,
.form-control.is-invalid ~ .invalid-feedback,
.form-control.is-invalid ~ .invalid-tooltip,
.was-validated
.custom-select:invalid ~ .invalid-feedback,
.was-validated
.custom-select:invalid ~ .invalid-tooltip,
.custom-select.is-invalid ~ .invalid-feedback,
.custom-select.is-invalid ~ .invalid-tooltip {
display: block;
}
.was-validated .form-check-input:invalid ~ .form-check-label,
.form-check-input.is-invalid ~ .form-check-label {
color: #dc3545;
}
.was-validated .form-check-input:invalid ~ .invalid-feedback,
.was-validated .form-check-input:invalid ~ .invalid-tooltip,
.form-check-input.is-invalid ~ .invalid-feedback,
.form-check-input.is-invalid ~ .invalid-tooltip {
display: block;
}
.was-validated .custom-control-input:invalid ~ .custom-control-label,
.custom-control-input.is-invalid ~ .custom-control-label {
color: #dc3545;
}
.was-validated .custom-control-input:invalid ~ .custom-control-label::before,
.custom-control-input.is-invalid ~ .custom-control-label::before {
background-color: #efa2a9;
}
.was-validated .custom-control-input:invalid ~ .invalid-feedback,
.was-validated .custom-control-input:invalid ~ .invalid-tooltip,
.custom-control-input.is-invalid ~ .invalid-feedback,
.custom-control-input.is-invalid ~ .invalid-tooltip {
display: block;
}
.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before,
.custom-control-input.is-invalid:checked ~ .custom-control-label::before {
background-color: #e4606d;
}
.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before,
.custom-control-input.is-invalid:focus ~ .custom-control-label::before {
-webkit-box-shadow: 0 0 0 1px #f5f8fa, 0 0 0 0.2rem rgba(220, 53, 69, 0.25);
box-shadow: 0 0 0 1px #f5f8fa, 0 0 0 0.2rem rgba(220, 53, 69, 0.25);
}
.was-validated .custom-file-input:invalid ~ .custom-file-label,
.custom-file-input.is-invalid ~ .custom-file-label {
border-color: #dc3545;
}
.was-validated .custom-file-input:invalid ~ .custom-file-label::before,
.custom-file-input.is-invalid ~ .custom-file-label::before {
border-color: inherit;
}
.was-validated .custom-file-input:invalid ~ .invalid-feedback,
.was-validated .custom-file-input:invalid ~ .invalid-tooltip,
.custom-file-input.is-invalid ~ .invalid-feedback,
.custom-file-input.is-invalid ~ .invalid-tooltip {
display: block;
}
.was-validated .custom-file-input:invalid:focus ~ .custom-file-label,
.custom-file-input.is-invalid:focus ~ .custom-file-label {
-webkit-box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);
box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);
}
.form-inline {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-flow: row wrap;
flex-flow: row wrap;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
}
.form-inline .form-check {
width: 100%;
}
@media (min-width: 576px) {
.form-inline label {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
margin-bottom: 0;
}
.form-inline .form-group {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-flex: 0;
-ms-flex: 0 0 auto;
flex: 0 0 auto;
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-flow: row wrap;
flex-flow: row wrap;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
margin-bottom: 0;
}
.form-inline .form-control {
display: inline-block;
width: auto;
vertical-align: middle;
}
.form-inline .form-control-plaintext {
display: inline-block;
}
.form-inline .input-group {
width: auto;
}
.form-inline .form-check {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
width: auto;
padding-left: 0;
}
.form-inline .form-check-input {
position: relative;
margin-top: 0;
margin-right: 0.25rem;
margin-left: 0;
}
.form-inline .custom-control {
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
}
.form-inline .custom-control-label {
margin-bottom: 0;
}
}
.btn {
display: inline-block;
font-weight: 400;
text-align: center;
white-space: nowrap;
vertical-align: middle;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
border: 1px solid transparent;
padding: 0.375rem 0.75rem;
font-size: 0.9rem;
line-height: 1.6;
border-radius: 0.25rem;
-webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;
transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;
transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out;
}
.btn:hover,
.btn:focus {
text-decoration: none;
}
.btn:focus,
.btn.focus {
outline: 0;
-webkit-box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
}
.btn.disabled,
.btn:disabled {
opacity: 0.65;
}
.btn:not(:disabled):not(.disabled) {
cursor: pointer;
}
.btn:not(:disabled):not(.disabled):active,
.btn:not(:disabled):not(.disabled).active {
background-image: none;
}
a.btn.disabled,
fieldset:disabled a.btn {
pointer-events: none;
}
.btn-primary {
color: #fff;
background-color: #007bff;
border-color: #007bff;
}
.btn-primary:hover {
color: #fff;
background-color: #0069d9;
border-color: #0062cc;
}
.btn-primary:focus,
.btn-primary.focus {
-webkit-box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);
box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);
}
.btn-primary.disabled,
.btn-primary:disabled {
color: #fff;
background-color: #007bff;
border-color: #007bff;
}
.btn-primary:not(:disabled):not(.disabled):active,
.btn-primary:not(:disabled):not(.disabled).active,
.show > .btn-primary.dropdown-toggle {
color: #fff;
background-color: #0062cc;
border-color: #005cbf;
}
.btn-primary:not(:disabled):not(.disabled):active:focus,
.btn-primary:not(:disabled):not(.disabled).active:focus,
.show > .btn-primary.dropdown-toggle:focus {
-webkit-box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);
box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);
}
.btn-secondary {
color: #fff;
background-color: #6c757d;
border-color: #6c757d;
}
.btn-secondary:hover {
color: #fff;
background-color: #5a6268;
border-color: #545b62;
}
.btn-secondary:focus,
.btn-secondary.focus {
-webkit-box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);
box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);
}
.btn-secondary.disabled,
.btn-secondary:disabled {
color: #fff;
background-color: #6c757d;
border-color: #6c757d;
}
.btn-secondary:not(:disabled):not(.disabled):active,
.btn-secondary:not(:disabled):not(.disabled).active,
.show > .btn-secondary.dropdown-toggle {
color: #fff;
background-color: #545b62;
border-color: #4e555b;
}
.btn-secondary:not(:disabled):not(.disabled):active:focus,
.btn-secondary:not(:disabled):not(.disabled).active:focus,
.show > .btn-secondary.dropdown-toggle:focus {
-webkit-box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);
box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);
}
.btn-success {
color: #fff;
background-color: #28a745;
border-color: #28a745;
}
.btn-success:hover {
color: #fff;
background-color: #218838;
border-color: #1e7e34;
}
.btn-success:focus,
.btn-success.focus {
-webkit-box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);
box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);
}
.btn-success.disabled,
.btn-success:disabled {
color: #fff;
background-color: #28a745;
border-color: #28a745;
}
.btn-success:not(:disabled):not(.disabled):active,
.btn-success:not(:disabled):not(.disabled).active,
.show > .btn-success.dropdown-toggle {
color: #fff;
background-color: #1e7e34;
border-color: #1c7430;
}
.btn-success:not(:disabled):not(.disabled):active:focus,
.btn-success:not(:disabled):not(.disabled).active:focus,
.show > .btn-success.dropdown-toggle:focus {
-webkit-box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);
box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);
}
.btn-info {
color: #fff;
background-color: #17a2b8;
border-color: #17a2b8;
}
.btn-info:hover {
color: #fff;
background-color: #138496;
border-color: #117a8b;
}
.btn-info:focus,
.btn-info.focus {
-webkit-box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);
box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);
}
.btn-info.disabled,
.btn-info:disabled {
color: #fff;
background-color: #17a2b8;
border-color: #17a2b8;
}
.btn-info:not(:disabled):not(.disabled):active,
.btn-info:not(:disabled):not(.disabled).active,
.show > .btn-info.dropdown-toggle {
color: #fff;
background-color: #117a8b;
border-color: #10707f;
}
.btn-info:not(:disabled):not(.disabled):active:focus,
.btn-info:not(:disabled):not(.disabled).active:focus,
.show > .btn-info.dropdown-toggle:focus {
-webkit-box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);
box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);
}
.btn-warning {
color: #212529;
background-color: #ffc107;
border-color: #ffc107;
}
.btn-warning:hover {
color: #212529;
background-color: #e0a800;
border-color: #d39e00;
}
.btn-warning:focus,
.btn-warning.focus {
-webkit-box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);
box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);
}
.btn-warning.disabled,
.btn-warning:disabled {
color: #212529;
background-color: #ffc107;
border-color: #ffc107;
}
.btn-warning:not(:disabled):not(.disabled):active,
.btn-warning:not(:disabled):not(.disabled).active,
.show > .btn-warning.dropdown-toggle {
color: #212529;
background-color: #d39e00;
border-color: #c69500;
}
.btn-warning:not(:disabled):not(.disabled):active:focus,
.btn-warning:not(:disabled):not(.disabled).active:focus,
.show > .btn-warning.dropdown-toggle:focus {
-webkit-box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);
box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);
}
.btn-danger {
color: #fff;
background-color: #dc3545;
border-color: #dc3545;
}
.btn-danger:hover {
color: #fff;
background-color: #c82333;
border-color: #bd2130;
}
.btn-danger:focus,
.btn-danger.focus {
-webkit-box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);
box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);
}
.btn-danger.disabled,
.btn-danger:disabled {
color: #fff;
background-color: #dc3545;
border-color: #dc3545;
}
.btn-danger:not(:disabled):not(.disabled):active,
.btn-danger:not(:disabled):not(.disabled).active,
.show > .btn-danger.dropdown-toggle {
color: #fff;
background-color: #bd2130;
border-color: #b21f2d;
}
.btn-danger:not(:disabled):not(.disabled):active:focus,
.btn-danger:not(:disabled):not(.disabled).active:focus,
.show > .btn-danger.dropdown-toggle:focus {
-webkit-box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);
box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);
}
.btn-light {
color: #212529;
background-color: #f8f9fa;
border-color: #f8f9fa;
}
.btn-light:hover {
color: #212529;
background-color: #e2e6ea;
border-color: #dae0e5;
}
.btn-light:focus,
.btn-light.focus {
-webkit-box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);
box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);
}
.btn-light.disabled,
.btn-light:disabled {
color: #212529;
background-color: #f8f9fa;
border-color: #f8f9fa;
}
.btn-light:not(:disabled):not(.disabled):active,
.btn-light:not(:disabled):not(.disabled).active,
.show > .btn-light.dropdown-toggle {
color: #212529;
background-color: #dae0e5;
border-color: #d3d9df;
}
.btn-light:not(:disabled):not(.disabled):active:focus,
.btn-light:not(:disabled):not(.disabled).active:focus,
.show > .btn-light.dropdown-toggle:focus {
-webkit-box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);
box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);
}
.btn-dark {
color: #fff;
background-color: #343a40;
border-color: #343a40;
}
.btn-dark:hover {
color: #fff;
background-color: #23272b;
border-color: #1d2124;
}
.btn-dark:focus,
.btn-dark.focus {
-webkit-box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);
box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);
}
.btn-dark.disabled,
.btn-dark:disabled {
color: #fff;
background-color: #343a40;
border-color: #343a40;
}
.btn-dark:not(:disabled):not(.disabled):active,
.btn-dark:not(:disabled):not(.disabled).active,
.show > .btn-dark.dropdown-toggle {
color: #fff;
background-color: #1d2124;
border-color: #171a1d;
}
.btn-dark:not(:disabled):not(.disabled):active:focus,
.btn-dark:not(:disabled):not(.disabled).active:focus,
.show > .btn-dark.dropdown-toggle:focus {
-webkit-box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);
box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);
}
.btn-outline-primary {
color: #007bff;
background-color: transparent;
background-image: none;
border-color: #007bff;
}
.btn-outline-primary:hover {
color: #fff;
background-color: #007bff;
border-color: #007bff;
}
.btn-outline-primary:focus,
.btn-outline-primary.focus {
-webkit-box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);
box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);
}
.btn-outline-primary.disabled,
.btn-outline-primary:disabled {
color: #007bff;
background-color: transparent;
}
.btn-outline-primary:not(:disabled):not(.disabled):active,
.btn-outline-primary:not(:disabled):not(.disabled).active,
.show > .btn-outline-primary.dropdown-toggle {
color: #fff;
background-color: #007bff;
border-color: #007bff;
}
.btn-outline-primary:not(:disabled):not(.disabled):active:focus,
.btn-outline-primary:not(:disabled):not(.disabled).active:focus,
.show > .btn-outline-primary.dropdown-toggle:focus {
-webkit-box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);
box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);
}
.btn-outline-secondary {
color: #6c757d;
background-color: transparent;
background-image: none;
border-color: #6c757d;
}
.btn-outline-secondary:hover {
color: #fff;
background-color: #6c757d;
border-color: #6c757d;
}
.btn-outline-secondary:focus,
.btn-outline-secondary.focus {
-webkit-box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);
box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);
}
.btn-outline-secondary.disabled,
.btn-outline-secondary:disabled {
color: #6c757d;
background-color: transparent;
}
.btn-outline-secondary:not(:disabled):not(.disabled):active,
.btn-outline-secondary:not(:disabled):not(.disabled).active,
.show > .btn-outline-secondary.dropdown-toggle {
color: #fff;
background-color: #6c757d;
border-color: #6c757d;
}
.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,
.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,
.show > .btn-outline-secondary.dropdown-toggle:focus {
-webkit-box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);
box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);
}
.btn-outline-success {
color: #28a745;
background-color: transparent;
background-image: none;
border-color: #28a745;
}
.btn-outline-success:hover {
color: #fff;
background-color: #28a745;
border-color: #28a745;
}
.btn-outline-success:focus,
.btn-outline-success.focus {
-webkit-box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);
box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);
}
.btn-outline-success.disabled,
.btn-outline-success:disabled {
color: #28a745;
background-color: transparent;
}
.btn-outline-success:not(:disabled):not(.disabled):active,
.btn-outline-success:not(:disabled):not(.disabled).active,
.show > .btn-outline-success.dropdown-toggle {
color: #fff;
background-color: #28a745;
border-color: #28a745;
}
.btn-outline-success:not(:disabled):not(.disabled):active:focus,
.btn-outline-success:not(:disabled):not(.disabled).active:focus,
.show > .btn-outline-success.dropdown-toggle:focus {
-webkit-box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);
box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);
}
.btn-outline-info {
color: #17a2b8;
background-color: transparent;
background-image: none;
border-color: #17a2b8;
}
.btn-outline-info:hover {
color: #fff;
background-color: #17a2b8;
border-color: #17a2b8;
}
.btn-outline-info:focus,
.btn-outline-info.focus {
-webkit-box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);
box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);
}
.btn-outline-info.disabled,
.btn-outline-info:disabled {
color: #17a2b8;
background-color: transparent;
}
.btn-outline-info:not(:disabled):not(.disabled):active,
.btn-outline-info:not(:disabled):not(.disabled).active,
.show > .btn-outline-info.dropdown-toggle {
color: #fff;
background-color: #17a2b8;
border-color: #17a2b8;
}
.btn-outline-info:not(:disabled):not(.disabled):active:focus,
.btn-outline-info:not(:disabled):not(.disabled).active:focus,
.show > .btn-outline-info.dropdown-toggle:focus {
-webkit-box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);
box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);
}
.btn-outline-warning {
color: #ffc107;
background-color: transparent;
background-image: none;
border-color: #ffc107;
}
.btn-outline-warning:hover {
color: #212529;
background-color: #ffc107;
border-color: #ffc107;
}
.btn-outline-warning:focus,
.btn-outline-warning.focus {
-webkit-box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);
box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);
}
.btn-outline-warning.disabled,
.btn-outline-warning:disabled {
color: #ffc107;
background-color: transparent;
}
.btn-outline-warning:not(:disabled):not(.disabled):active,
.btn-outline-warning:not(:disabled):not(.disabled).active,
.show > .btn-outline-warning.dropdown-toggle {
color: #212529;
background-color: #ffc107;
border-color: #ffc107;
}
.btn-outline-warning:not(:disabled):not(.disabled):active:focus,
.btn-outline-warning:not(:disabled):not(.disabled).active:focus,
.show > .btn-outline-warning.dropdown-toggle:focus {
-webkit-box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);
box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);
}
.btn-outline-danger {
color: #dc3545;
background-color: transparent;
background-image: none;
border-color: #dc3545;
}
.btn-outline-danger:hover {
color: #fff;
background-color: #dc3545;
border-color: #dc3545;
}
.btn-outline-danger:focus,
.btn-outline-danger.focus {
-webkit-box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);
box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);
}
.btn-outline-danger.disabled,
.btn-outline-danger:disabled {
color: #dc3545;
background-color: transparent;
}
.btn-outline-danger:not(:disabled):not(.disabled):active,
.btn-outline-danger:not(:disabled):not(.disabled).active,
.show > .btn-outline-danger.dropdown-toggle {
color: #fff;
background-color: #dc3545;
border-color: #dc3545;
}
.btn-outline-danger:not(:disabled):not(.disabled):active:focus,
.btn-outline-danger:not(:disabled):not(.disabled).active:focus,
.show > .btn-outline-danger.dropdown-toggle:focus {
-webkit-box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);
box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);
}
.btn-outline-light {
color: #f8f9fa;
background-color: transparent;
background-image: none;
border-color: #f8f9fa;
}
.btn-outline-light:hover {
color: #212529;
background-color: #f8f9fa;
border-color: #f8f9fa;
}
.btn-outline-light:focus,
.btn-outline-light.focus {
-webkit-box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);
box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);
}
.btn-outline-light.disabled,
.btn-outline-light:disabled {
color: #f8f9fa;
background-color: transparent;
}
.btn-outline-light:not(:disabled):not(.disabled):active,
.btn-outline-light:not(:disabled):not(.disabled).active,
.show > .btn-outline-light.dropdown-toggle {
color: #212529;
background-color: #f8f9fa;
border-color: #f8f9fa;
}
.btn-outline-light:not(:disabled):not(.disabled):active:focus,
.btn-outline-light:not(:disabled):not(.disabled).active:focus,
.show > .btn-outline-light.dropdown-toggle:focus {
-webkit-box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);
box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);
}
.btn-outline-dark {
color: #343a40;
background-color: transparent;
background-image: none;
border-color: #343a40;
}
.btn-outline-dark:hover {
color: #fff;
background-color: #343a40;
border-color: #343a40;
}
.btn-outline-dark:focus,
.btn-outline-dark.focus {
-webkit-box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);
box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);
}
.btn-outline-dark.disabled,
.btn-outline-dark:disabled {
color: #343a40;
background-color: transparent;
}
.btn-outline-dark:not(:disabled):not(.disabled):active,
.btn-outline-dark:not(:disabled):not(.disabled).active,
.show > .btn-outline-dark.dropdown-toggle {
color: #fff;
background-color: #343a40;
border-color: #343a40;
}
.btn-outline-dark:not(:disabled):not(.disabled):active:focus,
.btn-outline-dark:not(:disabled):not(.disabled).active:focus,
.show > .btn-outline-dark.dropdown-toggle:focus {
-webkit-box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);
box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);
}
.btn-link {
font-weight: 400;
color: #007bff;
background-color: transparent;
}
.btn-link:hover {
color: #0056b3;
text-decoration: underline;
background-color: transparent;
border-color: transparent;
}
.btn-link:focus,
.btn-link.focus {
text-decoration: underline;
border-color: transparent;
-webkit-box-shadow: none;
box-shadow: none;
}
.btn-link:disabled,
.btn-link.disabled {
color: #6c757d;
}
.btn-lg,
.btn-group-lg > .btn {
padding: 0.5rem 1rem;
font-size: 1.125rem;
line-height: 1.5;
border-radius: 0.3rem;
}
.btn-sm,
.btn-group-sm > .btn {
padding: 0.25rem 0.5rem;
font-size: 0.7875rem;
line-height: 1.5;
border-radius: 0.2rem;
}
.btn-block {
display: block;
width: 100%;
}
.btn-block + .btn-block {
margin-top: 0.5rem;
}
input[type="submit"].btn-block,
input[type="reset"].btn-block,
input[type="button"].btn-block {
width: 100%;
}
.fade {
opacity: 0;
-webkit-transition: opacity 0.15s linear;
transition: opacity 0.15s linear;
}
.fade.show {
opacity: 1;
}
.collapse {
display: none;
}
.collapse.show {
display: block;
}
tr.collapse.show {
display: table-row;
}
tbody.collapse.show {
display: table-row-group;
}
.collapsing {
position: relative;
height: 0;
overflow: hidden;
-webkit-transition: height 0.35s ease;
transition: height 0.35s ease;
}
.dropup,
.dropdown {
position: relative;
}
.dropdown-toggle::after {
display: inline-block;
width: 0;
height: 0;
margin-left: 0.255em;
vertical-align: 0.255em;
content: "";
border-top: 0.3em solid;
border-right: 0.3em solid transparent;
border-bottom: 0;
border-left: 0.3em solid transparent;
}
.dropdown-toggle:empty::after {
margin-left: 0;
}
.dropdown-menu {
position: absolute;
top: 100%;
left: 0;
z-index: 1000;
display: none;
float: left;
min-width: 10rem;
padding: 0.5rem 0;
margin: 0.125rem 0 0;
font-size: 0.9rem;
color: #212529;
text-align: left;
list-style: none;
background-color: #fff;
background-clip: padding-box;
border: 1px solid rgba(0, 0, 0, 0.15);
border-radius: 0.25rem;
}
.dropup .dropdown-menu {
margin-top: 0;
margin-bottom: 0.125rem;
}
.dropup .dropdown-toggle::after {
display: inline-block;
width: 0;
height: 0;
margin-left: 0.255em;
vertical-align: 0.255em;
content: "";
border-top: 0;
border-right: 0.3em solid transparent;
border-bottom: 0.3em solid;
border-left: 0.3em solid transparent;
}
.dropup .dropdown-toggle:empty::after {
margin-left: 0;
}
.dropright .dropdown-menu {
margin-top: 0;
margin-left: 0.125rem;
}
.dropright .dropdown-toggle::after {
display: inline-block;
width: 0;
height: 0;
margin-left: 0.255em;
vertical-align: 0.255em;
content: "";
border-top: 0.3em solid transparent;
border-bottom: 0.3em solid transparent;
border-left: 0.3em solid;
}
.dropright .dropdown-toggle:empty::after {
margin-left: 0;
}
.dropright .dropdown-toggle::after {
vertical-align: 0;
}
.dropleft .dropdown-menu {
margin-top: 0;
margin-right: 0.125rem;
}
.dropleft .dropdown-toggle::after {
display: inline-block;
width: 0;
height: 0;
margin-left: 0.255em;
vertical-align: 0.255em;
content: "";
}
.dropleft .dropdown-toggle::after {
display: none;
}
.dropleft .dropdown-toggle::before {
display: inline-block;
width: 0;
height: 0;
margin-right: 0.255em;
vertical-align: 0.255em;
content: "";
border-top: 0.3em solid transparent;
border-right: 0.3em solid;
border-bottom: 0.3em solid transparent;
}
.dropleft .dropdown-toggle:empty::after {
margin-left: 0;
}
.dropleft .dropdown-toggle::before {
vertical-align: 0;
}
.dropdown-divider {
height: 0;
margin: 0.5rem 0;
overflow: hidden;
border-top: 1px solid #e9ecef;
}
.dropdown-item {
display: block;
width: 100%;
padding: 0.25rem 1.5rem;
clear: both;
font-weight: 400;
color: #212529;
text-align: inherit;
white-space: nowrap;
background-color: transparent;
border: 0;
}
.dropdown-item:hover,
.dropdown-item:focus {
color: #16181b;
text-decoration: none;
background-color: #f8f9fa;
}
.dropdown-item.active,
.dropdown-item:active {
color: #fff;
text-decoration: none;
background-color: #007bff;
}
.dropdown-item.disabled,
.dropdown-item:disabled {
color: #6c757d;
background-color: transparent;
}
.dropdown-menu.show {
display: block;
}
.dropdown-header {
display: block;
padding: 0.5rem 1.5rem;
margin-bottom: 0;
font-size: 0.7875rem;
color: #6c757d;
white-space: nowrap;
}
.btn-group,
.btn-group-vertical {
position: relative;
display: -webkit-inline-box;
display: -ms-inline-flexbox;
display: inline-flex;
vertical-align: middle;
}
.btn-group > .btn,
.btn-group-vertical > .btn {
position: relative;
-webkit-box-flex: 0;
-ms-flex: 0 1 auto;
flex: 0 1 auto;
}
.btn-group > .btn:hover,
.btn-group-vertical > .btn:hover {
z-index: 1;
}
.btn-group > .btn:focus,
.btn-group > .btn:active,
.btn-group > .btn.active,
.btn-group-vertical > .btn:focus,
.btn-group-vertical > .btn:active,
.btn-group-vertical > .btn.active {
z-index: 1;
}
.btn-group .btn + .btn,
.btn-group .btn + .btn-group,
.btn-group .btn-group + .btn,
.btn-group .btn-group + .btn-group,
.btn-group-vertical .btn + .btn,
.btn-group-vertical .btn + .btn-group,
.btn-group-vertical .btn-group + .btn,
.btn-group-vertical .btn-group + .btn-group {
margin-left: -1px;
}
.btn-toolbar {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
-webkit-box-pack: start;
-ms-flex-pack: start;
justify-content: flex-start;
}
.btn-toolbar .input-group {
width: auto;
}
.btn-group > .btn:first-child {
margin-left: 0;
}
.btn-group > .btn:not(:last-child):not(.dropdown-toggle),
.btn-group > .btn-group:not(:last-child) > .btn {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.btn-group > .btn:not(:first-child),
.btn-group > .btn-group:not(:first-child) > .btn {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
.dropdown-toggle-split {
padding-right: 0.5625rem;
padding-left: 0.5625rem;
}
.dropdown-toggle-split::after {
margin-left: 0;
}
.btn-sm + .dropdown-toggle-split,
.btn-group-sm > .btn + .dropdown-toggle-split {
padding-right: 0.375rem;
padding-left: 0.375rem;
}
.btn-lg + .dropdown-toggle-split,
.btn-group-lg > .btn + .dropdown-toggle-split {
padding-right: 0.75rem;
padding-left: 0.75rem;
}
.btn-group-vertical {
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
-webkit-box-align: start;
-ms-flex-align: start;
align-items: flex-start;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
}
.btn-group-vertical .btn,
.btn-group-vertical .btn-group {
width: 100%;
}
.btn-group-vertical > .btn + .btn,
.btn-group-vertical > .btn + .btn-group,
.btn-group-vertical > .btn-group + .btn,
.btn-group-vertical > .btn-group + .btn-group {
margin-top: -1px;
margin-left: 0;
}
.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),
.btn-group-vertical > .btn-group:not(:last-child) > .btn {
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
.btn-group-vertical > .btn:not(:first-child),
.btn-group-vertical > .btn-group:not(:first-child) > .btn {
border-top-left-radius: 0;
border-top-right-radius: 0;
}
.btn-group-toggle > .btn,
.btn-group-toggle > .btn-group > .btn {
margin-bottom: 0;
}
.btn-group-toggle > .btn input[type="radio"],
.btn-group-toggle > .btn input[type="checkbox"],
.btn-group-toggle > .btn-group > .btn input[type="radio"],
.btn-group-toggle > .btn-group > .btn input[type="checkbox"] {
position: absolute;
clip: rect(0, 0, 0, 0);
pointer-events: none;
}
.input-group {
position: relative;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
-webkit-box-align: stretch;
-ms-flex-align: stretch;
align-items: stretch;
width: 100%;
}
.input-group > .form-control,
.input-group > .custom-select,
.input-group > .custom-file {
position: relative;
-webkit-box-flex: 1;
-ms-flex: 1 1 auto;
flex: 1 1 auto;
width: 1%;
margin-bottom: 0;
}
.input-group > .form-control:focus,
.input-group > .custom-select:focus,
.input-group > .custom-file:focus {
z-index: 3;
}
.input-group > .form-control + .form-control,
.input-group > .form-control + .custom-select,
.input-group > .form-control + .custom-file,
.input-group > .custom-select + .form-control,
.input-group > .custom-select + .custom-select,
.input-group > .custom-select + .custom-file,
.input-group > .custom-file + .form-control,
.input-group > .custom-file + .custom-select,
.input-group > .custom-file + .custom-file {
margin-left: -1px;
}
.input-group > .form-control:not(:last-child),
.input-group > .custom-select:not(:last-child) {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.input-group > .form-control:not(:first-child),
.input-group > .custom-select:not(:first-child) {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
.input-group > .custom-file {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
}
.input-group > .custom-file:not(:last-child) .custom-file-label,
.input-group > .custom-file:not(:last-child) .custom-file-label::before {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.input-group > .custom-file:not(:first-child) .custom-file-label,
.input-group > .custom-file:not(:first-child) .custom-file-label::before {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
.input-group-prepend,
.input-group-append {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
}
.input-group-prepend .btn,
.input-group-append .btn {
position: relative;
z-index: 2;
}
.input-group-prepend .btn + .btn,
.input-group-prepend .btn + .input-group-text,
.input-group-prepend .input-group-text + .input-group-text,
.input-group-prepend .input-group-text + .btn,
.input-group-append .btn + .btn,
.input-group-append .btn + .input-group-text,
.input-group-append .input-group-text + .input-group-text,
.input-group-append .input-group-text + .btn {
margin-left: -1px;
}
.input-group-prepend {
margin-right: -1px;
}
.input-group-append {
margin-left: -1px;
}
.input-group-text {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
padding: 0.375rem 0.75rem;
margin-bottom: 0;
font-size: 0.9rem;
font-weight: 400;
line-height: 1.6;
color: #495057;
text-align: center;
white-space: nowrap;
background-color: #e9ecef;
border: 1px solid #ced4da;
border-radius: 0.25rem;
}
.input-group-text input[type="radio"],
.input-group-text input[type="checkbox"] {
margin-top: 0;
}
.input-group > .input-group-prepend > .btn,
.input-group > .input-group-prepend > .input-group-text,
.input-group > .input-group-append:not(:last-child) > .btn,
.input-group > .input-group-append:not(:last-child) > .input-group-text,
.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),
.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.input-group > .input-group-append > .btn,
.input-group > .input-group-append > .input-group-text,
.input-group > .input-group-prepend:not(:first-child) > .btn,
.input-group > .input-group-prepend:not(:first-child) > .input-group-text,
.input-group > .input-group-prepend:first-child > .btn:not(:first-child),
.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
.custom-control {
position: relative;
display: block;
min-height: 1.6rem;
padding-left: 1.5rem;
}
.custom-control-inline {
display: -webkit-inline-box;
display: -ms-inline-flexbox;
display: inline-flex;
margin-right: 1rem;
}
.custom-control-input {
position: absolute;
z-index: -1;
opacity: 0;
}
.custom-control-input:checked ~ .custom-control-label::before {
color: #fff;
background-color: #007bff;
}
.custom-control-input:focus ~ .custom-control-label::before {
-webkit-box-shadow: 0 0 0 1px #f5f8fa, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
box-shadow: 0 0 0 1px #f5f8fa, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
}
.custom-control-input:active ~ .custom-control-label::before {
color: #fff;
background-color: #b3d7ff;
}
.custom-control-input:disabled ~ .custom-control-label {
color: #6c757d;
}
.custom-control-input:disabled ~ .custom-control-label::before {
background-color: #e9ecef;
}
.custom-control-label {
margin-bottom: 0;
}
.custom-control-label::before {
position: absolute;
top: 0.3rem;
left: 0;
display: block;
width: 1rem;
height: 1rem;
pointer-events: none;
content: "";
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
background-color: #dee2e6;
}
.custom-control-label::after {
position: absolute;
top: 0.3rem;
left: 0;
display: block;
width: 1rem;
height: 1rem;
content: "";
background-repeat: no-repeat;
background-position: center center;
background-size: 50% 50%;
}
.custom-checkbox .custom-control-label::before {
border-radius: 0.25rem;
}
.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before {
background-color: #007bff;
}
.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after {
background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E");
}
.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before {
background-color: #007bff;
}
.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after {
background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E");
}
.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before {
background-color: rgba(0, 123, 255, 0.5);
}
.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before {
background-color: rgba(0, 123, 255, 0.5);
}
.custom-radio .custom-control-label::before {
border-radius: 50%;
}
.custom-radio .custom-control-input:checked ~ .custom-control-label::before {
background-color: #007bff;
}
.custom-radio .custom-control-input:checked ~ .custom-control-label::after {
background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E");
}
.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before {
background-color: rgba(0, 123, 255, 0.5);
}
.custom-select {
display: inline-block;
width: 100%;
height: calc(2.19rem + 2px);
padding: 0.375rem 1.75rem 0.375rem 0.75rem;
line-height: 1.6;
color: #495057;
vertical-align: middle;
background: #fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right 0.75rem center;
background-size: 8px 10px;
border: 1px solid #ced4da;
border-radius: 0.25rem;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
}
.custom-select:focus {
border-color: #80bdff;
outline: 0;
-webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075), 0 0 5px rgba(128, 189, 255, 0.5);
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075), 0 0 5px rgba(128, 189, 255, 0.5);
}
.custom-select:focus::-ms-value {
color: #495057;
background-color: #fff;
}
.custom-select[multiple],
.custom-select[size]:not([size="1"]) {
height: auto;
padding-right: 0.75rem;
background-image: none;
}
.custom-select:disabled {
color: #6c757d;
background-color: #e9ecef;
}
.custom-select::-ms-expand {
opacity: 0;
}
.custom-select-sm {
height: calc(1.68125rem + 2px);
padding-top: 0.375rem;
padding-bottom: 0.375rem;
font-size: 75%;
}
.custom-select-lg {
height: calc(2.6875rem + 2px);
padding-top: 0.375rem;
padding-bottom: 0.375rem;
font-size: 125%;
}
.custom-file {
position: relative;
display: inline-block;
width: 100%;
height: calc(2.19rem + 2px);
margin-bottom: 0;
}
.custom-file-input {
position: relative;
z-index: 2;
width: 100%;
height: calc(2.19rem + 2px);
margin: 0;
opacity: 0;
}
.custom-file-input:focus ~ .custom-file-control {
border-color: #80bdff;
-webkit-box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
}
.custom-file-input:focus ~ .custom-file-control::before {
border-color: #80bdff;
}
.custom-file-input:lang(en) ~ .custom-file-label::after {
content: "Browse";
}
.custom-file-label {
position: absolute;
top: 0;
right: 0;
left: 0;
z-index: 1;
height: calc(2.19rem + 2px);
padding: 0.375rem 0.75rem;
line-height: 1.6;
color: #495057;
background-color: #fff;
border: 1px solid #ced4da;
border-radius: 0.25rem;
}
.custom-file-label::after {
position: absolute;
top: 0;
right: 0;
bottom: 0;
z-index: 3;
display: block;
height: calc(calc(2.19rem + 2px) - 1px * 2);
padding: 0.375rem 0.75rem;
line-height: 1.6;
color: #495057;
content: "Browse";
background-color: #e9ecef;
border-left: 1px solid #ced4da;
border-radius: 0 0.25rem 0.25rem 0;
}
.nav {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
padding-left: 0;
margin-bottom: 0;
list-style: none;
}
.nav-link {
display: block;
padding: 0.5rem 1rem;
}
.nav-link:hover,
.nav-link:focus {
text-decoration: none;
}
.nav-link.disabled {
color: #6c757d;
}
.nav-tabs {
border-bottom: 1px solid #dee2e6;
}
.nav-tabs .nav-item {
margin-bottom: -1px;
}
.nav-tabs .nav-link {
border: 1px solid transparent;
border-top-left-radius: 0.25rem;
border-top-right-radius: 0.25rem;
}
.nav-tabs .nav-link:hover,
.nav-tabs .nav-link:focus {
border-color: #e9ecef #e9ecef #dee2e6;
}
.nav-tabs .nav-link.disabled {
color: #6c757d;
background-color: transparent;
border-color: transparent;
}
.nav-tabs .nav-link.active,
.nav-tabs .nav-item.show .nav-link {
color: #495057;
background-color: #f5f8fa;
border-color: #dee2e6 #dee2e6 #f5f8fa;
}
.nav-tabs .dropdown-menu {
margin-top: -1px;
border-top-left-radius: 0;
border-top-right-radius: 0;
}
.nav-pills .nav-link {
border-radius: 0.25rem;
}
.nav-pills .nav-link.active,
.nav-pills .show > .nav-link {
color: #fff;
background-color: #007bff;
}
.nav-fill .nav-item {
-webkit-box-flex: 1;
-ms-flex: 1 1 auto;
flex: 1 1 auto;
text-align: center;
}
.nav-justified .nav-item {
-ms-flex-preferred-size: 0;
flex-basis: 0;
-webkit-box-flex: 1;
-ms-flex-positive: 1;
flex-grow: 1;
text-align: center;
}
.tab-content > .tab-pane {
display: none;
}
.tab-content > .active {
display: block;
}
.navbar {
position: relative;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between;
padding: 0.5rem 1rem;
}
.navbar > .container,
.navbar > .container-fluid {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between;
}
.navbar-brand {
display: inline-block;
padding-top: 0.32rem;
padding-bottom: 0.32rem;
margin-right: 1rem;
font-size: 1.125rem;
line-height: inherit;
white-space: nowrap;
}
.navbar-brand:hover,
.navbar-brand:focus {
text-decoration: none;
}
.navbar-nav {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
padding-left: 0;
margin-bottom: 0;
list-style: none;
}
.navbar-nav .nav-link {
padding-right: 0;
padding-left: 0;
}
.navbar-nav .dropdown-menu {
position: static;
float: none;
}
.navbar-text {
display: inline-block;
padding-top: 0.5rem;
padding-bottom: 0.5rem;
}
.navbar-collapse {
-ms-flex-preferred-size: 100%;
flex-basis: 100%;
-webkit-box-flex: 1;
-ms-flex-positive: 1;
flex-grow: 1;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
}
.navbar-toggler {
padding: 0.25rem 0.75rem;
font-size: 1.125rem;
line-height: 1;
background-color: transparent;
border: 1px solid transparent;
border-radius: 0.25rem;
}
.navbar-toggler:hover,
.navbar-toggler:focus {
text-decoration: none;
}
.navbar-toggler:not(:disabled):not(.disabled) {
cursor: pointer;
}
.navbar-toggler-icon {
display: inline-block;
width: 1.5em;
height: 1.5em;
vertical-align: middle;
content: "";
background: no-repeat center center;
background-size: 100% 100%;
}
@media (max-width: 575.98px) {
.navbar-expand-sm > .container,
.navbar-expand-sm > .container-fluid {
padding-right: 0;
padding-left: 0;
}
}
@media (min-width: 576px) {
.navbar-expand-sm {
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-flow: row nowrap;
flex-flow: row nowrap;
-webkit-box-pack: start;
-ms-flex-pack: start;
justify-content: flex-start;
}
.navbar-expand-sm .navbar-nav {
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-direction: row;
flex-direction: row;
}
.navbar-expand-sm .navbar-nav .dropdown-menu {
position: absolute;
}
.navbar-expand-sm .navbar-nav .dropdown-menu-right {
right: 0;
left: auto;
}
.navbar-expand-sm .navbar-nav .nav-link {
padding-right: 0.5rem;
padding-left: 0.5rem;
}
.navbar-expand-sm > .container,
.navbar-expand-sm > .container-fluid {
-ms-flex-wrap: nowrap;
flex-wrap: nowrap;
}
.navbar-expand-sm .navbar-collapse {
display: -webkit-box !important;
display: -ms-flexbox !important;
display: flex !important;
-ms-flex-preferred-size: auto;
flex-basis: auto;
}
.navbar-expand-sm .navbar-toggler {
display: none;
}
.navbar-expand-sm .dropup .dropdown-menu {
top: auto;
bottom: 100%;
}
}
@media (max-width: 767.98px) {
.navbar-expand-md > .container,
.navbar-expand-md > .container-fluid {
padding-right: 0;
padding-left: 0;
}
}
@media (min-width: 768px) {
.navbar-expand-md {
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-flow: row nowrap;
flex-flow: row nowrap;
-webkit-box-pack: start;
-ms-flex-pack: start;
justify-content: flex-start;
}
.navbar-expand-md .navbar-nav {
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-direction: row;
flex-direction: row;
}
.navbar-expand-md .navbar-nav .dropdown-menu {
position: absolute;
}
.navbar-expand-md .navbar-nav .dropdown-menu-right {
right: 0;
left: auto;
}
.navbar-expand-md .navbar-nav .nav-link {
padding-right: 0.5rem;
padding-left: 0.5rem;
}
.navbar-expand-md > .container,
.navbar-expand-md > .container-fluid {
-ms-flex-wrap: nowrap;
flex-wrap: nowrap;
}
.navbar-expand-md .navbar-collapse {
display: -webkit-box !important;
display: -ms-flexbox !important;
display: flex !important;
-ms-flex-preferred-size: auto;
flex-basis: auto;
}
.navbar-expand-md .navbar-toggler {
display: none;
}
.navbar-expand-md .dropup .dropdown-menu {
top: auto;
bottom: 100%;
}
}
@media (max-width: 991.98px) {
.navbar-expand-lg > .container,
.navbar-expand-lg > .container-fluid {
padding-right: 0;
padding-left: 0;
}
}
@media (min-width: 992px) {
.navbar-expand-lg {
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-flow: row nowrap;
flex-flow: row nowrap;
-webkit-box-pack: start;
-ms-flex-pack: start;
justify-content: flex-start;
}
.navbar-expand-lg .navbar-nav {
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-direction: row;
flex-direction: row;
}
.navbar-expand-lg .navbar-nav .dropdown-menu {
position: absolute;
}
.navbar-expand-lg .navbar-nav .dropdown-menu-right {
right: 0;
left: auto;
}
.navbar-expand-lg .navbar-nav .nav-link {
padding-right: 0.5rem;
padding-left: 0.5rem;
}
.navbar-expand-lg > .container,
.navbar-expand-lg > .container-fluid {
-ms-flex-wrap: nowrap;
flex-wrap: nowrap;
}
.navbar-expand-lg .navbar-collapse {
display: -webkit-box !important;
display: -ms-flexbox !important;
display: flex !important;
-ms-flex-preferred-size: auto;
flex-basis: auto;
}
.navbar-expand-lg .navbar-toggler {
display: none;
}
.navbar-expand-lg .dropup .dropdown-menu {
top: auto;
bottom: 100%;
}
}
@media (max-width: 1199.98px) {
.navbar-expand-xl > .container,
.navbar-expand-xl > .container-fluid {
padding-right: 0;
padding-left: 0;
}
}
@media (min-width: 1200px) {
.navbar-expand-xl {
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-flow: row nowrap;
flex-flow: row nowrap;
-webkit-box-pack: start;
-ms-flex-pack: start;
justify-content: flex-start;
}
.navbar-expand-xl .navbar-nav {
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-direction: row;
flex-direction: row;
}
.navbar-expand-xl .navbar-nav .dropdown-menu {
position: absolute;
}
.navbar-expand-xl .navbar-nav .dropdown-menu-right {
right: 0;
left: auto;
}
.navbar-expand-xl .navbar-nav .nav-link {
padding-right: 0.5rem;
padding-left: 0.5rem;
}
.navbar-expand-xl > .container,
.navbar-expand-xl > .container-fluid {
-ms-flex-wrap: nowrap;
flex-wrap: nowrap;
}
.navbar-expand-xl .navbar-collapse {
display: -webkit-box !important;
display: -ms-flexbox !important;
display: flex !important;
-ms-flex-preferred-size: auto;
flex-basis: auto;
}
.navbar-expand-xl .navbar-toggler {
display: none;
}
.navbar-expand-xl .dropup .dropdown-menu {
top: auto;
bottom: 100%;
}
}
.navbar-expand {
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-flow: row nowrap;
flex-flow: row nowrap;
-webkit-box-pack: start;
-ms-flex-pack: start;
justify-content: flex-start;
}
.navbar-expand > .container,
.navbar-expand > .container-fluid {
padding-right: 0;
padding-left: 0;
}
.navbar-expand .navbar-nav {
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-direction: row;
flex-direction: row;
}
.navbar-expand .navbar-nav .dropdown-menu {
position: absolute;
}
.navbar-expand .navbar-nav .dropdown-menu-right {
right: 0;
left: auto;
}
.navbar-expand .navbar-nav .nav-link {
padding-right: 0.5rem;
padding-left: 0.5rem;
}
.navbar-expand > .container,
.navbar-expand > .container-fluid {
-ms-flex-wrap: nowrap;
flex-wrap: nowrap;
}
.navbar-expand .navbar-collapse {
display: -webkit-box !important;
display: -ms-flexbox !important;
display: flex !important;
-ms-flex-preferred-size: auto;
flex-basis: auto;
}
.navbar-expand .navbar-toggler {
display: none;
}
.navbar-expand .dropup .dropdown-menu {
top: auto;
bottom: 100%;
}
.navbar-light .navbar-brand {
color: rgba(0, 0, 0, 0.9);
}
.navbar-light .navbar-brand:hover,
.navbar-light .navbar-brand:focus {
color: rgba(0, 0, 0, 0.9);
}
.navbar-light .navbar-nav .nav-link {
color: rgba(0, 0, 0, 0.5);
}
.navbar-light .navbar-nav .nav-link:hover,
.navbar-light .navbar-nav .nav-link:focus {
color: rgba(0, 0, 0, 0.7);
}
.navbar-light .navbar-nav .nav-link.disabled {
color: rgba(0, 0, 0, 0.3);
}
.navbar-light .navbar-nav .show > .nav-link,
.navbar-light .navbar-nav .active > .nav-link,
.navbar-light .navbar-nav .nav-link.show,
.navbar-light .navbar-nav .nav-link.active {
color: rgba(0, 0, 0, 0.9);
}
.navbar-light .navbar-toggler {
color: rgba(0, 0, 0, 0.5);
border-color: rgba(0, 0, 0, 0.1);
}
.navbar-light .navbar-toggler-icon {
background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E");
}
.navbar-light .navbar-text {
color: rgba(0, 0, 0, 0.5);
}
.navbar-light .navbar-text a {
color: rgba(0, 0, 0, 0.9);
}
.navbar-light .navbar-text a:hover,
.navbar-light .navbar-text a:focus {
color: rgba(0, 0, 0, 0.9);
}
.navbar-dark .navbar-brand {
color: #fff;
}
.navbar-dark .navbar-brand:hover,
.navbar-dark .navbar-brand:focus {
color: #fff;
}
.navbar-dark .navbar-nav .nav-link {
color: rgba(255, 255, 255, 0.5);
}
.navbar-dark .navbar-nav .nav-link:hover,
.navbar-dark .navbar-nav .nav-link:focus {
color: rgba(255, 255, 255, 0.75);
}
.navbar-dark .navbar-nav .nav-link.disabled {
color: rgba(255, 255, 255, 0.25);
}
.navbar-dark .navbar-nav .show > .nav-link,
.navbar-dark .navbar-nav .active > .nav-link,
.navbar-dark .navbar-nav .nav-link.show,
.navbar-dark .navbar-nav .nav-link.active {
color: #fff;
}
.navbar-dark .navbar-toggler {
color: rgba(255, 255, 255, 0.5);
border-color: rgba(255, 255, 255, 0.1);
}
.navbar-dark .navbar-toggler-icon {
background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E");
}
.navbar-dark .navbar-text {
color: rgba(255, 255, 255, 0.5);
}
.navbar-dark .navbar-text a {
color: #fff;
}
.navbar-dark .navbar-text a:hover,
.navbar-dark .navbar-text a:focus {
color: #fff;
}
.card {
position: relative;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
min-width: 0;
word-wrap: break-word;
background-color: #fff;
background-clip: border-box;
border: 1px solid rgba(0, 0, 0, 0.125);
border-radius: 0.25rem;
}
.card > hr {
margin-right: 0;
margin-left: 0;
}
.card > .list-group:first-child .list-group-item:first-child {
border-top-left-radius: 0.25rem;
border-top-right-radius: 0.25rem;
}
.card > .list-group:last-child .list-group-item:last-child {
border-bottom-right-radius: 0.25rem;
border-bottom-left-radius: 0.25rem;
}
.card-body {
-webkit-box-flex: 1;
-ms-flex: 1 1 auto;
flex: 1 1 auto;
padding: 1.25rem;
}
.card-title {
margin-bottom: 0.75rem;
}
.card-subtitle {
margin-top: -0.375rem;
margin-bottom: 0;
}
.card-text:last-child {
margin-bottom: 0;
}
.card-link:hover {
text-decoration: none;
}
.card-link + .card-link {
margin-left: 1.25rem;
}
.card-header {
padding: 0.75rem 1.25rem;
margin-bottom: 0;
background-color: rgba(0, 0, 0, 0.03);
border-bottom: 1px solid rgba(0, 0, 0, 0.125);
}
.card-header:first-child {
border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;
}
.card-header + .list-group .list-group-item:first-child {
border-top: 0;
}
.card-footer {
padding: 0.75rem 1.25rem;
background-color: rgba(0, 0, 0, 0.03);
border-top: 1px solid rgba(0, 0, 0, 0.125);
}
.card-footer:last-child {
border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);
}
.card-header-tabs {
margin-right: -0.625rem;
margin-bottom: -0.75rem;
margin-left: -0.625rem;
border-bottom: 0;
}
.card-header-pills {
margin-right: -0.625rem;
margin-left: -0.625rem;
}
.card-img-overlay {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
padding: 1.25rem;
}
.card-img {
width: 100%;
border-radius: calc(0.25rem - 1px);
}
.card-img-top {
width: 100%;
border-top-left-radius: calc(0.25rem - 1px);
border-top-right-radius: calc(0.25rem - 1px);
}
.card-img-bottom {
width: 100%;
border-bottom-right-radius: calc(0.25rem - 1px);
border-bottom-left-radius: calc(0.25rem - 1px);
}
.card-deck {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
}
.card-deck .card {
margin-bottom: 15px;
}
@media (min-width: 576px) {
.card-deck {
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-flow: row wrap;
flex-flow: row wrap;
margin-right: -15px;
margin-left: -15px;
}
.card-deck .card {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-flex: 1;
-ms-flex: 1 0 0%;
flex: 1 0 0%;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
margin-right: 15px;
margin-bottom: 0;
margin-left: 15px;
}
}
.card-group {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
}
.card-group > .card {
margin-bottom: 15px;
}
@media (min-width: 576px) {
.card-group {
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-flow: row wrap;
flex-flow: row wrap;
}
.card-group > .card {
-webkit-box-flex: 1;
-ms-flex: 1 0 0%;
flex: 1 0 0%;
margin-bottom: 0;
}
.card-group > .card + .card {
margin-left: 0;
border-left: 0;
}
.card-group > .card:first-child {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.card-group > .card:first-child .card-img-top,
.card-group > .card:first-child .card-header {
border-top-right-radius: 0;
}
.card-group > .card:first-child .card-img-bottom,
.card-group > .card:first-child .card-footer {
border-bottom-right-radius: 0;
}
.card-group > .card:last-child {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
.card-group > .card:last-child .card-img-top,
.card-group > .card:last-child .card-header {
border-top-left-radius: 0;
}
.card-group > .card:last-child .card-img-bottom,
.card-group > .card:last-child .card-footer {
border-bottom-left-radius: 0;
}
.card-group > .card:only-child {
border-radius: 0.25rem;
}
.card-group > .card:only-child .card-img-top,
.card-group > .card:only-child .card-header {
border-top-left-radius: 0.25rem;
border-top-right-radius: 0.25rem;
}
.card-group > .card:only-child .card-img-bottom,
.card-group > .card:only-child .card-footer {
border-bottom-right-radius: 0.25rem;
border-bottom-left-radius: 0.25rem;
}
.card-group > .card:not(:first-child):not(:last-child):not(:only-child) {
border-radius: 0;
}
.card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,
.card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,
.card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-header,
.card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-footer {
border-radius: 0;
}
}
.card-columns .card {
margin-bottom: 0.75rem;
}
@media (min-width: 576px) {
.card-columns {
-webkit-column-count: 3;
column-count: 3;
-webkit-column-gap: 1.25rem;
column-gap: 1.25rem;
}
.card-columns .card {
display: inline-block;
width: 100%;
}
}
.breadcrumb {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
padding: 0.75rem 1rem;
margin-bottom: 1rem;
list-style: none;
background-color: #e9ecef;
border-radius: 0.25rem;
}
.breadcrumb-item + .breadcrumb-item::before {
display: inline-block;
padding-right: 0.5rem;
padding-left: 0.5rem;
color: #6c757d;
content: "/";
}
.breadcrumb-item + .breadcrumb-item:hover::before {
text-decoration: underline;
}
.breadcrumb-item + .breadcrumb-item:hover::before {
text-decoration: none;
}
.breadcrumb-item.active {
color: #6c757d;
}
.pagination {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
padding-left: 0;
list-style: none;
border-radius: 0.25rem;
}
.page-link {
position: relative;
display: block;
padding: 0.5rem 0.75rem;
margin-left: -1px;
line-height: 1.25;
color: #007bff;
background-color: #fff;
border: 1px solid #dee2e6;
}
.page-link:hover {
color: #0056b3;
text-decoration: none;
background-color: #e9ecef;
border-color: #dee2e6;
}
.page-link:focus {
z-index: 2;
outline: 0;
-webkit-box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
}
.page-link:not(:disabled):not(.disabled) {
cursor: pointer;
}
.page-item:first-child .page-link {
margin-left: 0;
border-top-left-radius: 0.25rem;
border-bottom-left-radius: 0.25rem;
}
.page-item:last-child .page-link {
border-top-right-radius: 0.25rem;
border-bottom-right-radius: 0.25rem;
}
.page-item.active .page-link {
z-index: 1;
color: #fff;
background-color: #007bff;
border-color: #007bff;
}
.page-item.disabled .page-link {
color: #6c757d;
pointer-events: none;
cursor: auto;
background-color: #fff;
border-color: #dee2e6;
}
.pagination-lg .page-link {
padding: 0.75rem 1.5rem;
font-size: 1.125rem;
line-height: 1.5;
}
.pagination-lg .page-item:first-child .page-link {
border-top-left-radius: 0.3rem;
border-bottom-left-radius: 0.3rem;
}
.pagination-lg .page-item:last-child .page-link {
border-top-right-radius: 0.3rem;
border-bottom-right-radius: 0.3rem;
}
.pagination-sm .page-link {
padding: 0.25rem 0.5rem;
font-size: 0.7875rem;
line-height: 1.5;
}
.pagination-sm .page-item:first-child .page-link {
border-top-left-radius: 0.2rem;
border-bottom-left-radius: 0.2rem;
}
.pagination-sm .page-item:last-child .page-link {
border-top-right-radius: 0.2rem;
border-bottom-right-radius: 0.2rem;
}
.badge {
display: inline-block;
padding: 0.25em 0.4em;
font-size: 75%;
font-weight: 700;
line-height: 1;
text-align: center;
white-space: nowrap;
vertical-align: baseline;
border-radius: 0.25rem;
}
.badge:empty {
display: none;
}
.btn .badge {
position: relative;
top: -1px;
}
.badge-pill {
padding-right: 0.6em;
padding-left: 0.6em;
border-radius: 10rem;
}
.badge-primary {
color: #fff;
background-color: #007bff;
}
.badge-primary[href]:hover,
.badge-primary[href]:focus {
color: #fff;
text-decoration: none;
background-color: #0062cc;
}
.badge-secondary {
color: #fff;
background-color: #6c757d;
}
.badge-secondary[href]:hover,
.badge-secondary[href]:focus {
color: #fff;
text-decoration: none;
background-color: #545b62;
}
.badge-success {
color: #fff;
background-color: #28a745;
}
.badge-success[href]:hover,
.badge-success[href]:focus {
color: #fff;
text-decoration: none;
background-color: #1e7e34;
}
.badge-info {
color: #fff;
background-color: #17a2b8;
}
.badge-info[href]:hover,
.badge-info[href]:focus {
color: #fff;
text-decoration: none;
background-color: #117a8b;
}
.badge-warning {
color: #212529;
background-color: #ffc107;
}
.badge-warning[href]:hover,
.badge-warning[href]:focus {
color: #212529;
text-decoration: none;
background-color: #d39e00;
}
.badge-danger {
color: #fff;
background-color: #dc3545;
}
.badge-danger[href]:hover,
.badge-danger[href]:focus {
color: #fff;
text-decoration: none;
background-color: #bd2130;
}
.badge-light {
color: #212529;
background-color: #f8f9fa;
}
.badge-light[href]:hover,
.badge-light[href]:focus {
color: #212529;
text-decoration: none;
background-color: #dae0e5;
}
.badge-dark {
color: #fff;
background-color: #343a40;
}
.badge-dark[href]:hover,
.badge-dark[href]:focus {
color: #fff;
text-decoration: none;
background-color: #1d2124;
}
.jumbotron {
padding: 2rem 1rem;
margin-bottom: 2rem;
background-color: #e9ecef;
border-radius: 0.3rem;
}
@media (min-width: 576px) {
.jumbotron {
padding: 4rem 2rem;
}
}
.jumbotron-fluid {
padding-right: 0;
padding-left: 0;
border-radius: 0;
}
.alert {
position: relative;
padding: 0.75rem 1.25rem;
margin-bottom: 1rem;
border: 1px solid transparent;
border-radius: 0.25rem;
}
.alert-heading {
color: inherit;
}
.alert-link {
font-weight: 700;
}
.alert-dismissible {
padding-right: 3.85rem;
}
.alert-dismissible .close {
position: absolute;
top: 0;
right: 0;
padding: 0.75rem 1.25rem;
color: inherit;
}
.alert-primary {
color: #004085;
background-color: #cce5ff;
border-color: #b8daff;
}
.alert-primary hr {
border-top-color: #9fcdff;
}
.alert-primary .alert-link {
color: #002752;
}
.alert-secondary {
color: #383d41;
background-color: #e2e3e5;
border-color: #d6d8db;
}
.alert-secondary hr {
border-top-color: #c8cbcf;
}
.alert-secondary .alert-link {
color: #202326;
}
.alert-success {
color: #155724;
background-color: #d4edda;
border-color: #c3e6cb;
}
.alert-success hr {
border-top-color: #b1dfbb;
}
.alert-success .alert-link {
color: #0b2e13;
}
.alert-info {
color: #0c5460;
background-color: #d1ecf1;
border-color: #bee5eb;
}
.alert-info hr {
border-top-color: #abdde5;
}
.alert-info .alert-link {
color: #062c33;
}
.alert-warning {
color: #856404;
background-color: #fff3cd;
border-color: #ffeeba;
}
.alert-warning hr {
border-top-color: #ffe8a1;
}
.alert-warning .alert-link {
color: #533f03;
}
.alert-danger {
color: #721c24;
background-color: #f8d7da;
border-color: #f5c6cb;
}
.alert-danger hr {
border-top-color: #f1b0b7;
}
.alert-danger .alert-link {
color: #491217;
}
.alert-light {
color: #818182;
background-color: #fefefe;
border-color: #fdfdfe;
}
.alert-light hr {
border-top-color: #ececf6;
}
.alert-light .alert-link {
color: #686868;
}
.alert-dark {
color: #1b1e21;
background-color: #d6d8d9;
border-color: #c6c8ca;
}
.alert-dark hr {
border-top-color: #b9bbbe;
}
.alert-dark .alert-link {
color: #040505;
}
@-webkit-keyframes progress-bar-stripes {
from {
background-position: 1rem 0;
}
to {
background-position: 0 0;
}
}
@keyframes progress-bar-stripes {
from {
background-position: 1rem 0;
}
to {
background-position: 0 0;
}
}
.progress {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
height: 1rem;
overflow: hidden;
font-size: 0.675rem;
background-color: #e9ecef;
border-radius: 0.25rem;
}
.progress-bar {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
color: #fff;
text-align: center;
background-color: #007bff;
-webkit-transition: width 0.6s ease;
transition: width 0.6s ease;
}
.progress-bar-striped {
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-size: 1rem 1rem;
}
.progress-bar-animated {
-webkit-animation: progress-bar-stripes 1s linear infinite;
animation: progress-bar-stripes 1s linear infinite;
}
.media {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: start;
-ms-flex-align: start;
align-items: flex-start;
}
.media-body {
-webkit-box-flex: 1;
-ms-flex: 1;
flex: 1;
}
.list-group {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
padding-left: 0;
margin-bottom: 0;
}
.list-group-item-action {
width: 100%;
color: #495057;
text-align: inherit;
}
.list-group-item-action:hover,
.list-group-item-action:focus {
color: #495057;
text-decoration: none;
background-color: #f8f9fa;
}
.list-group-item-action:active {
color: #212529;
background-color: #e9ecef;
}
.list-group-item {
position: relative;
display: block;
padding: 0.75rem 1.25rem;
margin-bottom: -1px;
background-color: #fff;
border: 1px solid rgba(0, 0, 0, 0.125);
}
.list-group-item:first-child {
border-top-left-radius: 0.25rem;
border-top-right-radius: 0.25rem;
}
.list-group-item:last-child {
margin-bottom: 0;
border-bottom-right-radius: 0.25rem;
border-bottom-left-radius: 0.25rem;
}
.list-group-item:hover,
.list-group-item:focus {
z-index: 1;
text-decoration: none;
}
.list-group-item.disabled,
.list-group-item:disabled {
color: #6c757d;
background-color: #fff;
}
.list-group-item.active {
z-index: 2;
color: #fff;
background-color: #007bff;
border-color: #007bff;
}
.list-group-flush .list-group-item {
border-right: 0;
border-left: 0;
border-radius: 0;
}
.list-group-flush:first-child .list-group-item:first-child {
border-top: 0;
}
.list-group-flush:last-child .list-group-item:last-child {
border-bottom: 0;
}
.list-group-item-primary {
color: #004085;
background-color: #b8daff;
}
.list-group-item-primary.list-group-item-action:hover,
.list-group-item-primary.list-group-item-action:focus {
color: #004085;
background-color: #9fcdff;
}
.list-group-item-primary.list-group-item-action.active {
color: #fff;
background-color: #004085;
border-color: #004085;
}
.list-group-item-secondary {
color: #383d41;
background-color: #d6d8db;
}
.list-group-item-secondary.list-group-item-action:hover,
.list-group-item-secondary.list-group-item-action:focus {
color: #383d41;
backgrou
gitextract__7t7vs8o/ ├── .gitattributes ├── .gitignore ├── app/ │ ├── Console/ │ │ └── Kernel.php │ ├── Exceptions/ │ │ └── Handler.php │ ├── Http/ │ │ ├── Controllers/ │ │ │ ├── Auth/ │ │ │ │ ├── ForgotPasswordController.php │ │ │ │ ├── LoginController.php │ │ │ │ ├── RegisterController.php │ │ │ │ └── ResetPasswordController.php │ │ │ ├── Controller.php │ │ │ ├── OrderController.php │ │ │ ├── ProductController.php │ │ │ └── UserController.php │ │ ├── Kernel.php │ │ └── Middleware/ │ │ ├── EncryptCookies.php │ │ ├── RedirectIfAuthenticated.php │ │ ├── TrimStrings.php │ │ ├── TrustProxies.php │ │ └── VerifyCsrfToken.php │ ├── Order.php │ ├── Product.php │ ├── Providers/ │ │ ├── AppServiceProvider.php │ │ ├── AuthServiceProvider.php │ │ ├── BroadcastServiceProvider.php │ │ ├── EventServiceProvider.php │ │ └── RouteServiceProvider.php │ └── User.php ├── artisan ├── bootstrap/ │ ├── app.php │ └── cache/ │ └── .gitignore ├── composer.json ├── config/ │ ├── app.php │ ├── auth.php │ ├── broadcasting.php │ ├── cache.php │ ├── database.php │ ├── filesystems.php │ ├── hashing.php │ ├── logging.php │ ├── mail.php │ ├── queue.php │ ├── services.php │ ├── session.php │ └── view.php ├── database/ │ ├── .gitignore │ ├── factories/ │ │ └── UserFactory.php │ ├── migrations/ │ │ ├── 2014_10_12_000000_create_users_table.php │ │ ├── 2014_10_12_100000_create_password_resets_table.php │ │ ├── 2018_04_07_050507_create_products_table.php │ │ └── 2018_04_07_050555_create_orders_table.php │ └── seeds/ │ ├── DatabaseSeeder.php │ ├── ProductTableSeeder.php │ └── UserTableSeeder.php ├── package.json ├── phpunit.xml ├── public/ │ ├── .htaccess │ ├── css/ │ │ └── app.css │ ├── index.php │ ├── js/ │ │ ├── app.js │ │ └── bootstrap.js │ ├── mix-manifest.json │ └── robots.txt ├── readme.md ├── resources/ │ ├── assets/ │ │ ├── js/ │ │ │ ├── app.js │ │ │ ├── bootstrap.js │ │ │ ├── components/ │ │ │ │ ├── ExampleComponent.vue │ │ │ │ └── admin/ │ │ │ │ ├── Main.vue │ │ │ │ ├── Orders.vue │ │ │ │ ├── ProductModal.vue │ │ │ │ ├── Products.vue │ │ │ │ └── Users.vue │ │ │ └── views/ │ │ │ ├── Admin.vue │ │ │ ├── App.vue │ │ │ ├── Checkout.vue │ │ │ ├── Confirmation.vue │ │ │ ├── Home.vue │ │ │ ├── Login.vue │ │ │ ├── Register.vue │ │ │ ├── SingleProduct.vue │ │ │ └── UserBoard.vue │ │ └── sass/ │ │ ├── _variables.scss │ │ └── app.scss │ ├── lang/ │ │ └── en/ │ │ ├── auth.php │ │ ├── pagination.php │ │ ├── passwords.php │ │ └── validation.php │ └── views/ │ └── landing.blade.php ├── routes/ │ ├── api.php │ ├── channels.php │ ├── console.php │ └── web.php ├── server.php ├── storage/ │ ├── app/ │ │ └── .gitignore │ ├── framework/ │ │ ├── .gitignore │ │ ├── cache/ │ │ │ └── .gitignore │ │ ├── sessions/ │ │ │ └── .gitignore │ │ ├── testing/ │ │ │ └── .gitignore │ │ └── views/ │ │ └── .gitignore │ └── logs/ │ └── .gitignore ├── tests/ │ ├── CreatesApplication.php │ ├── Feature/ │ │ └── ExampleTest.php │ ├── TestCase.php │ └── Unit/ │ └── ExampleTest.php └── webpack.mix.js
SYMBOL INDEX (771 symbols across 37 files)
FILE: app/Console/Kernel.php
class Kernel (line 8) | class Kernel extends ConsoleKernel
method schedule (line 25) | protected function schedule(Schedule $schedule)
method commands (line 36) | protected function commands()
FILE: app/Exceptions/Handler.php
class Handler (line 8) | class Handler extends ExceptionHandler
method report (line 35) | public function report(Exception $exception)
method render (line 47) | public function render($request, Exception $exception)
FILE: app/Http/Controllers/Auth/ForgotPasswordController.php
class ForgotPasswordController (line 8) | class ForgotPasswordController extends Controller
method __construct (line 28) | public function __construct()
FILE: app/Http/Controllers/Auth/LoginController.php
class LoginController (line 8) | class LoginController extends Controller
method __construct (line 35) | public function __construct()
FILE: app/Http/Controllers/Auth/RegisterController.php
class RegisterController (line 11) | class RegisterController extends Controller
method __construct (line 38) | public function __construct()
method validator (line 49) | protected function validator(array $data)
method create (line 64) | protected function create(array $data)
FILE: app/Http/Controllers/Auth/ResetPasswordController.php
class ResetPasswordController (line 8) | class ResetPasswordController extends Controller
method __construct (line 35) | public function __construct()
FILE: app/Http/Controllers/Controller.php
class Controller (line 10) | class Controller extends BaseController
FILE: app/Http/Controllers/OrderController.php
class OrderController (line 9) | class OrderController extends Controller
method index (line 11) | public function index()
method deliverOrder (line 16) | public function deliverOrder(Order $order)
method store (line 28) | public function store(Request $request)
method show (line 44) | public function show(Order $order)
method update (line 49) | public function update(Request $request, Order $order)
method destroy (line 61) | public function destroy(Order $order)
FILE: app/Http/Controllers/ProductController.php
class ProductController (line 8) | class ProductController extends Controller
method index (line 10) | public function index()
method store (line 15) | public function store(Request $request)
method show (line 32) | public function show(Product $product)
method uploadFile (line 37) | public function uploadFile(Request $request)
method update (line 46) | public function update(Request $request, Product $product)
method updateUnits (line 58) | public function updateUnits(Request $request, Product $product)
method destroy (line 69) | public function destroy(Product $product)
FILE: app/Http/Controllers/UserController.php
class UserController (line 11) | class UserController extends Controller
method index (line 13) | public function index(){
method login (line 16) | public function login(Request $request)
method register (line 37) | public function register(Request $request)
method show (line 63) | public function show(User $user)
method showOrders (line 68) | public function showOrders(User $user)
FILE: app/Http/Kernel.php
class Kernel (line 7) | class Kernel extends HttpKernel
FILE: app/Http/Middleware/EncryptCookies.php
class EncryptCookies (line 7) | class EncryptCookies extends Middleware
FILE: app/Http/Middleware/RedirectIfAuthenticated.php
class RedirectIfAuthenticated (line 8) | class RedirectIfAuthenticated
method handle (line 18) | public function handle($request, Closure $next, $guard = null)
FILE: app/Http/Middleware/TrimStrings.php
class TrimStrings (line 7) | class TrimStrings extends Middleware
FILE: app/Http/Middleware/TrustProxies.php
class TrustProxies (line 8) | class TrustProxies extends Middleware
FILE: app/Http/Middleware/VerifyCsrfToken.php
class VerifyCsrfToken (line 7) | class VerifyCsrfToken extends Middleware
FILE: app/Order.php
class Order (line 8) | class Order extends Model
method user (line 16) | public function user(){
method product (line 20) | public function product(){
FILE: app/Product.php
class Product (line 8) | class Product extends Model
method orders (line 16) | public function orders(){
FILE: app/Providers/AppServiceProvider.php
class AppServiceProvider (line 8) | class AppServiceProvider extends ServiceProvider
method boot (line 15) | public function boot()
method register (line 25) | public function register()
FILE: app/Providers/AuthServiceProvider.php
class AuthServiceProvider (line 9) | class AuthServiceProvider extends ServiceProvider
method boot (line 25) | public function boot()
FILE: app/Providers/BroadcastServiceProvider.php
class BroadcastServiceProvider (line 8) | class BroadcastServiceProvider extends ServiceProvider
method boot (line 15) | public function boot()
FILE: app/Providers/EventServiceProvider.php
class EventServiceProvider (line 8) | class EventServiceProvider extends ServiceProvider
method boot (line 26) | public function boot()
FILE: app/Providers/RouteServiceProvider.php
class RouteServiceProvider (line 8) | class RouteServiceProvider extends ServiceProvider
method boot (line 24) | public function boot()
method map (line 36) | public function map()
method mapWebRoutes (line 52) | protected function mapWebRoutes()
method mapApiRoutes (line 66) | protected function mapApiRoutes()
FILE: app/User.php
class User (line 11) | class User extends Authenticatable
method orders (line 23) | public function orders(){
FILE: database/migrations/2014_10_12_000000_create_users_table.php
class CreateUsersTable (line 7) | class CreateUsersTable extends Migration
method up (line 14) | public function up()
method down (line 33) | public function down()
FILE: database/migrations/2014_10_12_100000_create_password_resets_table.php
class CreatePasswordResetsTable (line 7) | class CreatePasswordResetsTable extends Migration
method up (line 14) | public function up()
method down (line 28) | public function down()
FILE: database/migrations/2018_04_07_050507_create_products_table.php
class CreateProductsTable (line 7) | class CreateProductsTable extends Migration
method up (line 14) | public function up()
method down (line 33) | public function down()
FILE: database/migrations/2018_04_07_050555_create_orders_table.php
class CreateOrdersTable (line 7) | class CreateOrdersTable extends Migration
method up (line 14) | public function up()
method down (line 33) | public function down()
FILE: database/seeds/DatabaseSeeder.php
class DatabaseSeeder (line 5) | class DatabaseSeeder extends Seeder
method run (line 12) | public function run()
FILE: database/seeds/ProductTableSeeder.php
class ProductTableSeeder (line 6) | class ProductTableSeeder extends Seeder
method run (line 13) | public function run()
FILE: database/seeds/UserTableSeeder.php
class UserTableSeeder (line 6) | class UserTableSeeder extends Seeder
method run (line 8) | public function run()
FILE: public/js/app.js
function __webpack_require__ (line 6) | function __webpack_require__(moduleId) {
function cssWithMappingToString (line 256) | function cssWithMappingToString(item, useSourceMap) {
function toComment (line 276) | function toComment(sourceMap) {
function addStylesToDom (line 374) | function addStylesToDom (styles /* Array<StyleObject> */) {
function createStyleElement (line 399) | function createStyleElement () {
function addStyle (line 406) | function addStyle (obj /* StyleObjectPart */) {
function applyToSingletonTag (line 465) | function applyToSingletonTag (styleElement, index, remove, obj) {
function applyToTag (line 482) | function applyToTag (styleElement, obj) {
function defaultSetTimout (line 528) | function defaultSetTimout() {
function defaultClearTimeout (line 531) | function defaultClearTimeout () {
function runTimeout (line 554) | function runTimeout(fun) {
function runClearTimeout (line 579) | function runClearTimeout(marker) {
function cleanUpNextTick (line 611) | function cleanUpNextTick() {
function drainQueue (line 626) | function drainQueue() {
function Item (line 664) | function Item(fun, array) {
function noop (line 678) | function noop() {}
function isUndef (line 875) | function isUndef (v) {
function isDef (line 879) | function isDef (v) {
function isTrue (line 883) | function isTrue (v) {
function isFalse (line 887) | function isFalse (v) {
function isPrimitive (line 894) | function isPrimitive (value) {
function isObject (line 909) | function isObject (obj) {
function toRawType (line 918) | function toRawType (value) {
function isPlainObject (line 926) | function isPlainObject (obj) {
function isRegExp (line 930) | function isRegExp (v) {
function isValidArrayIndex (line 937) | function isValidArrayIndex (val) {
function toString (line 945) | function toString (val) {
function toNumber (line 957) | function toNumber (val) {
function makeMap (line 966) | function makeMap (
function remove (line 993) | function remove (arr, item) {
function hasOwn (line 1006) | function hasOwn (obj, key) {
function cached (line 1013) | function cached (fn) {
function polyfillBind (line 1053) | function polyfillBind (fn, ctx) {
function nativeBind (line 1067) | function nativeBind (fn, ctx) {
function toArray (line 1078) | function toArray (list, start) {
function extend (line 1091) | function extend (to, _from) {
function toObject (line 1101) | function toObject (arr) {
function noop (line 1116) | function noop (a, b, c) {}
function genStaticKeys (line 1131) | function genStaticKeys (modules) {
function looseEqual (line 1141) | function looseEqual (a, b) {
function looseIndexOf (line 1174) | function looseIndexOf (arr, val) {
function once (line 1184) | function once (fn) {
function isReserved (line 1311) | function isReserved (str) {
function def (line 1319) | function def (obj, key, val, enumerable) {
function parsePath (line 1332) | function parsePath (path) {
function isNative (line 1401) | function isNative (Ctor) {
function Set (line 1417) | function Set () {
function pushTarget (line 1570) | function pushTarget (_target) {
function popTarget (line 1575) | function popTarget () {
function createTextVNode (line 1635) | function createTextVNode (val) {
function cloneVNode (line 1643) | function cloneVNode (vnode) {
function toggleObserving (line 1722) | function toggleObserving (value) {
function protoAugment (line 1775) | function protoAugment (target, src, keys) {
function copyAugment (line 1786) | function copyAugment (target, src, keys) {
function observe (line 1798) | function observe (value, asRootData) {
function defineReactive (line 1823) | function defineReactive (
function set (line 1887) | function set (target, key, val) {
function del (line 1922) | function del (target, key) {
function dependArray (line 1954) | function dependArray (value) {
function mergeData (line 1991) | function mergeData (to, from) {
function mergeDataOrFn (line 2011) | function mergeDataOrFn (
function mergeHook (line 2078) | function mergeHook (
function mergeAssets (line 2102) | function mergeAssets (
function checkComponents (line 2192) | function checkComponents (options) {
function validateComponentName (line 2198) | function validateComponentName (name) {
function normalizeProps (line 2218) | function normalizeProps (options, vm) {
function normalizeInject (line 2255) | function normalizeInject (options, vm) {
function normalizeDirectives (line 2282) | function normalizeDirectives (options) {
function assertObjectType (line 2294) | function assertObjectType (name, value, vm) {
function mergeOptions (line 2308) | function mergeOptions (
function resolveAsset (line 2355) | function resolveAsset (
function validateProp (line 2385) | function validateProp (
function getPropDefaultValue (line 2429) | function getPropDefaultValue (vm, prop, key) {
function assertProp (line 2462) | function assertProp (
function assertType (line 2514) | function assertType (value, type) {
function getType (line 2542) | function getType (fn) {
function isSameType (line 2547) | function isSameType (a, b) {
function getTypeIndex (line 2551) | function getTypeIndex (type, expectedTypes) {
function handleError (line 2565) | function handleError (err, vm, info) {
function globalHandleError (line 2585) | function globalHandleError (err, vm, info) {
function logError (line 2596) | function logError (err, vm, info) {
function flushCallbacks (line 2614) | function flushCallbacks () {
function withMacroTask (line 2684) | function withMacroTask (fn) {
function nextTick (line 2693) | function nextTick (cb, ctx) {
function traverse (line 2831) | function traverse (val) {
function _traverse (line 2836) | function _traverse (val, seen) {
function createFnInvoker (line 2876) | function createFnInvoker (fns) {
function updateListeners (line 2895) | function updateListeners (
function mergeVNodeHook (line 2933) | function mergeVNodeHook (def, hookKey, hook) {
function extractPropsFromVNodeData (line 2968) | function extractPropsFromVNodeData (
function checkProp (line 3009) | function checkProp (
function simpleNormalizeChildren (line 3048) | function simpleNormalizeChildren (children) {
function normalizeChildren (line 3061) | function normalizeChildren (children) {
function isTextNode (line 3069) | function isTextNode (node) {
function normalizeArrayChildren (line 3073) | function normalizeArrayChildren (children, nestedIndex) {
function ensureCtor (line 3123) | function ensureCtor (comp, base) {
function createAsyncPlaceholder (line 3135) | function createAsyncPlaceholder (
function resolveAsyncComponent (line 3148) | function resolveAsyncComponent (
function isAsyncPlaceholder (line 3252) | function isAsyncPlaceholder (node) {
function getFirstComponentChild (line 3258) | function getFirstComponentChild (children) {
function initEvents (line 3273) | function initEvents (vm) {
function add (line 3285) | function add (event, fn, once) {
function remove$1 (line 3293) | function remove$1 (event, fn) {
function updateComponentListeners (line 3297) | function updateComponentListeners (
function eventsMixin (line 3307) | function eventsMixin (Vue) {
function resolveSlots (line 3416) | function resolveSlots (
function isWhitespace (line 3456) | function isWhitespace (node) {
function resolveScopedSlots (line 3460) | function resolveScopedSlots (
function initLifecycle (line 3480) | function initLifecycle (vm) {
function lifecycleMixin (line 3506) | function lifecycleMixin (Vue) {
function mountComponent (line 3600) | function mountComponent (
function updateChildComponent (line 3668) | function updateChildComponent (
function isInInactiveTree (line 3734) | function isInInactiveTree (vm) {
function activateChildComponent (line 3741) | function activateChildComponent (vm, direct) {
function deactivateChildComponent (line 3759) | function deactivateChildComponent (vm, direct) {
function callHook (line 3775) | function callHook (vm, hook) {
function resetSchedulerState (line 3810) | function resetSchedulerState () {
function flushSchedulerQueue (line 3822) | function flushSchedulerQueue () {
function callUpdatedHooks (line 3877) | function callUpdatedHooks (queue) {
function queueActivatedComponent (line 3892) | function queueActivatedComponent (vm) {
function callActivatedHooks (line 3899) | function callActivatedHooks (queue) {
function queueWatcher (line 3911) | function queueWatcher (watcher) {
function proxy (line 4156) | function proxy (target, sourceKey, key) {
function initState (line 4166) | function initState (vm) {
function initProps (line 4182) | function initProps (vm, propsOptions) {
function initData (line 4232) | function initData (vm) {
function getData (line 4274) | function getData (data, vm) {
function initComputed (line 4289) | function initComputed (vm, computed) {
function defineComputed (line 4330) | function defineComputed (
function createComputedGetter (line 4363) | function createComputedGetter (key) {
function initMethods (line 4378) | function initMethods (vm, methods) {
function initWatch (line 4406) | function initWatch (vm, watch) {
function createWatcher (line 4419) | function createWatcher (
function stateMixin (line 4435) | function stateMixin (Vue) {
function initProvide (line 4484) | function initProvide (vm) {
function initInjections (line 4493) | function initInjections (vm) {
function resolveInject (line 4516) | function resolveInject (inject, vm) {
function renderList (line 4558) | function renderList (
function renderSlot (line 4592) | function renderSlot (
function resolveFilter (line 4641) | function resolveFilter (id) {
function isKeyNotMatch (line 4647) | function isKeyNotMatch (expect, actual) {
function checkKeyCodes (line 4660) | function checkKeyCodes (
function bindObjectProps (line 4682) | function bindObjectProps (
function renderStatic (line 4736) | function renderStatic (
function markOnce (line 4761) | function markOnce (
function markStatic (line 4770) | function markStatic (
function markStaticNode (line 4786) | function markStaticNode (node, key, isOnce) {
function bindObjectListeners (line 4794) | function bindObjectListeners (data, value) {
function installRenderHelpers (line 4815) | function installRenderHelpers (target) {
function FunctionalRenderContext (line 4835) | function FunctionalRenderContext (
function createFunctionalComponent (line 4894) | function createFunctionalComponent (
function cloneAndMarkFunctionalResult (line 4935) | function cloneAndMarkFunctionalResult (vnode, data, contextVm, options) {
function mergeProps (line 4948) | function mergeProps (to, from) {
function createComponent (line 5049) | function createComponent (
function createComponentInstanceForVnode (line 5152) | function createComponentInstanceForVnode (
function installComponentHooks (line 5174) | function installComponentHooks (data) {
function transformModel (line 5184) | function transformModel (options, data) {
function createElement (line 5202) | function createElement (
function _createElement (line 5221) | function _createElement (
function applyNS (line 5306) | function applyNS (vnode, ns, force) {
function registerDeepBindings (line 5327) | function registerDeepBindings (data) {
function initRender (line 5338) | function initRender (vm) {
function renderMixin (line 5373) | function renderMixin (Vue) {
function initMixin (line 5447) | function initMixin (Vue) {
function initInternalComponent (line 5506) | function initInternalComponent (vm, options) {
function resolveConstructorOptions (line 5527) | function resolveConstructorOptions (Ctor) {
function resolveModifiedOptions (line 5551) | function resolveModifiedOptions (Ctor) {
function dedupe (line 5565) | function dedupe (latest, extended, sealed) {
function Vue (line 5584) | function Vue (options) {
function initUse (line 5601) | function initUse (Vue) {
function initMixin$1 (line 5623) | function initMixin$1 (Vue) {
function initExtend (line 5632) | function initExtend (Vue) {
function initProps$1 (line 5708) | function initProps$1 (Comp) {
function initComputed$1 (line 5715) | function initComputed$1 (Comp) {
function initAssetRegisters (line 5724) | function initAssetRegisters (Vue) {
function getComponentName (line 5756) | function getComponentName (opts) {
function matches (line 5760) | function matches (pattern, name) {
function pruneCache (line 5772) | function pruneCache (keepAliveInstance, filter) {
function pruneCacheEntry (line 5787) | function pruneCacheEntry (
function initGlobalAPI (line 5890) | function initGlobalAPI (Vue) {
function genClassForVnode (line 5998) | function genClassForVnode (vnode) {
function mergeClassData (line 6016) | function mergeClassData (child, parent) {
function renderClass (line 6025) | function renderClass (
function concat (line 6036) | function concat (a, b) {
function stringifyClass (line 6040) | function stringifyClass (value) {
function stringifyArray (line 6054) | function stringifyArray (value) {
function stringifyObject (line 6066) | function stringifyObject (value) {
function getTagNamespace (line 6113) | function getTagNamespace (tag) {
function isUnknownElement (line 6125) | function isUnknownElement (tag) {
function query (line 6157) | function query (el) {
function createElement$1 (line 6174) | function createElement$1 (tagName, vnode) {
function createElementNS (line 6186) | function createElementNS (namespace, tagName) {
function createTextNode (line 6190) | function createTextNode (text) {
function createComment (line 6194) | function createComment (text) {
function insertBefore (line 6198) | function insertBefore (parentNode, newNode, referenceNode) {
function removeChild (line 6202) | function removeChild (node, child) {
function appendChild (line 6206) | function appendChild (node, child) {
function parentNode (line 6210) | function parentNode (node) {
function nextSibling (line 6214) | function nextSibling (node) {
function tagName (line 6218) | function tagName (node) {
function setTextContent (line 6222) | function setTextContent (node, text) {
function setStyleScope (line 6226) | function setStyleScope (node, scopeId) {
function registerRef (line 6263) | function registerRef (vnode, isRemoval) {
function sameVnode (line 6306) | function sameVnode (a, b) {
function sameInputType (line 6323) | function sameInputType (a, b) {
function createKeyToOldIdx (line 6331) | function createKeyToOldIdx (children, beginIdx, endIdx) {
function createPatchFunction (line 6341) | function createPatchFunction (backend) {
function updateDirectives (line 7055) | function updateDirectives (oldVnode, vnode) {
function _update (line 7061) | function _update (oldVnode, vnode) {
function normalizeDirectives$1 (line 7123) | function normalizeDirectives$1 (
function getRawDirName (line 7146) | function getRawDirName (dir) {
function callHook$1 (line 7150) | function callHook$1 (dir, hook, vnode, oldVnode, isDestroy) {
function updateAttrs (line 7168) | function updateAttrs (oldVnode, vnode) {
function setAttr (line 7209) | function setAttr (el, key, value) {
function baseSetAttr (line 7238) | function baseSetAttr (el, key, value) {
function updateClass (line 7270) | function updateClass (oldVnode, vnode) {
function parseFilters (line 7310) | function parseFilters (exp) {
function wrapFilter (line 7392) | function wrapFilter (exp, filter) {
function baseWarn (line 7406) | function baseWarn (msg) {
function pluckModuleFunction (line 7410) | function pluckModuleFunction (
function addProp (line 7419) | function addProp (el, name, value) {
function addAttr (line 7424) | function addAttr (el, name, value) {
function addRawAttr (line 7430) | function addRawAttr (el, name, value) {
function addDirective (line 7435) | function addDirective (
function addHandler (line 7447) | function addHandler (
function getBindingAttr (line 7523) | function getBindingAttr (
function getAndRemoveAttr (line 7545) | function getAndRemoveAttr (
function genComponentModel (line 7571) | function genComponentModel (
function genAssignmentCode (line 7603) | function genAssignmentCode (
function parseModel (line 7639) | function parseModel (val) {
function next (line 7679) | function next () {
function eof (line 7683) | function eof () {
function isStringStart (line 7687) | function isStringStart (chr) {
function parseBracket (line 7691) | function parseBracket (chr) {
function parseString (line 7709) | function parseString (chr) {
function model (line 7728) | function model (
function genCheckboxModel (line 7779) | function genCheckboxModel (
function genRadioModel (line 7810) | function genRadioModel (
function genSelect (line 7822) | function genSelect (
function genDefaultModel (line 7839) | function genDefaultModel (
function normalizeEvents (line 7897) | function normalizeEvents (on) {
function createOnceHandler (line 7916) | function createOnceHandler (handler, event, capture) {
function add$1 (line 7926) | function add$1 (
function remove$2 (line 7944) | function remove$2 (
function updateDOMListeners (line 7957) | function updateDOMListeners (oldVnode, vnode) {
function updateDOMProps (line 7976) | function updateDOMProps (oldVnode, vnode) {
function shouldUpdateValue (line 8027) | function shouldUpdateValue (elm, checkVal) {
function isNotInFocusAndDirty (line 8035) | function isNotInFocusAndDirty (elm, checkVal) {
function isDirtyWithModifiers (line 8045) | function isDirtyWithModifiers (elm, newVal) {
function normalizeStyleData (line 8084) | function normalizeStyleData (data) {
function normalizeStyleBinding (line 8094) | function normalizeStyleBinding (bindingStyle) {
function getStyle (line 8108) | function getStyle (vnode, checkChild) {
function updateStyle (line 8181) | function updateStyle (oldVnode, vnode) {
function addClass (line 8235) | function addClass (el, cls) {
function removeClass (line 8260) | function removeClass (el, cls) {
function resolveTransition (line 8293) | function resolveTransition (def) {
function nextFrame (line 8353) | function nextFrame (fn) {
function addTransitionClass (line 8359) | function addTransitionClass (el, cls) {
function removeTransitionClass (line 8367) | function removeTransitionClass (el, cls) {
function whenTransitionEnds (line 8374) | function whenTransitionEnds (
function getTransitionInfo (line 8407) | function getTransitionInfo (el, expectedType) {
function getTimeout (line 8456) | function getTimeout (delays, durations) {
function toMs (line 8467) | function toMs (s) {
function enter (line 8473) | function enter (vnode, toggleDisplay) {
function leave (line 8624) | function leave (vnode, rm) {
function checkDuration (line 8729) | function checkDuration (val, name, vnode) {
function isValidDuration (line 8745) | function isValidDuration (val) {
function getHookArgumentsLength (line 8755) | function getHookArgumentsLength (fn) {
function _enter (line 8772) | function _enter (_, vnode) {
function setSelected (line 8877) | function setSelected (el, binding, vm) {
function actuallySetSelected (line 8887) | function actuallySetSelected (el, binding, vm) {
function hasNoMatchingOption (line 8920) | function hasNoMatchingOption (value, options) {
function getValue (line 8924) | function getValue (option) {
function onCompositionStart (line 8930) | function onCompositionStart (e) {
function onCompositionEnd (line 8934) | function onCompositionEnd (e) {
function trigger (line 8941) | function trigger (el, type) {
function locateNode (line 8950) | function locateNode (vnode) {
function getRealChild (line 9041) | function getRealChild (vnode) {
function extractTransitionData (line 9050) | function extractTransitionData (comp) {
function placeholder (line 9066) | function placeholder (h, rawChild) {
function hasParentTransition (line 9074) | function hasParentTransition (vnode) {
function isSameChild (line 9082) | function isSameChild (child, oldChild) {
function callPendingCbs (line 9346) | function callPendingCbs (c) {
function recordPosition (line 9357) | function recordPosition (c) {
function applyTranslation (line 9361) | function applyTranslation (c) {
function parseText (line 9449) | function parseText (
function transformNode (line 9486) | function transformNode (el, options) {
function genData (line 9509) | function genData (el) {
function transformNode$1 (line 9528) | function transformNode$1 (el, options) {
function genData$1 (line 9553) | function genData$1 (el) {
function decodeAttr (line 9654) | function decodeAttr (value, shouldDecodeNewlines) {
function parseHTML (line 9659) | function parseHTML (html, options) {
function createASTElement (line 9939) | function createASTElement (
function parse (line 9957) | function parse (
function processPre (line 10185) | function processPre (el) {
function processRawAttrs (line 10191) | function processRawAttrs (el) {
function processElement (line 10207) | function processElement (element, options) {
function processKey (line 10223) | function processKey (el) {
function processRef (line 10233) | function processRef (el) {
function processFor (line 10241) | function processFor (el) {
function parseFor (line 10257) | function parseFor (exp) {
function processIf (line 10276) | function processIf (el) {
function processIfConditions (line 10295) | function processIfConditions (el, parent) {
function findPrevElement (line 10310) | function findPrevElement (children) {
function addIfCondition (line 10327) | function addIfCondition (el, condition) {
function processOnce (line 10334) | function processOnce (el) {
function processSlot (line 10341) | function processSlot (el) {
function processComponent (line 10390) | function processComponent (el) {
function processAttrs (line 10400) | function processAttrs (el) {
function checkInFor (line 10483) | function checkInFor (el) {
function parseModifiers (line 10494) | function parseModifiers (name) {
function makeAttrsMap (line 10503) | function makeAttrsMap (attrs) {
function isTextTag (line 10518) | function isTextTag (el) {
function isForbiddenTag (line 10522) | function isForbiddenTag (el) {
function guardIESVGBug (line 10536) | function guardIESVGBug (attrs) {
function checkForAliasModel (line 10548) | function checkForAliasModel (el, value) {
function preTransformNode (line 10576) | function preTransformNode (el, options) {
function cloneASTElement (line 10638) | function cloneASTElement (el) {
function text (line 10654) | function text (el, dir) {
function html (line 10662) | function html (el, dir) {
function optimize (line 10707) | function optimize (root, options) {
function genStaticKeys$1 (line 10717) | function genStaticKeys$1 (keys) {
function markStatic$1 (line 10724) | function markStatic$1 (node) {
function markStaticRoots (line 10756) | function markStaticRoots (node, isInFor) {
function isStatic (line 10786) | function isStatic (node) {
function isDirectChildOfTemplateFor (line 10803) | function isDirectChildOfTemplateFor (node) {
function genHandlers (line 10866) | function genHandlers (
function genHandler (line 10878) | function genHandler (
function genKeyFilter (line 10939) | function genKeyFilter (keys) {
function genFilterCode (line 10943) | function genFilterCode (key) {
function on (line 10962) | function on (el, dir) {
function bind$1 (line 10971) | function bind$1 (el, dir) {
function generate (line 11001) | function generate (
function genElement (line 11013) | function genElement (el, state) {
function genStatic (line 11046) | function genStatic (el, state) {
function genOnce (line 11053) | function genOnce (el, state) {
function genIf (line 11079) | function genIf (
function genIfConditions (line 11089) | function genIfConditions (
function genFor (line 11116) | function genFor (
function genData$2 (line 11148) | function genData$2 (el, state) {
function genDirectives (line 11226) | function genDirectives (el, state) {
function genInlineTemplate (line 11251) | function genInlineTemplate (el, state) {
function genScopedSlots (line 11264) | function genScopedSlots (
function genScopedSlot (line 11273) | function genScopedSlot (
function genForScopedSlot (line 11290) | function genForScopedSlot (
function genChildren (line 11306) | function genChildren (
function getNormalizationType (line 11336) | function getNormalizationType (
function needsNormalization (line 11359) | function needsNormalization (el) {
function genNode (line 11363) | function genNode (node, state) {
function genText (line 11373) | function genText (text) {
function genComment (line 11379) | function genComment (comment) {
function genSlot (line 11383) | function genSlot (el, state) {
function genComponent (line 11402) | function genComponent (
function genProps (line 11411) | function genProps (props) {
function transformSpecialNewlines (line 11424) | function transformSpecialNewlines (text) {
function detectErrors (line 11449) | function detectErrors (ast) {
function checkNode (line 11457) | function checkNode (node, errors) {
function checkEvent (line 11483) | function checkEvent (exp, text, errors) {
function checkFor (line 11495) | function checkFor (node, text, errors) {
function checkIdentifier (line 11502) | function checkIdentifier (
function checkExpression (line 11517) | function checkExpression (exp, text, errors) {
function createFunction (line 11539) | function createFunction (code, errors) {
function createCompileToFunctionFn (line 11548) | function createCompileToFunctionFn (compile) {
function createCompilerCreator (line 11636) | function createCompilerCreator (baseCompile) {
function getShouldDecode (line 11716) | function getShouldDecode (href) {
function getOuterHTML (line 11807) | function getOuterHTML (el) {
function Timeout (line 11844) | function Timeout(id, clearFn) {
function setImmediate (line 11907) | function setImmediate(callback) {
function clearImmediate (line 11924) | function clearImmediate(handle) {
function run (line 11928) | function run(task) {
function runIfPresent (line 11950) | function runIfPresent(handle) {
function installNextTickImplementation (line 11971) | function installNextTickImplementation() {
function canUsePostMessage (line 11977) | function canUsePostMessage() {
function installPostMessageImplementation (line 11992) | function installPostMessageImplementation() {
function installMessageChannelImplementation (line 12017) | function installMessageChannelImplementation() {
function installReadyStateChangeImplementation (line 12029) | function installReadyStateChangeImplementation() {
function installSetTimeoutImplementation (line 12045) | function installSetTimeoutImplementation() {
function assert (line 12095) | function assert (condition, message) {
function warn (line 12101) | function warn (condition, message) {
function isError (line 12107) | function isError (err) {
function resolveProps (line 12202) | function resolveProps (route, config) {
function extend (line 12223) | function extend (to, from) {
function resolveQuery (line 12245) | function resolveQuery (
function parseQuery (line 12266) | function parseQuery (query) {
function stringifyQuery (line 12294) | function stringifyQuery (obj) {
function createRoute (line 12331) | function createRoute (
function clone (line 12360) | function clone (value) {
function formatMatch (line 12379) | function formatMatch (record) {
function getFullPath (line 12388) | function getFullPath (
function isSameRoute (line 12400) | function isSameRoute (a, b) {
function isObjectEqual (line 12423) | function isObjectEqual (a, b) {
function isIncludedRoute (line 12445) | function isIncludedRoute (current, target) {
function queryIncludes (line 12455) | function queryIncludes (current, target) {
function guardEvent (line 12571) | function guardEvent (e) {
function findAnchor (line 12590) | function findAnchor (children) {
function install (line 12607) | function install (Vue) {
function resolvePath (line 12661) | function resolvePath (
function parsePath (line 12703) | function parsePath (path) {
function cleanPath (line 12726) | function cleanPath (path) {
function parse (line 12768) | function parse (str, options) {
function compile (line 12841) | function compile (str, options) {
function encodeURIComponentPretty (line 12851) | function encodeURIComponentPretty (str) {
function encodeAsterisk (line 12863) | function encodeAsterisk (str) {
function tokensToFunction (line 12872) | function tokensToFunction (tokens) {
function escapeString (line 12959) | function escapeString (str) {
function escapeGroup (line 12969) | function escapeGroup (group) {
function attachKeys (line 12980) | function attachKeys (re, keys) {
function flags (line 12991) | function flags (options) {
function regexpToRegexp (line 13002) | function regexpToRegexp (path, keys) {
function arrayToRegexp (line 13032) | function arrayToRegexp (path, keys, options) {
function stringToRegexp (line 13052) | function stringToRegexp (path, keys, options) {
function tokensToRegExp (line 13064) | function tokensToRegExp (tokens, keys, options) {
function pathToRegexp (line 13140) | function pathToRegexp (path, keys, options) {
function fillParams (line 13169) | function fillParams (
function createRouteMap (line 13189) | function createRouteMap (
function addRouteRecord (line 13222) | function addRouteRecord (
function compileRouteRegex (line 13333) | function compileRouteRegex (path, pathToRegexpOptions) {
function normalizePath (line 13345) | function normalizePath (path, parent, strict) {
function normalizeLocation (line 13355) | function normalizeLocation (
function assign (line 13409) | function assign (a, b) {
function createMatcher (line 13419) | function createMatcher (
function matchRoute (line 13584) | function matchRoute (
function resolveRecordPath (line 13608) | function resolveRecordPath (path, record) {
function setupScroll (line 13617) | function setupScroll () {
function handleScroll (line 13628) | function handleScroll (
function saveScrollPosition (line 13670) | function saveScrollPosition () {
function getScrollPosition (line 13680) | function getScrollPosition () {
function getElementPosition (line 13687) | function getElementPosition (el, offset) {
function isValidPosition (line 13697) | function isValidPosition (obj) {
function normalizePosition (line 13701) | function normalizePosition (obj) {
function normalizeOffset (line 13708) | function normalizeOffset (obj) {
function isNumber (line 13715) | function isNumber (v) {
function scrollToPosition (line 13719) | function scrollToPosition (shouldScroll, position) {
function genKey (line 13763) | function genKey () {
function getStateKey (line 13767) | function getStateKey () {
function setStateKey (line 13771) | function setStateKey (key) {
function pushState (line 13775) | function pushState (url, replace) {
function replaceState (line 13792) | function replaceState (url) {
function runQueue (line 13798) | function runQueue (queue, fn, cb) {
function resolveAsyncComponents (line 13817) | function resolveAsyncComponents (matched) {
function flatMapComponents (line 13883) | function flatMapComponents (
function flatten (line 13896) | function flatten (arr) {
function isESModule (line 13904) | function isESModule (obj) {
function once (line 13912) | function once (fn) {
function normalizeBase (line 14090) | function normalizeBase (base) {
function resolveQueue (line 14110) | function resolveQueue (
function extractGuards (line 14128) | function extractGuards (
function extractGuard (line 14145) | function extractGuard (
function extractLeaveGuards (line 14156) | function extractLeaveGuards (deactivated) {
function extractUpdateHooks (line 14160) | function extractUpdateHooks (updated) {
function bindGuard (line 14164) | function bindGuard (guard, instance) {
function extractEnterGuards (line 14172) | function extractEnterGuards (
function bindEnterGuard (line 14182) | function bindEnterGuard (
function poll (line 14206) | function poll (
function HTML5History (line 14225) | function HTML5History (router, base) {
function getLocation (line 14301) | function getLocation (base) {
function HashHistory (line 14313) | function HashHistory (router, base, fallback) {
function checkFallback (line 14397) | function checkFallback (base) {
function ensureSlash (line 14407) | function ensureSlash () {
function getHash (line 14416) | function getHash () {
function getUrl (line 14424) | function getUrl (path) {
function pushHash (line 14431) | function pushHash (path) {
function replaceHash (line 14439) | function replaceHash (path) {
function AbstractHistory (line 14451) | function AbstractHistory (router, base) {
function registerHook (line 14690) | function registerHook (list, fn) {
function createHref (line 14698) | function createHref (base, fullPath, mode) {
function injectStyle (line 14985) | function injectStyle (ssrContext) {
function injectStyle (line 15863) | function injectStyle (ssrContext) {
function injectStyle (line 16061) | function injectStyle (ssrContext) {
function injectStyle (line 16413) | function injectStyle (ssrContext) {
function injectStyle (line 16585) | function injectStyle (ssrContext) {
function injectStyle (line 16862) | function injectStyle (ssrContext) {
function injectStyle (line 17153) | function injectStyle (ssrContext) {
function injectStyle (line 18003) | function injectStyle (ssrContext) {
FILE: public/js/bootstrap.js
function __webpack_require__ (line 6) | function __webpack_require__(moduleId) {
function isArray (line 88) | function isArray(val) {
function isArrayBuffer (line 98) | function isArrayBuffer(val) {
function isFormData (line 108) | function isFormData(val) {
function isArrayBufferView (line 118) | function isArrayBufferView(val) {
function isString (line 134) | function isString(val) {
function isNumber (line 144) | function isNumber(val) {
function isUndefined (line 154) | function isUndefined(val) {
function isObject (line 164) | function isObject(val) {
function isDate (line 174) | function isDate(val) {
function isFile (line 184) | function isFile(val) {
function isBlob (line 194) | function isBlob(val) {
function isFunction (line 204) | function isFunction(val) {
function isStream (line 214) | function isStream(val) {
function isURLSearchParams (line 224) | function isURLSearchParams(val) {
function trim (line 234) | function trim(str) {
function isStandardBrowserEnv (line 251) | function isStandardBrowserEnv() {
function forEach (line 273) | function forEach(obj, fn) {
function merge (line 317) | function merge(/* obj1, obj2, obj3, ... */) {
function extend (line 341) | function extend(a, b, thisArg) {
function defaultSetTimout (line 421) | function defaultSetTimout() {
function defaultClearTimeout (line 424) | function defaultClearTimeout () {
function runTimeout (line 447) | function runTimeout(fun) {
function runClearTimeout (line 472) | function runClearTimeout(marker) {
function cleanUpNextTick (line 504) | function cleanUpNextTick() {
function drainQueue (line 519) | function drainQueue() {
function Item (line 557) | function Item(fun, array) {
function noop (line 571) | function noop() {}
function setContentTypeIfUnset (line 610) | function setContentTypeIfUnset(headers, value) {
function getDefaultAdapter (line 616) | function getDefaultAdapter() {
function microtaskDebounce (line 741) | function microtaskDebounce(fn) {
function taskDebounce (line 755) | function taskDebounce(fn) {
function isFunction (line 788) | function isFunction(functionToCheck) {
function getStyleComputedProperty (line 800) | function getStyleComputedProperty(element, property) {
function getParentNode (line 816) | function getParentNode(element) {
function getScrollParent (line 830) | function getScrollParent(element) {
function isIE (line 868) | function isIE(version) {
function getOffsetParent (line 885) | function getOffsetParent(element) {
function isOffsetContainer (line 914) | function isOffsetContainer(element) {
function getRoot (line 930) | function getRoot(node) {
function findCommonOffsetParent (line 946) | function findCommonOffsetParent(element1, element2) {
function getScroll (line 990) | function getScroll(element) {
function includeScroll (line 1014) | function includeScroll(rect, element) {
function getBordersSize (line 1037) | function getBordersSize(styles, axis) {
function getSize (line 1044) | function getSize(axis, body, html, computedStyle) {
function getWindowSizes (line 1048) | function getWindowSizes() {
function defineProperties (line 1066) | function defineProperties(target, props) {
function getClientRect (line 1123) | function getClientRect(offsets) {
function getBoundingClientRect (line 1137) | function getBoundingClientRect(element) {
function getOffsetRectRelativeToArbitraryNode (line 1186) | function getOffsetRectRelativeToArbitraryNode(children, parent) {
function getViewportOffsetRectRelativeToArtbitraryNode (line 1238) | function getViewportOffsetRectRelativeToArtbitraryNode(element) {
function isFixed (line 1267) | function isFixed(element) {
function getFixedPositionOffsetParent (line 1286) | function getFixedPositionOffsetParent(element) {
function getBoundaries (line 1309) | function getBoundaries(popper, reference, padding, boundariesElement) {
function getArea (line 1361) | function getArea(_ref) {
function computeAutoPlacement (line 1377) | function computeAutoPlacement(placement, refRect, popper, reference, bou...
function getReferenceOffsets (line 1438) | function getReferenceOffsets(state, popper, reference) {
function getOuterSizes (line 1452) | function getOuterSizes(element) {
function getOppositePlacement (line 1470) | function getOppositePlacement(placement) {
function getPopperOffsets (line 1487) | function getPopperOffsets(popper, referenceOffsets, placement) {
function find (line 1525) | function find(arr, check) {
function findIndex (line 1544) | function findIndex(arr, prop, value) {
function runModifiers (line 1569) | function runModifiers(modifiers, data, ends) {
function update (line 1599) | function update() {
function isModifierEnabled (line 1651) | function isModifierEnabled(modifiers, modifierName) {
function getSupportedPropertyName (line 1666) | function getSupportedPropertyName(property) {
function destroy (line 1685) | function destroy() {
function getWindow (line 1715) | function getWindow(element) {
function attachToScrollParents (line 1720) | function attachToScrollParents(scrollParent, event, callback, scrollPare...
function setupEventListeners (line 1737) | function setupEventListeners(reference, options, state, updateBound) {
function enableEventListeners (line 1757) | function enableEventListeners() {
function removeEventListeners (line 1769) | function removeEventListeners(reference, state) {
function disableEventListeners (line 1793) | function disableEventListeners() {
function isNumeric (line 1807) | function isNumeric(n) {
function setStyles (line 1819) | function setStyles(element, styles) {
function setAttributes (line 1838) | function setAttributes(element, attributes) {
function applyStyle (line 1858) | function applyStyle(data) {
function applyStyleOnLoad (line 1887) | function applyStyleOnLoad(reference, popper, options, modifierOptions, s...
function computeStyle (line 1912) | function computeStyle(data, options) {
function isModifierRequired (line 2011) | function isModifierRequired(modifiers, requestingName, requestedName) {
function arrow (line 2036) | function arrow(data, options) {
function getOppositeVariation (line 2118) | function getOppositeVariation(variation) {
function clockwise (line 2173) | function clockwise(placement) {
function flip (line 2194) | function flip(data, options) {
function keepTogether (line 2284) | function keepTogether(data) {
function toValue (line 2318) | function toValue(str, measurement, popperOffsets, referenceOffsets) {
function parseOffset (line 2370) | function parseOffset(offset, popperOffsets, referenceOffsets, basePlacem...
function offset (line 2446) | function offset(data, _ref) {
function preventOverflow (line 2487) | function preventOverflow(data, options) {
function shift (line 2558) | function shift(data) {
function hide (line 2591) | function hide(data) {
function inner (line 2629) | function inner(data) {
function Popper (line 3080) | function Popper(reference, popper) {
function DOMEval (line 3329) | function DOMEval( code, doc, node ) {
function toType (line 3347) | function toType( obj ) {
function isArrayLike (line 3715) | function isArrayLike( obj ) {
function Sizzle (line 3947) | function Sizzle( selector, context, results, seed ) {
function createCache (line 4086) | function createCache() {
function markFunction (line 4104) | function markFunction( fn ) {
function assert (line 4113) | function assert( fn ) {
function addHandle (line 4135) | function addHandle( attrs, handler ) {
function siblingCheck (line 4150) | function siblingCheck( a, b ) {
function createInputPseudo (line 4176) | function createInputPseudo( type ) {
function createButtonPseudo (line 4187) | function createButtonPseudo( type ) {
function createDisabledPseudo (line 4198) | function createDisabledPseudo( disabled ) {
function createPositionalPseudo (line 4254) | function createPositionalPseudo( fn ) {
function testContext (line 4277) | function testContext( context ) {
function setFilters (line 5359) | function setFilters() {}
function toSelector (line 5430) | function toSelector( tokens ) {
function addCombinator (line 5440) | function addCombinator( matcher, combinator, base ) {
function elementMatcher (line 5504) | function elementMatcher( matchers ) {
function multipleContexts (line 5518) | function multipleContexts( selector, contexts, results ) {
function condense (line 5527) | function condense( unmatched, map, filter, context, xml ) {
function setMatcher (line 5548) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde...
function matcherFromTokens (line 5641) | function matcherFromTokens( tokens ) {
function matcherFromGroupMatchers (line 5699) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
function nodeName (line 6035) | function nodeName( elem, name ) {
function winnow (line 6045) | function winnow( elements, qualifier, not ) {
function sibling (line 6340) | function sibling( cur, dir ) {
function createOptions (line 6427) | function createOptions( options ) {
function Identity (line 6652) | function Identity( v ) {
function Thrower (line 6655) | function Thrower( ex ) {
function adoptValue (line 6659) | function adoptValue( value, resolve, reject, noValue ) {
function resolve (line 6752) | function resolve( depth, deferred, handler, special ) {
function completed (line 7117) | function completed() {
function fcamelCase (line 7212) | function fcamelCase( all, letter ) {
function camelCase (line 7219) | function camelCase( string ) {
function Data (line 7236) | function Data() {
function getData (line 7405) | function getData( data ) {
function dataAttr (line 7430) | function dataAttr( elem, key, data ) {
function adjustCSS (line 7743) | function adjustCSS( elem, prop, valueParts, tween ) {
function getDefaultDisplay (line 7810) | function getDefaultDisplay( elem ) {
function showHide (line 7833) | function showHide( elements, show ) {
function getAll (line 7934) | function getAll( context, tag ) {
function setGlobalEval (line 7959) | function setGlobalEval( elems, refElements ) {
function buildFragment (line 7975) | function buildFragment( elems, context, scripts, selection, ignored ) {
function returnTrue (line 8098) | function returnTrue() {
function returnFalse (line 8102) | function returnFalse() {
function safeActiveElement (line 8108) | function safeActiveElement() {
function on (line 8114) | function on( elem, types, selector, data, fn, one ) {
function manipulationTarget (line 8842) | function manipulationTarget( elem, content ) {
function disableScript (line 8853) | function disableScript( elem ) {
function restoreScript (line 8857) | function restoreScript( elem ) {
function cloneCopyEvent (line 8867) | function cloneCopyEvent( src, dest ) {
function fixInput (line 8902) | function fixInput( src, dest ) {
function domManip (line 8915) | function domManip( collection, args, callback, ignored ) {
function remove (line 9005) | function remove( elem, selector, keepData ) {
function computeStyleTests (line 9298) | function computeStyleTests() {
function roundPixelMeasures (line 9340) | function roundPixelMeasures( measure ) {
function curCSS (line 9385) | function curCSS( elem, name, computed ) {
function addGetHookIf (line 9438) | function addGetHookIf( conditionFn, hookFn ) {
function vendorPropName (line 9475) | function vendorPropName( name ) {
function finalPropName (line 9496) | function finalPropName( name ) {
function setPositiveNumber (line 9504) | function setPositiveNumber( elem, value, subtract ) {
function boxModelAdjustment (line 9516) | function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, ...
function getWidthOrHeight (line 9581) | function getWidthOrHeight( elem, dimension, extra ) {
function Tween (line 9914) | function Tween( elem, options, prop, end, easing ) {
function schedule (line 10037) | function schedule() {
function createFxNow (line 10050) | function createFxNow() {
function genFx (line 10058) | function genFx( type, includeWidth ) {
function createTween (line 10078) | function createTween( value, prop, animation ) {
function defaultPrefilter (line 10092) | function defaultPrefilter( elem, props, opts ) {
function propFilter (line 10264) | function propFilter( props, specialEasing ) {
function Animation (line 10301) | function Animation( elem, properties, options ) {
function stripAndCollapse (line 11016) | function stripAndCollapse( value ) {
function getClass (line 11022) | function getClass( elem ) {
function classesToArray (line 11026) | function classesToArray( value ) {
function buildParams (line 11648) | function buildParams( prefix, obj, traditional, add ) {
function addToPrefiltersOrTransports (line 11798) | function addToPrefiltersOrTransports( structure ) {
function inspectPrefiltersOrTransports (line 11832) | function inspectPrefiltersOrTransports( structure, options, originalOpti...
function ajaxExtend (line 11861) | function ajaxExtend( target, src ) {
function ajaxHandleResponses (line 11881) | function ajaxHandleResponses( s, jqXHR, responses ) {
function ajaxConvert (line 11939) | function ajaxConvert( s, response, jqXHR, isSuccess ) {
function done (line 12452) | function done( status, nativeStatusText, responses, headers ) {
function Cancel (line 13855) | function Cancel(message) {
function _defineProperties (line 13993) | function _defineProperties(target, props) {
function _createClass (line 14003) | function _createClass(Constructor, protoProps, staticProps) {
function _extends (line 14009) | function _extends() {
function _inheritsLoose (line 14027) | function _inheritsLoose(subClass, superClass) {
function toType (line 14049) | function toType(obj) {
function getSpecialTransitionEndEvent (line 14053) | function getSpecialTransitionEndEvent() {
function transitionEndTest (line 14067) | function transitionEndTest() {
function transitionEndEmulator (line 14077) | function transitionEndEmulator(duration) {
function setTransitionEndSupport (line 14092) | function setTransitionEndSupport() {
function escapeId (line 14101) | function escapeId(selector) {
function Alert (line 14216) | function Alert(element) {
function Button (line 14390) | function Button(element) {
function Carousel (line 14593) | function Carousel(element, config) {
function Collapse (line 15066) | function Collapse(element, config) {
function Dropdown (line 15465) | function Dropdown(element, config) {
function Modal (line 15914) | function Modal(element, config) {
function Tooltip (line 16514) | function Tooltip(element, config) {
function Popover (line 17143) | function Popover() {
function ScrollSpy (line 17339) | function ScrollSpy(element, config) {
function Tab (line 17639) | function Tab(element) {
function createInstance (line 17899) | function createInstance(defaultConfig) {
function isBuffer (line 17957) | function isBuffer (obj) {
function isSlowBuffer (line 17962) | function isSlowBuffer (obj) {
function Axios (line 17984) | function Axios(instanceConfig) {
function encode (line 18142) | function encode(val) {
function resolveURL (line 18291) | function resolveURL(url) {
function E (line 18352) | function E() {
function btoa (line 18359) | function btoa(input) {
function InterceptorManager (line 18453) | function InterceptorManager() {
function throwIfCancellationRequested (line 18520) | function throwIfCancellationRequested(config) {
function CancelToken (line 18680) | function CancelToken(executor) {
FILE: tests/CreatesApplication.php
type CreatesApplication (line 8) | trait CreatesApplication
method createApplication (line 15) | public function createApplication()
FILE: tests/Feature/ExampleTest.php
class ExampleTest (line 8) | class ExampleTest extends TestCase
method testBasicTest (line 15) | public function testBasicTest()
FILE: tests/TestCase.php
class TestCase (line 7) | abstract class TestCase extends BaseTestCase
FILE: tests/Unit/ExampleTest.php
class ExampleTest (line 8) | class ExampleTest extends TestCase
method testBasicTest (line 15) | public function testBasicTest()
Condensed preview — 103 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,427K chars).
[
{
"path": ".gitattributes",
"chars": 111,
"preview": "* text=auto\n*.css linguist-vendored\n*.scss linguist-vendored\n*.js linguist-vendored\nCHANGELOG.md export-ignore\n"
},
{
"path": ".gitignore",
"chars": 181,
"preview": "/node_modules\n/public/hot\n/public/storage\n/storage/*.key\n/vendor\n/.idea\n/.vscode\n/.vagrant\n/database/database.sqlite\nHom"
},
{
"path": "app/Console/Kernel.php",
"chars": 848,
"preview": "<?php\n\nnamespace App\\Console;\n\nuse Illuminate\\Console\\Scheduling\\Schedule;\nuse Illuminate\\Foundation\\Console\\Kernel as C"
},
{
"path": "app/Exceptions/Handler.php",
"chars": 1058,
"preview": "<?php\n\nnamespace App\\Exceptions;\n\nuse Exception;\nuse Illuminate\\Foundation\\Exceptions\\Handler as ExceptionHandler;\n\nclas"
},
{
"path": "app/Http/Controllers/Auth/ForgotPasswordController.php",
"chars": 834,
"preview": "<?php\n\nnamespace App\\Http\\Controllers\\Auth;\n\nuse App\\Http\\Controllers\\Controller;\nuse Illuminate\\Foundation\\Auth\\SendsPa"
},
{
"path": "app/Http/Controllers/Auth/LoginController.php",
"chars": 943,
"preview": "<?php\n\nnamespace App\\Http\\Controllers\\Auth;\n\nuse App\\Http\\Controllers\\Controller;\nuse Illuminate\\Foundation\\Auth\\Authent"
},
{
"path": "app/Http/Controllers/Auth/RegisterController.php",
"chars": 1858,
"preview": "<?php\n\nnamespace App\\Http\\Controllers\\Auth;\n\nuse App\\User;\nuse App\\Http\\Controllers\\Controller;\nuse Illuminate\\Support\\F"
},
{
"path": "app/Http/Controllers/Auth/ResetPasswordController.php",
"chars": 952,
"preview": "<?php\n\nnamespace App\\Http\\Controllers\\Auth;\n\nuse App\\Http\\Controllers\\Controller;\nuse Illuminate\\Foundation\\Auth\\ResetsP"
},
{
"path": "app/Http/Controllers/Controller.php",
"chars": 361,
"preview": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse Illuminate\\Foundation\\Bus\\DispatchesJobs;\nuse Illuminate\\Routing\\Controller "
},
{
"path": "app/Http/Controllers/OrderController.php",
"chars": 1758,
"preview": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse App\\Order;\nuse Auth;\nuse Illuminate\\Http\\Request;\n\nclass OrderController ext"
},
{
"path": "app/Http/Controllers/ProductController.php",
"chars": 2187,
"preview": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse App\\Product;\nuse Illuminate\\Http\\Request;\n\nclass ProductController extends C"
},
{
"path": "app/Http/Controllers/UserController.php",
"chars": 1861,
"preview": "<?php\n\nnamespace App\\Http\\Controllers;\n\nuse Illuminate\\Http\\Request;\nuse App\\Http\\Controllers\\Controller;\nuse Auth;\nuse "
},
{
"path": "app/Http/Kernel.php",
"chars": 2189,
"preview": "<?php\n\nnamespace App\\Http;\n\nuse Illuminate\\Foundation\\Http\\Kernel as HttpKernel;\n\nclass Kernel extends HttpKernel\n{\n "
},
{
"path": "app/Http/Middleware/EncryptCookies.php",
"chars": 294,
"preview": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Illuminate\\Cookie\\Middleware\\EncryptCookies as Middleware;\n\nclass EncryptCook"
},
{
"path": "app/Http/Middleware/RedirectIfAuthenticated.php",
"chars": 523,
"preview": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Closure;\nuse Illuminate\\Support\\Facades\\Auth;\n\nclass RedirectIfAuthenticated\n"
},
{
"path": "app/Http/Middleware/TrimStrings.php",
"chars": 340,
"preview": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Illuminate\\Foundation\\Http\\Middleware\\TrimStrings as Middleware;\n\nclass TrimS"
},
{
"path": "app/Http/Middleware/TrustProxies.php",
"chars": 432,
"preview": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Illuminate\\Http\\Request;\nuse Fideloper\\Proxy\\TrustProxies as Middleware;\n\ncla"
},
{
"path": "app/Http/Middleware/VerifyCsrfToken.php",
"chars": 307,
"preview": "<?php\n\nnamespace App\\Http\\Middleware;\n\nuse Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken as Middleware;\n\nclass V"
},
{
"path": "app/Order.php",
"chars": 456,
"preview": "<?php\n\nnamespace App;\n\nuse Illuminate\\Database\\Eloquent\\Model;\nuse Illuminate\\Database\\Eloquent\\SoftDeletes;\n\nclass Orde"
},
{
"path": "app/Product.php",
"chars": 345,
"preview": "<?php\n\nnamespace App;\n\nuse Illuminate\\Database\\Eloquent\\Model;\nuse Illuminate\\Database\\Eloquent\\SoftDeletes;\n\nclass Prod"
},
{
"path": "app/Providers/AppServiceProvider.php",
"chars": 473,
"preview": "<?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Support\\ServiceProvider;\nuse Illuminate\\Support\\Facades\\Schema;\n\nclass A"
},
{
"path": "app/Providers/AuthServiceProvider.php",
"chars": 622,
"preview": "<?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Support\\Facades\\Gate;\nuse Illuminate\\Foundation\\Support\\Providers\\AuthSe"
},
{
"path": "app/Providers/BroadcastServiceProvider.php",
"chars": 380,
"preview": "<?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Support\\ServiceProvider;\nuse Illuminate\\Support\\Facades\\Broadcast;\n\nclas"
},
{
"path": "app/Providers/EventServiceProvider.php",
"chars": 596,
"preview": "<?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Support\\Facades\\Event;\nuse Illuminate\\Foundation\\Support\\Providers\\Event"
},
{
"path": "app/Providers/RouteServiceProvider.php",
"chars": 1529,
"preview": "<?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Support\\Facades\\Route;\nuse Illuminate\\Foundation\\Support\\Providers\\Route"
},
{
"path": "app/User.php",
"chars": 524,
"preview": "<?php\n\nnamespace App;\n\nuse Illuminate\\Notifications\\Notifiable;\nuse Illuminate\\Foundation\\Auth\\User as Authenticatable;\n"
},
{
"path": "artisan",
"chars": 1686,
"preview": "#!/usr/bin/env php\n<?php\n\ndefine('LARAVEL_START', microtime(true));\n\n/*\n|-----------------------------------------------"
},
{
"path": "bootstrap/app.php",
"chars": 1602,
"preview": "<?php\n\n/*\n|--------------------------------------------------------------------------\n| Create The Application\n|--------"
},
{
"path": "bootstrap/cache/.gitignore",
"chars": 14,
"preview": "*\n!.gitignore\n"
},
{
"path": "composer.json",
"chars": 1513,
"preview": "{\n \"name\": \"laravel/laravel\",\n \"description\": \"The Laravel Framework.\",\n \"keywords\": [\"framework\", \"laravel\"],\n"
},
{
"path": "config/app.php",
"chars": 8574,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Applicatio"
},
{
"path": "config/auth.php",
"chars": 3254,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Authentica"
},
{
"path": "config/broadcasting.php",
"chars": 1604,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Default Br"
},
{
"path": "config/cache.php",
"chars": 2682,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Default Ca"
},
{
"path": "config/database.php",
"chars": 3951,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Default Da"
},
{
"path": "config/filesystems.php",
"chars": 2133,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Default Fi"
},
{
"path": "config/hashing.php",
"chars": 1537,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Default Ha"
},
{
"path": "config/logging.php",
"chars": 2220,
"preview": "<?php\n\nuse Monolog\\Handler\\StreamHandler;\n\nreturn [\n\n /*\n |-------------------------------------------------------"
},
{
"path": "config/mail.php",
"chars": 4214,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Mail Drive"
},
{
"path": "config/queue.php",
"chars": 2612,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Default Qu"
},
{
"path": "config/services.php",
"chars": 980,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Third Part"
},
{
"path": "config/session.php",
"chars": 6875,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Default Se"
},
{
"path": "config/view.php",
"chars": 1004,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | View Stora"
},
{
"path": "database/.gitignore",
"chars": 9,
"preview": "*.sqlite\n"
},
{
"path": "database/factories/UserFactory.php",
"chars": 737,
"preview": "<?php\n\nuse Faker\\Generator as Faker;\n\n/*\n|--------------------------------------------------------------------------\n| M"
},
{
"path": "database/migrations/2014_10_12_000000_create_users_table.php",
"chars": 838,
"preview": "<?php\n\nuse Illuminate\\Support\\Facades\\Schema;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Database\\Migratio"
},
{
"path": "database/migrations/2014_10_12_100000_create_password_resets_table.php",
"chars": 683,
"preview": "<?php\n\nuse Illuminate\\Support\\Facades\\Schema;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Database\\Migratio"
},
{
"path": "database/migrations/2018_04_07_050507_create_products_table.php",
"chars": 841,
"preview": "<?php\n\nuse Illuminate\\Support\\Facades\\Schema;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Database\\Migratio"
},
{
"path": "database/migrations/2018_04_07_050555_create_orders_table.php",
"chars": 872,
"preview": "<?php\n\nuse Illuminate\\Support\\Facades\\Schema;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Database\\Migratio"
},
{
"path": "database/seeds/DatabaseSeeder.php",
"chars": 294,
"preview": "<?php\n\nuse Illuminate\\Database\\Seeder;\n\nclass DatabaseSeeder extends Seeder\n{\n /**\n * Seed the application's data"
},
{
"path": "database/seeds/ProductTableSeeder.php",
"chars": 2033,
"preview": "<?php\n\nuse Illuminate\\Database\\Seeder;\nuse App\\Product;\n\nclass ProductTableSeeder extends Seeder\n{\n /**\n * Run th"
},
{
"path": "database/seeds/UserTableSeeder.php",
"chars": 333,
"preview": "<?php\n\nuse Illuminate\\Database\\Seeder;\nuse App\\User;\n\nclass UserTableSeeder extends Seeder\n{\n public function run()\n "
},
{
"path": "package.json",
"chars": 963,
"preview": "{\n \"private\": true,\n \"scripts\": {\n \"dev\": \"npm run development\",\n \"development\": \"cross-env NODE_ENV"
},
{
"path": "phpunit.xml",
"chars": 1088,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<phpunit backupGlobals=\"false\"\n backupStaticAttributes=\"false\"\n b"
},
{
"path": "public/.htaccess",
"chars": 593,
"preview": "<IfModule mod_rewrite.c>\n <IfModule mod_negotiation.c>\n Options -MultiViews -Indexes\n </IfModule>\n\n Rewr"
},
{
"path": "public/css/app.css",
"chars": 186988,
"preview": "@import url(https://fonts.googleapis.com/css?family=Raleway:300,400,600);/*!\n * Bootstrap v4.0.0 (https://getbootstrap.c"
},
{
"path": "public/index.php",
"chars": 1823,
"preview": "<?php\n\n/**\n * Laravel - A PHP Framework For Web Artisans\n *\n * @package Laravel\n * @author Taylor Otwell <taylor@lara"
},
{
"path": "public/js/app.js",
"chars": 491386,
"preview": "/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/**"
},
{
"path": "public/js/bootstrap.js",
"chars": 522432,
"preview": "/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/**"
},
{
"path": "public/mix-manifest.json",
"chars": 114,
"preview": "{\n \"/js/app.js\": \"/js/app.js\",\n \"/css/app.css\": \"/css/app.css\",\n \"/js/bootstrap.js\": \"/js/bootstrap.js\"\n}"
},
{
"path": "public/robots.txt",
"chars": 24,
"preview": "User-agent: *\nDisallow:\n"
},
{
"path": "readme.md",
"chars": 2005,
"preview": "# Building an E-commerce platform with Laravel and Vue\nThis is a demo application showing how to build an e-commerce pla"
},
{
"path": "resources/assets/js/app.js",
"chars": 2716,
"preview": "import Vue from 'vue'\nimport VueRouter from 'vue-router'\n\nVue.use(VueRouter)\n\nimport App from './views/App'\nimport Home "
},
{
"path": "resources/assets/js/bootstrap.js",
"chars": 1707,
"preview": "window.Popper = require('popper.js').default;\n/**\n * We'll load jQuery and the Bootstrap jQuery plugin which provides su"
},
{
"path": "resources/assets/js/components/ExampleComponent.vue",
"chars": 565,
"preview": "<template>\n <div class=\"container\">\n <div class=\"row justify-content-center\">\n <div class=\"col-md-8"
},
{
"path": "resources/assets/js/components/admin/Main.vue",
"chars": 1729,
"preview": "<template>\n\t<div class=\"row\">\n <div class=\"col-md-4 product-box d-flex align-content-center justify-content-cente"
},
{
"path": "resources/assets/js/components/admin/Orders.vue",
"chars": 1878,
"preview": "<template>\n\t<div>\n <table class=\"table table-responsive table-striped\">\n <thead>\n <tr>\n"
},
{
"path": "resources/assets/js/components/admin/ProductModal.vue",
"chars": 2971,
"preview": "<template>\n <div class=\"modal-mask\">\n <div class=\"modal-wrapper\">\n <div class=\"modal-container\">\n <div c"
},
{
"path": "resources/assets/js/components/admin/Products.vue",
"chars": 3120,
"preview": "<template>\n\t<div>\n <table class=\"table table-responsive table-striped\">\n <thead>\n <tr>\n"
},
{
"path": "resources/assets/js/components/admin/Users.vue",
"chars": 1115,
"preview": "<template>\n\t<div>\n <table class=\"table table-responsive table-striped\">\n <thead>\n <tr>\n"
},
{
"path": "resources/assets/js/views/Admin.vue",
"chars": 3001,
"preview": "<template>\n <div>\n <div class=\"container-fluid hero-section d-flex align-content-center justify-content-center"
},
{
"path": "resources/assets/js/views/App.vue",
"chars": 2548,
"preview": "<template>\n <div>\n <nav class=\"navbar navbar-expand-md navbar-light navbar-laravel\">\n <div class=\"c"
},
{
"path": "resources/assets/js/views/Checkout.vue",
"chars": 4007,
"preview": "<template>\n <div class=\"container\">\n <div class=\"row\">\n <div class=\"col-md-8 offset-md-2\">\n "
},
{
"path": "resources/assets/js/views/Confirmation.vue",
"chars": 960,
"preview": "<template>\n <div>\n <div class=\"container-fluid hero-section d-flex align-content-center justify-content-center"
},
{
"path": "resources/assets/js/views/Home.vue",
"chars": 1913,
"preview": "<template>\n <div>\n <div class=\"container-fluid hero-section d-flex align-content-center justify-content-center"
},
{
"path": "resources/assets/js/views/Login.vue",
"chars": 3335,
"preview": "<template>\n <div class=\"container\">\n <div class=\"row justify-content-center\">\n <div class=\"col-md-8"
},
{
"path": "resources/assets/js/views/Register.vue",
"chars": 4372,
"preview": "\n<template>\n <div class=\"container\">\n <div class=\"row justify-content-center\">\n <div class=\"col"
},
{
"path": "resources/assets/js/views/SingleProduct.vue",
"chars": 1320,
"preview": "<template>\n <div class=\"container\">\n <div class=\"row\">\n <div class=\"col-md-8 offset-md-2\">\n "
},
{
"path": "resources/assets/js/views/UserBoard.vue",
"chars": 2399,
"preview": "<template>\n <div>\n <div class=\"container-fluid hero-section d-flex align-content-center justify-content-center"
},
{
"path": "resources/assets/sass/_variables.scss",
"chars": 140,
"preview": "\n// Body\n$body-bg: #f5f8fa;\n\n// Typography\n$font-family-sans-serif: \"Raleway\", sans-serif;\n$font-size-base: 0.9rem;\n$lin"
},
{
"path": "resources/assets/sass/app.scss",
"chars": 264,
"preview": "\n// Fonts\n@import url(\"https://fonts.googleapis.com/css?family=Raleway:300,400,600\");\n\n// Variables\n@import \"variables\";"
},
{
"path": "resources/lang/en/auth.php",
"chars": 617,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Authentica"
},
{
"path": "resources/lang/en/pagination.php",
"chars": 534,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Pagination"
},
{
"path": "resources/lang/en/passwords.php",
"chars": 786,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Password R"
},
{
"path": "resources/lang/en/validation.php",
"chars": 6693,
"preview": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Validation"
},
{
"path": "resources/views/landing.blade.php",
"chars": 523,
"preview": "<!DOCTYPE html>\n<html>\n<head>\n <meta charset=\"utf-8\">\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n <"
},
{
"path": "routes/api.php",
"chars": 1266,
"preview": "<?php\n\nuse Illuminate\\Http\\Request;\n\n/*\n|--------------------------------------------------------------------------\n| AP"
},
{
"path": "routes/channels.php",
"chars": 508,
"preview": "<?php\n\n/*\n|--------------------------------------------------------------------------\n| Broadcast Channels\n|------------"
},
{
"path": "routes/console.php",
"chars": 553,
"preview": "<?php\n\nuse Illuminate\\Foundation\\Inspiring;\n\n/*\n|-----------------------------------------------------------------------"
},
{
"path": "routes/web.php",
"chars": 480,
"preview": "<?php\n\n/*\n|--------------------------------------------------------------------------\n| Web Routes\n|--------------------"
},
{
"path": "server.php",
"chars": 563,
"preview": "<?php\n\n/**\n * Laravel - A PHP Framework For Web Artisans\n *\n * @package Laravel\n * @author Taylor Otwell <taylor@lara"
},
{
"path": "storage/app/.gitignore",
"chars": 23,
"preview": "*\n!public/\n!.gitignore\n"
},
{
"path": "storage/framework/.gitignore",
"chars": 103,
"preview": "config.php\nroutes.php\nschedule-*\ncompiled.php\nservices.json\nevents.scanned.php\nroutes.scanned.php\ndown\n"
},
{
"path": "storage/framework/cache/.gitignore",
"chars": 14,
"preview": "*\n!.gitignore\n"
},
{
"path": "storage/framework/sessions/.gitignore",
"chars": 14,
"preview": "*\n!.gitignore\n"
},
{
"path": "storage/framework/testing/.gitignore",
"chars": 14,
"preview": "*\n!.gitignore\n"
},
{
"path": "storage/framework/views/.gitignore",
"chars": 14,
"preview": "*\n!.gitignore\n"
},
{
"path": "storage/logs/.gitignore",
"chars": 14,
"preview": "*\n!.gitignore\n"
},
{
"path": "tests/CreatesApplication.php",
"chars": 464,
"preview": "<?php\n\nnamespace Tests;\n\nuse Illuminate\\Support\\Facades\\Hash;\nuse Illuminate\\Contracts\\Console\\Kernel;\n\ntrait CreatesApp"
},
{
"path": "tests/Feature/ExampleTest.php",
"chars": 340,
"preview": "<?php\n\nnamespace Tests\\Feature;\n\nuse Tests\\TestCase;\nuse Illuminate\\Foundation\\Testing\\RefreshDatabase;\n\nclass ExampleTe"
},
{
"path": "tests/TestCase.php",
"chars": 163,
"preview": "<?php\n\nnamespace Tests;\n\nuse Illuminate\\Foundation\\Testing\\TestCase as BaseTestCase;\n\nabstract class TestCase extends Ba"
},
{
"path": "tests/Unit/ExampleTest.php",
"chars": 294,
"preview": "<?php\n\nnamespace Tests\\Unit;\n\nuse Tests\\TestCase;\nuse Illuminate\\Foundation\\Testing\\RefreshDatabase;\n\nclass ExampleTest "
},
{
"path": "webpack.mix.js",
"chars": 605,
"preview": "let mix = require('laravel-mix');\n\n/*\n |--------------------------------------------------------------------------\n | Mi"
}
]
About this extraction
This page contains the full source code of the neoighodaro-articles/e-commerce-laravel-vue GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 103 files (1.3 MB), approximately 350.2k tokens, and a symbol index with 771 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.