Repository: izhan47/laravel-showcase
Branch: master
Commit: e50fbed76e86
Files: 463
Total size: 24.5 MB
Directory structure:
gitextract_uwh3je2m/
├── .gitignore
├── README.md
├── app/
│ ├── Console/
│ │ ├── Commands/
│ │ │ ├── BreedsImportCommand.php
│ │ │ ├── ScriptCompressExistingImages.php
│ │ │ ├── ScriptCompressExistingMediaImages.php
│ │ │ ├── ScriptCompressExistingPetProImages.php
│ │ │ ├── ScriptCompressExistingThumbOrImages.php
│ │ │ ├── ScriptCreatePetProSmallThumbImages.php
│ │ │ ├── StateShortcodeScript.php
│ │ │ ├── UpdateValidCitiesFlagCommand.php
│ │ │ └── addExistingPetProCategoriesCommand.php
│ │ └── Kernel.php
│ ├── Exceptions/
│ │ └── Handler.php
│ ├── Http/
│ │ ├── Controllers/
│ │ │ ├── Admin/
│ │ │ │ ├── AdminUsersController.php
│ │ │ │ ├── Auth/
│ │ │ │ │ └── LoginController.php
│ │ │ │ ├── BusinessRequestsController.php
│ │ │ │ ├── ContactsController.php
│ │ │ │ ├── DashboardController.php
│ │ │ │ ├── NewslettersController.php
│ │ │ │ ├── PetProBusinessController.php
│ │ │ │ ├── PetProCategoriesController.php
│ │ │ │ ├── PetProDealsController.php
│ │ │ │ ├── PetProEventsController.php
│ │ │ │ ├── PetProGalleriesController.php
│ │ │ │ ├── PetProsController.php
│ │ │ │ ├── PetProsRequestController.php
│ │ │ │ ├── PetTypeController.php
│ │ │ │ ├── ProductReviewCategoriesController.php
│ │ │ │ ├── ProductReviewController.php
│ │ │ │ ├── ProductReviewDealsController.php
│ │ │ │ ├── TestimonialController.php
│ │ │ │ ├── UsersController.php
│ │ │ │ ├── WatchAndLearnAuthorController.php
│ │ │ │ ├── WatchAndLearnCategoriesController.php
│ │ │ │ ├── WatchAndLearnController.php
│ │ │ │ └── WatchAndLearnMediaController.php
│ │ │ ├── Api/
│ │ │ │ └── V1/
│ │ │ │ ├── Auth/
│ │ │ │ │ ├── ForgotPasswordController.php
│ │ │ │ │ ├── LoginController.php
│ │ │ │ │ ├── RegisterController.php
│ │ │ │ │ ├── ResetPasswordController.php
│ │ │ │ │ ├── SocialLoginController.php
│ │ │ │ │ ├── SocialSignUpController.php
│ │ │ │ │ └── VerificationController.php
│ │ │ │ ├── BusinessRequestController.php
│ │ │ │ ├── ContactController.php
│ │ │ │ ├── HomeController.php
│ │ │ │ ├── NewsletterController.php
│ │ │ │ ├── PetProController.php
│ │ │ │ ├── ProductReviewController.php
│ │ │ │ ├── UsersController.php
│ │ │ │ └── WatchAndLearnController.php
│ │ │ ├── Auth/
│ │ │ │ ├── ConfirmPasswordController.php
│ │ │ │ ├── ForgotPasswordController.php
│ │ │ │ ├── LoginController.php
│ │ │ │ ├── RegisterController.php
│ │ │ │ ├── ResetPasswordController.php
│ │ │ │ └── VerificationController.php
│ │ │ ├── Controller.php
│ │ │ └── HomeController.php
│ │ ├── HubspotHelpers.php
│ │ ├── Kernel.php
│ │ ├── Middleware/
│ │ │ ├── AdminAuth.php
│ │ │ ├── Authenticate.php
│ │ │ ├── CheckForMaintenanceMode.php
│ │ │ ├── EncryptCookies.php
│ │ │ ├── RedirectIfAuthenticated.php
│ │ │ ├── SetAuthProviderUser.php
│ │ │ ├── TrimStrings.php
│ │ │ ├── TrustProxies.php
│ │ │ ├── VerifyCsrfToken.php
│ │ │ └── VerifyJWTToken.php
│ │ ├── Requests/
│ │ │ ├── Admin/
│ │ │ │ ├── AdminUsersRequest.php
│ │ │ │ ├── PetProBusinessRequest.php
│ │ │ │ ├── PetProCategoriesRequest.php
│ │ │ │ ├── PetProDealRequest.php
│ │ │ │ ├── PetProEventRequest.php
│ │ │ │ ├── PetProGalleryRequest.php
│ │ │ │ ├── PetProRequest.php
│ │ │ │ ├── PetTypeRequest.php
│ │ │ │ ├── TestimonialRequest.php
│ │ │ │ ├── WatchAndLearnAuthorRequest.php
│ │ │ │ ├── WatchAndLearnCategoriesRequest.php
│ │ │ │ ├── WatchAndLearnDealRequest.php
│ │ │ │ └── WatchAndLearnRequest.php
│ │ │ └── User/
│ │ │ └── UserPetProRequest.php
│ │ └── WagEnabledHelpers.php
│ ├── Imports/
│ │ └── BreedsImport.php
│ ├── Library/
│ │ └── GoogleMapHelper.php
│ ├── Mail/
│ │ ├── SendBusinessRequestMail.php
│ │ ├── SendCommentNotificaitonMail.php
│ │ ├── SendContactMail.php
│ │ └── UerPasswordResetMail.php
│ ├── Models/
│ │ ├── AdminUser.php
│ │ ├── Breed.php
│ │ ├── BusinessNature.php
│ │ ├── BusinessRequest.php
│ │ ├── City.php
│ │ ├── Contact.php
│ │ ├── Country.php
│ │ ├── Newsletter.php
│ │ ├── PasswordReset.php
│ │ ├── PetPro.php
│ │ ├── PetProCategory.php
│ │ ├── PetProDeal.php
│ │ ├── PetProDealClaim.php
│ │ ├── PetProEvent.php
│ │ ├── PetProGallery.php
│ │ ├── PetProReview.php
│ │ ├── PetProSelectedBusinessNature.php
│ │ ├── PetProSelectedCategory.php
│ │ ├── PetProServicesOffered.php
│ │ ├── PetProTimetable.php
│ │ ├── PetProsSelectedPetType.php
│ │ ├── PetType.php
│ │ ├── State.php
│ │ ├── Testimonial.php
│ │ ├── User.php
│ │ ├── UserLovedPetPro.php
│ │ ├── UserPet.php
│ │ ├── UserSavedVideo.php
│ │ ├── UsersPetBreed.php
│ │ ├── WatchAndLearn.php
│ │ ├── WatchAndLearnAuthor.php
│ │ ├── WatchAndLearnCategory.php
│ │ ├── WatchAndLearnComment.php
│ │ ├── WatchAndLearnDeal.php
│ │ ├── WatchAndLearnDealClaim.php
│ │ ├── WatchAndLearnMedias.php
│ │ └── WatchAndLearnSelectedCategory.php
│ ├── Observers/
│ │ ├── PetProObserver.php
│ │ ├── ProductReviewObserver.php
│ │ └── WatchAndLearnObserver.php
│ └── Providers/
│ ├── AppServiceProvider.php
│ ├── AuthServiceProvider.php
│ ├── BroadcastServiceProvider.php
│ ├── EventServiceProvider.php
│ └── RouteServiceProvider.php
├── artisan
├── bootstrap/
│ ├── app.php
│ └── cache/
│ └── .gitignore
├── composer.json
├── config/
│ ├── api.php
│ ├── app.php
│ ├── auth.php
│ ├── broadcasting.php
│ ├── cache.php
│ ├── cors.php
│ ├── database.php
│ ├── filesystems.php
│ ├── hashing.php
│ ├── jwt.php
│ ├── logging.php
│ ├── mail.php
│ ├── queue.php
│ ├── services.php
│ ├── session.php
│ ├── view.php
│ └── wagenabled.php
├── database/
│ ├── .gitignore
│ ├── factories/
│ │ └── UserFactory.php
│ ├── migrations/
│ │ ├── 2014_10_12_000000_create_users_table.php
│ │ ├── 2014_10_12_100000_create_password_resets_table.php
│ │ ├── 2019_08_19_000000_create_failed_jobs_table.php
│ │ ├── 2020_04_23_050448_create_admin_users_table.php
│ │ ├── 2020_04_25_052414_create_breeds_table.php
│ │ ├── 2020_04_25_063535_create_user_pets_table.php
│ │ ├── 2020_04_25_083408_create_contacts_table.php
│ │ ├── 2020_04_25_090404_create_business_requests_table.php
│ │ ├── 2020_04_25_092709_create_newsletters_table.php
│ │ ├── 2020_04_25_094050_create_watch_and_learn_categories_table.php
│ │ ├── 2020_04_25_104210_create_watch_and_learn_authors_table.php
│ │ ├── 2020_04_25_104211_create_watch_and_learn_table.php
│ │ ├── 2020_04_27_064153_create_watch_and_learn_comments_table.php
│ │ ├── 2020_04_27_070449_create_user_saved_videos_table.php
│ │ ├── 2020_04_27_093324_create_countries_table.php
│ │ ├── 2020_04_27_093329_create_states_table.php
│ │ ├── 2020_04_27_093333_create_cities_table.php
│ │ ├── 2020_04_27_093334_create_pet_pro_categories_table.php
│ │ ├── 2020_04_27_093335_create_pet_pros_table.php
│ │ ├── 2020_04_27_122139_create_pet_pro_timetables_table.php
│ │ ├── 2020_04_28_103645_create_user_loved_pet_pros_table.php
│ │ ├── 2020_04_28_103815_create_pet_pro_reviews_table.php
│ │ ├── 2020_04_28_103821_create_pet_pro_galleries_table.php
│ │ ├── 2020_04_28_103827_create_pet_pro_deals_table.php
│ │ ├── 2020_04_28_103833_create_pet_pro_deal_claims_table.php
│ │ ├── 2020_04_28_103839_create_pet_pro_events_table.php
│ │ ├── 2020_05_25_094716_create_users_pet_breed_table.php
│ │ ├── 2020_06_08_114705_create_watch_and_learn_medias_table.php
│ │ ├── 2020_06_30_055558_add_extra_fields_to_newsletters_table.php
│ │ ├── 2020_07_03_051223_add_status_to_watch_and_learn_table.php
│ │ ├── 2020_07_03_062408_alter_table_watch_and_learn_change_blog_meta_description.php
│ │ ├── 2020_07_11_100910_create_testimonials_table.php
│ │ ├── 2020_07_13_064659_add_is_valid_column_in_cities_table.php
│ │ ├── 2020_07_13_085917_create_pet_pro_selected_categories.php
│ │ ├── 2020_07_17_064151_add_website_url_to_pet_pros_table.php
│ │ ├── 2020_07_22_115515_add_is_cropped_image_to_pet_pro_galleries_table.php
│ │ ├── 2020_07_23_052716_create_pet_pro_services_offered_table.php
│ │ ├── 2020_07_30_054457_add_descriptionto_pet_pro_events_table.php
│ │ ├── 2020_08_04_043353_add_event_end_date_to_pet_pro_events_table.php
│ │ ├── 2020_08_05_043704_add_vet_place_name_to_users_table.php
│ │ ├── 2020_08_22_042827_change_total_rated_column_type.php
│ │ ├── 2020_09_14_042049_create_watch_and_learn_deals_table.php
│ │ ├── 2020_09_14_042054_create_watch_and_learn_deal_claims_table.php
│ │ ├── 2020_09_14_052137_add_parent_id_to_watch_and_learn_categories_table.php
│ │ ├── 2020_10_01_050437_add_short_name_column_to_states_table.php
│ │ ├── 2021_01_13_155451_create_pet_country_state_city_table.php
│ │ ├── 2021_01_26_191038_create_business_natures_table.php
│ │ ├── 2021_01_26_191322_create_pet_pro_selected_business_natures_table.php
│ │ ├── 2021_02_02_074857_create_watch_and_learn_selected_categories_table.php
│ │ ├── 2021_02_18_080850_add_column_user_to_table_pet_pros.php
│ │ ├── 2021_03_02_065300_add_column_new_detail_to_table_pet_pros.php
│ │ ├── 2021_06_01_080340_create_pet_types_table.php
│ │ ├── 2021_06_01_081012_create_pet_pros_selected_pet_types_table.php
│ │ ├── 2021_08_06_095431_add_column_adoption_date_in_user_pets_table.php
│ │ └── 2021_08_06_095832_add_column_address_in_users_table.php
│ └── seeds/
│ ├── CitiesTableSeeder.php
│ ├── CountriesTableSeeder.php
│ ├── DatabaseSeeder.php
│ └── StatesTableSeeder.php
├── package.json
├── phpunit.xml
├── public/
│ ├── .htaccess
│ ├── admin-theme/
│ │ ├── css/
│ │ │ ├── admin-style.css
│ │ │ ├── classic.css
│ │ │ └── grapes-builder.css
│ │ ├── fonts/
│ │ │ └── stylesheet.css
│ │ └── js/
│ │ ├── app.js
│ │ └── settings.js
│ ├── bd_data/
│ │ ├── cities.sql
│ │ ├── countries.sql
│ │ └── states.sql
│ ├── breeds/
│ │ └── breeds.csv
│ ├── css/
│ │ └── app.css
│ ├── images/
│ │ └── favicons/
│ │ ├── browserconfig.xml
│ │ └── manifest.json
│ ├── index.php
│ ├── js/
│ │ └── app.js
│ ├── mix-manifest.json
│ ├── plugins/
│ │ ├── bootstrap-datepicker/
│ │ │ ├── css/
│ │ │ │ ├── bootstrap-datepicker.css
│ │ │ │ ├── bootstrap-datepicker.standalone.css
│ │ │ │ ├── bootstrap-datepicker3.css
│ │ │ │ └── bootstrap-datepicker3.standalone.css
│ │ │ └── js/
│ │ │ └── bootstrap-datepicker.js
│ │ ├── croppie/
│ │ │ └── croppie.js
│ │ ├── daterangepicker/
│ │ │ └── daterangepicker.css
│ │ ├── font-awesome/
│ │ │ └── css/
│ │ │ └── font-awesome.css
│ │ ├── iCheck/
│ │ │ └── custom.css
│ │ ├── jquery-validate/
│ │ │ └── jquery.form.js
│ │ ├── media/
│ │ │ ├── media.css
│ │ │ └── media.js
│ │ ├── new-croppie/
│ │ │ ├── cropper.css
│ │ │ ├── cropper.js
│ │ │ ├── main-new.js
│ │ │ └── main.js
│ │ └── summernote/
│ │ ├── summernote-bs3.css
│ │ └── summernote.css
│ ├── robots.txt
│ └── vendor/
│ └── content-builder/
│ ├── assets/
│ │ ├── emailsnippets/
│ │ │ ├── content.css
│ │ │ └── snippets.html
│ │ ├── frameworks/
│ │ │ └── foundation-emails/
│ │ │ ├── css/
│ │ │ │ ├── app.css
│ │ │ │ ├── foundation-emails.css
│ │ │ │ └── foundation.css
│ │ │ └── index.html
│ │ ├── icons/
│ │ │ ├── LICENSE.txt
│ │ │ ├── README.txt
│ │ │ ├── config.json
│ │ │ ├── css/
│ │ │ │ ├── animation.css
│ │ │ │ ├── fontello-codes.css
│ │ │ │ ├── fontello-embedded.css
│ │ │ │ ├── fontello-ie7-codes.css
│ │ │ │ ├── fontello-ie7.css
│ │ │ │ └── fontello.css
│ │ │ └── demo.html
│ │ ├── ionicons/
│ │ │ ├── LICENSE
│ │ │ ├── css/
│ │ │ │ └── ionicons.css
│ │ │ ├── selecticon-dark.html
│ │ │ └── selecticon.html
│ │ ├── minimalist-basic/
│ │ │ ├── content-bootstrap.css
│ │ │ ├── content-foundation.css
│ │ │ ├── content-material.css
│ │ │ ├── content-uikit.css
│ │ │ ├── content.css
│ │ │ ├── snippets-bootstrap.html
│ │ │ ├── snippets-bootstrap.php
│ │ │ ├── snippets-foundation.html
│ │ │ ├── snippets-material.html
│ │ │ ├── snippets-uikit.html
│ │ │ ├── snippets.html
│ │ │ └── thumbnails/
│ │ │ ├── index-C=D_O=A.html
│ │ │ ├── index-C=D_O=D.html
│ │ │ ├── index-C=M_O=A.html
│ │ │ ├── index-C=M_O=D.html
│ │ │ ├── index-C=N_O=A.html
│ │ │ ├── index-C=N_O=D.html
│ │ │ ├── index-C=S_O=A.html
│ │ │ ├── index-C=S_O=D.html
│ │ │ └── index.html
│ │ ├── modules/
│ │ │ └── slider.html
│ │ ├── scripts/
│ │ │ ├── simplelightbox/
│ │ │ │ ├── simple-lightbox.js
│ │ │ │ └── simplelightbox.css
│ │ │ └── slick/
│ │ │ ├── slick-theme.css
│ │ │ ├── slick.css
│ │ │ └── slick.js
│ │ └── simple/
│ │ ├── content.css
│ │ └── snippets.html
│ ├── contentbuilder/
│ │ ├── blank.html
│ │ ├── codemirror/
│ │ │ ├── LICENSE
│ │ │ ├── lib/
│ │ │ │ ├── codemirror.css
│ │ │ │ └── codemirror.js
│ │ │ └── mode/
│ │ │ ├── css/
│ │ │ │ ├── css.js
│ │ │ │ ├── index.html
│ │ │ │ ├── less.html
│ │ │ │ └── scss.html
│ │ │ ├── javascript/
│ │ │ │ ├── index.html
│ │ │ │ ├── javascript.js
│ │ │ │ ├── json-ld.html
│ │ │ │ └── typescript.html
│ │ │ └── xml/
│ │ │ ├── index.html
│ │ │ └── xml.js
│ │ ├── contentbuilder-src.js
│ │ ├── contentbuilder.css
│ │ ├── contentbuilder.js
│ │ ├── fonts.html
│ │ ├── fontsize.html
│ │ ├── headings.html
│ │ ├── icons/
│ │ │ ├── LICENSE.txt
│ │ │ ├── README.txt
│ │ │ ├── config.json
│ │ │ ├── css/
│ │ │ │ ├── animation.css
│ │ │ │ ├── fontello-codes.css
│ │ │ │ ├── fontello-embedded.css
│ │ │ │ └── fontello.css
│ │ │ └── demo.html
│ │ ├── new-contentbuilder.css
│ │ └── saveimages.js
│ ├── custom_example1.html
│ ├── example-email.html
│ ├── example1-bootstrap.html
│ ├── example1-foundation.html
│ ├── example1.html
│ ├── example2-bootstrap.aspx
│ ├── example2-bootstrap.php.html
│ ├── example2.aspx
│ ├── example2.html
│ ├── example2.php.html
│ ├── example3-bootstrap.aspx
│ ├── example3-bootstrap.php.html
│ ├── example3.aspx
│ ├── example3.php.html
│ ├── example4.html
│ ├── example5.html
│ ├── example6-lightbox.aspx
│ ├── example6-lightbox.php.html
│ ├── example7.html
│ ├── files.html
│ ├── images.html
│ ├── license.txt
│ ├── readme.txt
│ ├── saveimage-large.ashx
│ ├── saveimage-large.php.html
│ ├── saveimage-module.ashx
│ ├── saveimage-module.php.html
│ ├── saveimage.ashx
│ ├── saveimage.php.html
│ └── whatsnew.txt
├── resources/
│ ├── js/
│ │ ├── app.js
│ │ ├── bootstrap.js
│ │ └── components/
│ │ └── Example.js
│ ├── lang/
│ │ └── en/
│ │ ├── auth.php
│ │ ├── pagination.php
│ │ ├── passwords.php
│ │ └── validation.php
│ ├── sass/
│ │ ├── _variables.scss
│ │ └── app.scss
│ └── views/
│ ├── admin/
│ │ ├── auth/
│ │ │ └── login.blade.php
│ │ ├── includes/
│ │ │ ├── custom.blade.php
│ │ │ ├── footer.blade.php
│ │ │ ├── sidebar.blade.php
│ │ │ └── topbar.blade.php
│ │ ├── layouts/
│ │ │ ├── admin.blade.php
│ │ │ └── app.blade.php
│ │ └── main/
│ │ ├── admin-users/
│ │ │ ├── _form.blade.php
│ │ │ └── index.blade.php
│ │ ├── business-requests/
│ │ │ ├── index.blade.php
│ │ │ └── show.blade.php
│ │ ├── contacts/
│ │ │ ├── index.blade.php
│ │ │ └── show.blade.php
│ │ ├── dashboard.blade.php
│ │ ├── general/
│ │ │ ├── create.blade.php
│ │ │ └── edit.blade.php
│ │ ├── newsletters/
│ │ │ └── index.blade.php
│ │ ├── pet-pro-business/
│ │ │ ├── _form.blade.php
│ │ │ └── index.blade.php
│ │ ├── pet-pro-categories/
│ │ │ ├── _form.blade.php
│ │ │ └── index.blade.php
│ │ ├── pet-pro-deals/
│ │ │ ├── _form.blade.php
│ │ │ ├── create.blade.php
│ │ │ └── edit.blade.php
│ │ ├── pet-pro-events/
│ │ │ ├── _form.blade.php
│ │ │ ├── create.blade.php
│ │ │ └── edit.blade.php
│ │ ├── pet-pro-gallery/
│ │ │ ├── _form.blade.php
│ │ │ ├── create.blade.php
│ │ │ └── edit.blade.php
│ │ ├── pet-pro-request/
│ │ │ ├── index.blade.php
│ │ │ └── show.blade.php
│ │ ├── pet-pros/
│ │ │ ├── _form.blade.php
│ │ │ ├── create.blade.php
│ │ │ ├── edit.blade.php
│ │ │ └── index.blade.php
│ │ ├── pet-type/
│ │ │ ├── _form.blade.php
│ │ │ └── index.blade.php
│ │ ├── product-review-categories/
│ │ │ ├── _form.blade.php
│ │ │ └── index.blade.php
│ │ ├── product-review-deals/
│ │ │ ├── _form.blade.php
│ │ │ ├── create.blade.php
│ │ │ └── edit.blade.php
│ │ ├── product-reviews/
│ │ │ ├── _form.blade.php
│ │ │ ├── content-builder.blade.php
│ │ │ ├── create.blade.php
│ │ │ ├── edit.blade.php
│ │ │ ├── index.blade.php
│ │ │ ├── old_content-builder.blade.php
│ │ │ └── show.blade.php
│ │ ├── testimonials/
│ │ │ ├── _form.blade.php
│ │ │ └── index.blade.php
│ │ ├── users/
│ │ │ ├── index.blade.php
│ │ │ └── show.blade.php
│ │ ├── watch-and-learn/
│ │ │ ├── _form.blade.php
│ │ │ ├── content-builder.blade.php
│ │ │ ├── create.blade.php
│ │ │ ├── edit.blade.php
│ │ │ ├── index.blade.php
│ │ │ └── show.blade.php
│ │ ├── watch-and-learn-author/
│ │ │ ├── _form.blade.php
│ │ │ └── index.blade.php
│ │ ├── watch-and-learn-categories/
│ │ │ ├── _form.blade.php
│ │ │ └── index.blade.php
│ │ └── watch-and-learn-medias/
│ │ └── index.blade.php
│ └── emails/
│ ├── addSubscriber.blade.php
│ ├── api/
│ │ └── v1/
│ │ ├── auth/
│ │ │ └── passwordReset.blade.php
│ │ ├── businessRequest/
│ │ │ └── sendBusinessRequestEmail.blade.php
│ │ ├── contact/
│ │ │ └── sendContactEmail.blade.php
│ │ └── watchAndLearnComment/
│ │ └── sendWatchAndLearnCommentNotificationEmail.blade.php
│ └── contactForm.blade.php
├── routes/
│ ├── admin.php
│ ├── 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: .gitignore
================================================
/vendor/
node_modules/
npm-debug.log
yarn-error.log
# Laravel 4 specific
bootstrap/compiled.php
app/storage/
# Laravel 5 & Lumen specific
public/storage
public/hot
# Laravel 5 & Lumen specific with changed public path
public_html/storage
public_html/hot
storage/*.key
.env
Homestead.yaml
Homestead.json
/.vagrant
.phpunit.result.cache
================================================
FILE: README.md
================================================
# Laravel Project
This Laravel Project is a business website built with Laravel and React, featuring a variety of modules and functionalities for users, pet professionals, and administrators.
## Preview

## Tech Stacks & Versions
- PHP 7.2.5
- Laravel 7.0
- React 16.13.1
- MySQL 5.7.27
- jQuery
- JavaScript
- GitHub
## Technology
- **Front End:** React Js
- **Back End:** Laravel
## Server
- **Amazon AWS EC2 (Hosting)**
- **AWS Route53 (DNS Management)**
## External Tools
- Facebook Login / Signup
- Google Login / Signup
- Hubspot
- Google Analytics
- Google Map
## Getting Started: Setting Up Local Environment & Prerequisites
### GitHub Repo Structure
- **Master:** Live Server
- **Develop:** Dev Server
- **Branch from Develop:** Task-wise branch
### To set up locally:
1. Clone the develop branch from the GitHub repository.
2. Install prerequisites: Composer, Node, MySQL, Apache, PHP >= 7.1.3.
### Setup Steps
```bash
composer install
npm install
```
3. Copy `.env.example` to create a `.env` file and configure the database settings.
4. Run the development server:
```bash
php artisan serve
```
### Making Changes and Working on Tasks
1. Create a branch for a specific task.
2. Make changes and work on the task.
3. Create a pull request to the parent repo (Develop/Master).
### Deployment Steps
#### Develop/Staging Server Deployment:
```bash
# Update server with changes on develop branch
git pull origin develop
```
#### Live Server Deployment:
```bash
# Update server with changes on master branch
git pull origin master
```
### Branch Process
- Task branch/Child branch -> Develop Branch -> Master Branch
### Urgent Task on Live Server
1. Create a branch from master for the urgent task.
2. Merge changes to the Master branch and deploy to the live server.
3. Merge the child branch into the Develop branch.
## Admin Capabilities
- User's chart and view count of users, pet pros, deals of watch and learn, deal claimed of watch and learn, deals of product reviews, deal claimed of product reviews.
- Add / Update / Delete Admin User.
- Manage Pet Pro categories, Pet Pros, gallery images, deals, and events.
- Manage Watch and Learn categories and content.
- Manage Product Reviews categories and content.
- Manage Authors, Medias, Testimonials.
- View and manage Business Requests, Contact, and Newsletters.
## Developer Information
- **Developer Email:** izhan47@gmail.com
- **Developer Website/Support:** [izhan.me](https://izhan.me)
================================================
FILE: app/Console/Commands/BreedsImportCommand.php
================================================
info("*************************************");
$this->info("Process Started....");
$this->info("*************************************");
$modyleType = $this->option('type');
if($modyleType == "user") {
$classObj = app()->make("App\Models\User");
$storagePath = config('wagenabled.path.doc.user_profile_image_path');
$imageColumn = "profile_image";
}
else if($modyleType == "users-pet") {
$classObj = app()->make("App\Models\UserPet");
$storagePath = config('wagenabled.path.doc.users_pet_image_path');
$imageColumn = "pet_image";
}
else {
$this->error("Invalid Type, Please double check it");
return false;
}
$this->compressModuleWiseImages($classObj, $storagePath, $imageColumn);
$this->info("*************************************");
$this->info("Process Completed....");
$this->info("*************************************");
}
protected function compressModuleWiseImages($model, $storagePath, $imageColumn = "image")
{
$images = $model->select(["id", $imageColumn])
->whereNotNull($imageColumn)
->get();
$this->info("===>>>> Total Records: " . $images->count());
$this->info("*************************************************");
$totalimages = $images->count();
if($totalimages) {
$thumbPath = $storagePath . "thumb/";
$randomStringTemplate = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$recCount = 0;
foreach ($images as $image) {
try {
$recCount++;
$oldImageName = $image->$imageColumn;
$filePathInfo = pathinfo($oldImageName);
$fileExtension = (isset($filePathInfo['extension']) && !empty($filePathInfo['extension'])) ? $filePathInfo['extension'] : "jpg" ;
$randomString = substr(str_shuffle(str_repeat($randomStringTemplate, 7)), 0, 7);
$name = $randomString . '-' . $oldImageName;
$oldFilePath = $storagePath . $oldImageName;
$originalImageContents = Storage::get($oldFilePath);
$originalImage = Image::make($originalImageContents)
->orientate()
->encode($fileExtension);
Storage::put($storagePath . $name, $originalImage);
$thumbImageContent = Image::make($originalImageContents)
->resize(380, 250, function ($constraint) {
$constraint->aspectRatio();
$constraint->upsize();
})
->orientate()
->encode($fileExtension);
Storage::put($thumbPath . $name, $thumbImageContent);
$image->$imageColumn = $name;
$image->save();
if (!empty($oldImageName)) {
$deleteFileList = [
$storagePath.$oldImageName,
$thumbPath.$oldImageName,
];
WagEnabledHelpers::deleteIfFileExist($deleteFileList);
}
$this->info("----------------------------------");
$this->info("[". $recCount ."/$totalimages] Module ID: " . $image->id);
$this->info("New File: " . $name . " <<-------->> Old File: " . $oldImageName);
} catch (\Illuminate\Contracts\Filesystem\FileNotFoundException $e) {
$this->error("Error for module id: " . $image->id);
$this->error("File Not Found: " . $e->getMessage());
} catch (Exception $e) {
$this->error("Error for module id: " . $image->id);
$this->error($e->getMessage());
}
}
}
}
}
================================================
FILE: app/Console/Commands/ScriptCompressExistingMediaImages.php
================================================
info("*************************************");
$this->info("Process Started....");
$this->info("*************************************");
$modyleType = $this->option('type');
if($modyleType == "watch-and-learn-media") {
$classObj = app()->make("App\Models\WatchAndLearnMedias");
$storagePath = config('wagenabled.path.doc.watch_and_learn_media_path');
$imageColumn = "filename";
}
else {
$this->error("Invalid Type, Please double check it");
return false;
}
$this->compressModuleWiseImages($classObj, $storagePath, $imageColumn);
$this->info("*************************************");
$this->info("Process Completed....");
$this->info("*************************************");
}
protected function compressModuleWiseImages($model, $storagePath, $imageColumn = "image")
{
$images = $model->select(["id", $imageColumn])
->whereNotNull($imageColumn)
->get();
$this->info("===>>>> Total Records: " . $images->count());
$this->info("*************************************************");
$totalimages = $images->count();
if($totalimages) {
$thumbPath = $storagePath . "thumb/";
$recCount = 0;
foreach ($images as $image) {
try {
$recCount++;
$oldImageName = $image->$imageColumn;
$filePathInfo = pathinfo($oldImageName);
$fileExtension = (isset($filePathInfo['extension']) && !empty($filePathInfo['extension'])) ? $filePathInfo['extension'] : "jpg" ;
$oldFilePath = $storagePath . $oldImageName;
$oldThumbFilePath = $thumbPath . $oldImageName;
if( Storage::exists($oldFilePath) ) {
$imageSize = Storage::size($oldFilePath);
if( $imageSize > 100000 ) {
$originalImageContents = Storage::get($oldFilePath);
$originalImage = Image::make($originalImageContents)
->orientate()
->encode($fileExtension, 75);
Storage::put($storagePath . $image->$imageColumn, $originalImage);
$thumbImageContent = Image::make($originalImageContents)
->orientate()
->resize(500, null, function ($constraints) {
$constraints->aspectRatio();
})
->encode($fileExtension, 75);
Storage::put($thumbPath . $image->$imageColumn, $thumbImageContent);
$this->info("----------------------------------");
$this->info("[". $recCount ."/$totalimages] Module ID: " . $image->id);
$this->info("New File: " . $image->$imageColumn . " <<-------->> Old File: " . $oldImageName);
}
}
} catch (\Illuminate\Contracts\Filesystem\FileNotFoundException $e) {
$this->error("Error for module id: " . $image->id);
$this->error("File Not Found: " . $e->getMessage());
} catch (Exception $e) {
$this->error("Error for module id: " . $image->id);
$this->error($e->getMessage());
}
}
}
}
}
================================================
FILE: app/Console/Commands/ScriptCompressExistingPetProImages.php
================================================
info("*************************************");
$this->info("Process Started....");
$this->info("*************************************");
$modyleType = $this->option('type');
if($modyleType == "pet-pro") {
$classObj = app()->make("App\Models\PetProGallery");
$storagePath = config('wagenabled.path.doc.pet_pro_gallery_image_path');
$imageColumn = "gallery_image";
}
else {
$this->error("Invalid Type, Please double check it");
return false;
}
$this->compressModuleWiseImages($classObj, $storagePath, $imageColumn);
$this->info("*************************************");
$this->info("Process Completed....");
$this->info("*************************************");
}
protected function compressModuleWiseImages($model, $storagePath, $imageColumn = "image")
{
$images = $model->select(["id", $imageColumn, 'is_cropped_image'])
->whereNotNull($imageColumn)
->get();
$this->info("===>>>> Total pet pro Records: " . $images->count());
$this->info("*************************************************");
$totalimages = $images->count();
if($totalimages) {
$thumbPath = $storagePath . "thumb/";
$randomStringTemplate = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$recCount = 0;
foreach ($images as $image) {
try {
$recCount++;
$oldImageName = $image->$imageColumn;
$filePathInfo = pathinfo($oldImageName);
$fileExtension = (isset($filePathInfo['extension']) && !empty($filePathInfo['extension'])) ? $filePathInfo['extension'] : "jpg" ;
$randomString = substr(str_shuffle(str_repeat($randomStringTemplate, 7)), 0, 7);
$name = $randomString . '-' . $oldImageName;
$oldFilePath = $storagePath . $oldImageName;
$oldThumbFilePath = $thumbPath . $oldImageName;
$originalImageContents = Storage::get($oldFilePath);
$originalImage = Image::make($originalImageContents)
->orientate()
->encode($fileExtension);
Storage::put($storagePath . $name, $originalImage);
//make thumb if not cropped
if( ! $image->is_cropped_image ) {
$thumbImageContent = Image::make($originalImageContents)
->orientate()
->encode($fileExtension, 50);
Storage::put($thumbPath . $name, $thumbImageContent);
$image->is_cropped_image = 1;
}
if( $image->is_cropped_image ) {
if( Storage::exists($oldThumbFilePath) ) {
$originalThumbImageContents = Storage::get($oldThumbFilePath);
$thumbImageContent = Image::make($originalThumbImageContents)
->orientate()
->encode($fileExtension, 50);
Storage::put($thumbPath . $name, $thumbImageContent);
}
}
$image->$imageColumn = $name;
$image->save();
if (!empty($oldImageName)) {
$deleteFileList = [
$storagePath.$oldImageName,
$thumbPath.$oldImageName,
];
WagEnabledHelpers::deleteIfFileExist($deleteFileList);
}
$this->info("----------------------------------");
$this->info("[". $recCount ."/$totalimages] Module ID: " . $image->id);
$this->info("New File: " . $name . " <<-------->> Old File: " . $oldImageName);
} catch (\Illuminate\Contracts\Filesystem\FileNotFoundException $e) {
$this->error("Error for module id: " . $image->id);
$this->error("File Not Found: " . $e->getMessage());
} catch (Exception $e) {
$this->error("Error for module id: " . $image->id);
$this->error($e->getMessage());
}
}
}
}
}
================================================
FILE: app/Console/Commands/ScriptCompressExistingThumbOrImages.php
================================================
info("*************************************");
$this->info("Process Started....");
$this->info("*************************************");
$modyleType = $this->option('type');
if($modyleType == "watch-and-learn-author") {
$classObj = app()->make("App\Models\WatchAndLearnAuthor");
$storagePath = config('wagenabled.path.doc.watch_and_learn_author_path');
$imageColumn = "profile_image";
$width = 380;
$height = 250;
}
else if($modyleType == "watch-and-learn") {
$classObj = app()->make("App\Models\WatchAndLearn");
$storagePath = config('wagenabled.path.doc.watch_and_learn_thumbnail_path');
$imageColumn = "thumbnail";
$width = 380;
$height = 250;
}
else if($modyleType == "testimonial") {
$classObj = app()->make("App\Models\Testimonial");
$storagePath = config('wagenabled.path.doc.testimonial_image_path');
$imageColumn = "image";
$width = 300;
$height = 350;
}
else {
$this->error("Invalid Type, Please double check it");
return false;
}
$this->compressModuleWiseImages($classObj, $storagePath, $imageColumn, $width, $height);
$this->info("*************************************");
$this->info("Process Completed....");
$this->info("*************************************");
}
protected function compressModuleWiseImages($model, $storagePath, $imageColumn = "image", $width, $height)
{
$images = $model->select(["id", $imageColumn])
->whereNotNull($imageColumn)
->limit(4)
->get();
$this->info("===>>>> Total Records: " . $images->count());
$this->info("*************************************************");
$totalimages = $images->count();
if($totalimages) {
$thumbPath = $storagePath . "thumb/";
$randomStringTemplate = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$recCount = 0;
foreach ($images as $image) {
try {
$recCount++;
$oldImageName = $image->$imageColumn;
$filePathInfo = pathinfo($oldImageName);
$fileExtension = (isset($filePathInfo['extension']) && !empty($filePathInfo['extension'])) ? $filePathInfo['extension'] : "jpg" ;
$randomString = substr(str_shuffle(str_repeat($randomStringTemplate, 7)), 0, 7);
$name = $randomString . '-' . $oldImageName;
$oldFilePath = $storagePath . $oldImageName;
$oldThumbFilePath = $thumbPath . $oldImageName;
$originalImageContents = Storage::get($oldFilePath);
$originalImage = Image::make($originalImageContents)
->orientate()
->encode($fileExtension);
Storage::put($storagePath . $name, $originalImage);
$originalThumbImageContents = Storage::get($oldThumbFilePath);
$oldThumbImageContent = Image::make($originalThumbImageContents);
/*$this->info("===>>>> height: ".$oldThumbImageContent->height());
$this->info("===>>>> width: ".$oldThumbImageContent->width() );*/
if( $oldThumbImageContent->height() > $height || $oldThumbImageContent->width() > $width ) {
// image is cropped
$thumbImageContent = Image::make($originalThumbImageContents)
->orientate()
->encode($fileExtension, 50);
Storage::put($thumbPath . $name, $thumbImageContent);
$this->info("===>>>> not cropped: " );
}
$image->$imageColumn = $name;
$image->save();
if (!empty($oldImageName)) {
$deleteFileList = [
$storagePath.$oldImageName,
$thumbPath.$oldImageName,
];
WagEnabledHelpers::deleteIfFileExist($deleteFileList);
}
$this->info("----------------------------------");
$this->info("[". $recCount ."/$totalimages] Module ID: " . $image->id);
$this->info("New File: " . $name . " <<-------->> Old File: " . $oldImageName);
} catch (\Illuminate\Contracts\Filesystem\FileNotFoundException $e) {
$this->error("Error for module id: " . $image->id);
$this->error("File Not Found: " . $e->getMessage());
} catch (Exception $e) {
$this->error("Error for module id: " . $image->id);
$this->error($e->getMessage());
}
}
}
}
}
================================================
FILE: app/Console/Commands/ScriptCreatePetProSmallThumbImages.php
================================================
info("*************************************");
$this->info("Process Started....");
$this->info("*************************************");
$modyleType = $this->option('type');
if($modyleType == "pet-pro") {
$classObj = app()->make("App\Models\PetProGallery");
$storagePath = config('wagenabled.path.doc.pet_pro_gallery_image_path');
$imageColumn = "gallery_image";
}
else {
$this->error("Invalid Type, Please double check it");
return false;
}
$this->compressModuleWiseImages($classObj, $storagePath, $imageColumn);
$this->info("*************************************");
$this->info("Process Completed....");
$this->info("*************************************");
}
protected function compressModuleWiseImages($model, $storagePath, $imageColumn = "image")
{
$images = $model->select(["id", $imageColumn])
->whereNotNull($imageColumn)
->get();
$this->info("===>>>> Total pet pro Records: " . $images->count());
$this->info("*************************************************");
$totalimages = $images->count();
if($totalimages) {
$thumbPath = $storagePath . "thumb/";
$smallThumbPath = $storagePath . "small-thumb/";
$randomStringTemplate = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$recCount = 0;
foreach ($images as $image) {
try {
$recCount++;
$oldImageName = $image->$imageColumn;
$filePathInfo = pathinfo($oldImageName);
$fileExtension = (isset($filePathInfo['extension']) && !empty($filePathInfo['extension'])) ? $filePathInfo['extension'] : "jpg" ;
$oldThumbFilePath = $thumbPath . $oldImageName;
if( Storage::exists($oldThumbFilePath) ) {
$originalThumbImageContents = Storage::get($oldThumbFilePath);
$thumbImageContent = Image::make($originalThumbImageContents)
->resize(500, null, function ($constraint) {
$constraint->aspectRatio();
$constraint->upsize();
})
->orientate()
->encode($fileExtension);
Storage::put($smallThumbPath . $oldImageName, $thumbImageContent);
}
$this->info("----------------------------------");
$this->info("[". $recCount ."/$totalimages] Module ID: " . $image->id);
$this->info("New File: " . $oldImageName . " <<-------->> Old File: " . $oldImageName);
} catch (\Illuminate\Contracts\Filesystem\FileNotFoundException $e) {
$this->error("Error for module id: " . $image->id);
$this->error("File Not Found: " . $e->getMessage());
} catch (Exception $e) {
$this->error("Error for module id: " . $image->id);
$this->error($e->getMessage());
}
}
}
}
}
================================================
FILE: app/Console/Commands/StateShortcodeScript.php
================================================
get();
foreach($states as $state) {
$googleMapApiKey = config("wagenabled.google_map.api_key");
$geo = file_get_contents('https://maps.googleapis.com/maps/api/geocode/json?address='.urlencode($state->name).'&key='.$googleMapApiKey);
$geo = json_decode($geo, true); // Convert the JSON to an array
if(isset($geo['results'][0])) {
foreach ($geo['results'][0]['address_components'] as $comp) {
//loop through each component in ['address_components']
foreach ($comp['types'] as $currType){
//for every type in the current component, check if it = the check
if($currType == 'country') {
if($comp['long_name'] == $state->name) {
$state->short_name = $comp['short_name'];
$state->save();
}
if($comp['long_name'] == "U.S. Virgin Islands" && $state->name == 'Virgin Islands') {
$state->short_name = $comp['short_name'];
$state->save();
}
}
if($currType == 'administrative_area_level_1'){
if($comp['long_name'] == $state->name) {
$state->short_name = $comp['short_name'];
$state->save();
} else {
if($state->name == 'Armed Forces America') {
$state->short_name = 'AA';
}
if($state->name == 'Armed Forces Europe') {
$state->short_name = 'AE';
}
$state->save();
}
//Do whatever with the component, print longname, whatever you need
//You can add $comp into another array to have an array of 'administrative_area_level_1' types
}
}
}
} else {
if($state->name == 'Armed Forces Pacific') {
$state->short_name = 'AP';
$state->save();
}
}
echo $state->name."\n";
}
}
}
================================================
FILE: app/Console/Commands/UpdateValidCitiesFlagCommand.php
================================================
setConnection('mysql2');
$citiesFromNextplay = $model->pluck('name')->toArray();
$model->setConnection('mysql');
$cities = $model->whereIn('name', $citiesFromNextplay)->update([
'is_valid' => 1
]);
}
}
================================================
FILE: app/Console/Commands/addExistingPetProCategoriesCommand.php
================================================
get();
foreach ($petPros as $key => $petPro) {
PetProSelectedCategory::create([
"pet_pro_id" => $petPro->id,
"category_id" => $petPro->category_id,
"created_at" => $currentTime,
"updated_at" => $currentTime,
]);
}
}
}
================================================
FILE: app/Console/Kernel.php
================================================
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
================================================
moduleName = "Admin Users";
$this->singularModuleName = "Admin User";
$this->moduleRoute = url('admin/admin-users');
$this->moduleView = "admin.main.admin-users";
$this->model = $model;
View::share('module_name', $this->moduleName);
View::share('singular_module_name', $this->singularModuleName);
View::share('module_route', $this->moduleRoute);
View::share('moduleView', $this->moduleView);
}
public function index()
{
view()->share('isIndexPage', true);
return view("$this->moduleView.index");
}
public function getDatatable(Request $request)
{
$result = $this->model->select("*")->orderBy('id', 'desc');
return Datatables::of($result)->addIndexColumn()->make(true);
}
public function create()
{
return view("admin.main.general.create");
}
public function store(AdminUsersRequest $request)
{
$input = $request->except(['_token']);
try {
$input['password'] = Hash::make($request->password);
$isSaved = $this->model->create($input);
if ($isSaved) {
return redirect($this->moduleRoute)->with("success", "Admin user created");
}
return redirect($this->moduleRoute)->with("error", "Sorry, Something went wrong please try again");
} catch (\Exception $e) {
return redirect($this->moduleRoute)->with('error', $e->getMessage());
}
}
public function show($id)
{
}
public function edit($id)
{
$result = $this->model->find($id);
if ($result) {
return view("admin.main.general.edit", compact("result"));
}
return redirect($this->moduleRoute)->with("error", "Sorry, Admin user not found");
}
public function update(AdminUsersRequest $request, $id)
{
$ignore_field = ['_token'];
if( ! $request->password ) {
array_push($ignore_field ,'password');
}
$input = $request->except($ignore_field);
try {
$result = $this->model->find($id);
if ($result) {
if ($request->password != "" && $request->password) {
$input['password'] = Hash::make($request->password);
}
$isSaved = $result->update($input);
if ($isSaved) {
return redirect($this->moduleRoute)->with("success", "Admin user updated");
}
}
return redirect($this->moduleRoute)->with("error", "Sorry, Something went wrong please try again");
} catch (\Exception $e) {
return redirect($this->moduleRoute)->with('error', $e->getMessage());
}
}
public function destroy($id)
{
$result = array();
$data = $this->model->find($id);
if ($data) {
if( ! $data->is_super ) {
$res = $data->delete();
if ($res) {
$result['message'] = "Admin user deleted.";
$result['code'] = 200;
} else {
$result['message'] = "Error while deleting admin user";
$result['code'] = 400;
}
}
else {
$result['message'] = "You can not delete super admin!";
$result['code'] = 400;
}
} else {
$result['message'] = "Admin user not Found!";
$result['code'] = 400;
}
return response()->json($result, $result['code']);
}
}
================================================
FILE: app/Http/Controllers/Admin/Auth/LoginController.php
================================================
middleware('guest:admin')->except('logout');
}
public function showLoginForm()
{
if ( !empty(auth()->guard('admin')->id()) ) {
return redirect("admin");
}
return view('admin.auth.login');
}
function login(Request $request)
{
$request->validate([
'email' => 'required|email|max:255',
'password' => 'required|min:6',
]);
$input = $request->all();
if (Auth::guard('admin')->attempt(['email' => $input['email'], 'password' => $input['password']])) {
// Authentication passed...
return redirect("admin");
}
else {
$request->session()->flash('error', 'Invalid Login Information');
return redirect()->to(url('/admin/login'))->withInput($request->all());
}
}
protected function credentials(Request $request)
{
return array_merge($request->only($this->username(), 'password'), ['active' => '1']);
}
public function logout()
{
Auth::guard('admin')->logout();
return redirect('admin/login');
}
}
================================================
FILE: app/Http/Controllers/Admin/BusinessRequestsController.php
================================================
moduleName = "Business Requests";
$this->singularModuleName = "Business Request";
$this->moduleRoute = url('admin/business-requests');
$this->moduleView = "admin.main.business-requests";
$this->model = $model;
View::share('module_name', $this->moduleName);
View::share('singular_module_name', $this->singularModuleName);
View::share('module_route', $this->moduleRoute);
View::share('moduleView', $this->moduleView);
}
public function index()
{
view()->share('isIndexPage', true);
return view("$this->moduleView.index");
}
public function getDatatable(Request $request)
{
$result = $this->model->select("*")->orderBy('id', 'desc');
return Datatables::of($result)
->editColumn('message', function ($result) {
if( $result->message ) {
if( strlen($result->message) > 50 ){
return substr($result->message, 0, 50).'...';
}
}
return $result->message;
})
->addIndexColumn()
->make(true);
}
public function create()
{
}
public function store(Request $request)
{
}
public function show($id)
{
$result = $this->model->find($id);
if ($result) {
return view("$this->moduleView.show", compact("result"));
}
return redirect($this->moduleRoute)->with("error", "Sorry, Admin user not found");
}
public function edit($id)
{
}
public function update(Request $request, $id)
{
}
public function destroy($id)
{
$result = array();
$data = $this->model->find($id);
if ($data) {
$res = $data->delete();
if ($res) {
$result['message'] = "User deleted.";
$result['code'] = 200;
} else {
$result['message'] = "Error while deleting user";
$result['code'] = 400;
}
} else {
$result['message'] = "User not Found!";
$result['code'] = 400;
}
return response()->json($result, $result['code']);
}
}
================================================
FILE: app/Http/Controllers/Admin/ContactsController.php
================================================
moduleName = "Contacts";
$this->singularModuleName = "Contact";
$this->moduleRoute = url('admin/contacts');
$this->moduleView = "admin.main.contacts";
$this->model = $model;
View::share('module_name', $this->moduleName);
View::share('singular_module_name', $this->singularModuleName);
View::share('module_route', $this->moduleRoute);
View::share('moduleView', $this->moduleView);
}
public function index()
{
view()->share('isIndexPage', true);
return view("$this->moduleView.index");
}
public function getDatatable(Request $request)
{
$result = $this->model->select("*")->orderBy('id', 'desc');
return Datatables::of($result)
->editColumn('message', function ($result) {
if( $result->message ) {
if( strlen($result->message) > 50 ){
return substr($result->message, 0, 50).'...';
}
}
return $result->message;
})
->addIndexColumn()
->make(true);
}
public function create()
{
}
public function store(Request $request)
{
}
public function show($id)
{
$result = $this->model->find($id);
if ($result) {
return view("$this->moduleView.show", compact("result"));
}
return redirect($this->moduleRoute)->with("error", "Sorry, Admin user not found");
}
public function edit($id)
{
}
public function update(Request $request, $id)
{
}
public function destroy($id)
{
}
}
================================================
FILE: app/Http/Controllers/Admin/DashboardController.php
================================================
startOfMonth()->format('m-d-Y');
$monthEnd = Carbon::now()->format('m-d-Y');
$users_count = User::count();
$pet_pros_count = PetPro::count();
$pet_pro_deals_count = PetProDeal::count();
$pet_pro_deal_claimed_count = PetProDealClaim::count();
$watch_and_learn_deals_count = WatchAndLearnDeal::count();
$watch_and_learn_deal_claimed_count = WatchAndLearnDealClaim::count();
return view('admin.main.dashboard', compact('users_count', 'pet_pros_count', 'pet_pro_deals_count', 'pet_pro_deal_claimed_count', 'monthStart', 'monthEnd', 'watch_and_learn_deals_count', 'watch_and_learn_deal_claimed_count'));
}
public function getUsersGraphData(Request $request)
{
$code = config("wagenabled.status_codes.normal_error");
$message = "";
$graph_data = [];
$graph_key = [];
$graph_value = [];
try {
$monthStart = Carbon::createFromFormat('m-d-Y', $request->get('monthStart'));
$monthEnd = Carbon::createFromFormat('m-d-Y', $request->get('monthEnd'));
$dayCount = $monthEnd->diffInDays($monthStart);
$today = Carbon::today();
$start = $monthStart;
for ($i = 0 ; $i <= $dayCount; $i++) {
$dates[$start->copy()->addDays($i)->format('m-d-Y')] = 0;
$graph_key[] = $start->copy()->addDays($i)->format('m-d-y');
}
$user_raw = User::select([DB::raw('DATE_FORMAT(created_at, "%m-%d-%Y") as date') ,DB::raw('count(id) as total_users')])->whereDate('created_at', $monthEnd)->first();
//monthly uploaded apps
$user_monthly_raw = User::select(["*", DB::raw('DATE_FORMAT(created_at, "%m-%d-%Y") as date'),DB::raw('count(id) as total_count') ])->whereBetween('created_at', [ $monthStart->setTime(0,0)->format('Y-m-d H:i:s'), $monthEnd->setTime(0,0)->format('Y-m-d H:i:s') ] )->groupBy("date")->orderBy('date', 'asc')->get()->toArray();
$users_monthly = array();
foreach($user_monthly_raw as $month_array) {
$users_monthly[$month_array["date"]] = $month_array["total_count"];
}
if( $user_raw->date ) {
$users_monthly[$user_raw->date] = $user_raw->total_users;
}
$graph_value = (array_values(array_replace($dates, $users_monthly)) );
$graph_data['graph_key'] = $graph_key;
$graph_data['graph_value'] = $graph_value;
$code = config("wagenabled.status_codes.success");
}
catch (Exception $e) {
$message = "Please, try again!";
}
return WagEnabledHelpers::apiJsonResponse($graph_data, $code, $message);
}
}
================================================
FILE: app/Http/Controllers/Admin/NewslettersController.php
================================================
moduleName = "Newsletters";
$this->singularModuleName = "Newsletter";
$this->moduleRoute = url('admin/newsletters');
$this->moduleView = "admin.main.newsletters";
$this->model = $model;
View::share('module_name', $this->moduleName);
View::share('singular_module_name', $this->singularModuleName);
View::share('module_route', $this->moduleRoute);
View::share('moduleView', $this->moduleView);
}
public function index()
{
view()->share('isIndexPage', true);
return view("$this->moduleView.index");
}
public function getDatatable(Request $request)
{
$result = $this->model->select("*")->orderBy('id', 'desc');
return Datatables::of($result)
->addIndexColumn()
->make(true);
}
public function create()
{
}
public function store(Request $request)
{
}
public function show($id)
{
}
public function edit($id)
{
}
public function update(Request $request, $id)
{
}
public function destroy($id)
{
$result = array();
$data = $this->model->find($id);
if ($data) {
$res = $data->delete();
if ($res) {
$result['message'] = "User deleted.";
$result['code'] = 200;
} else {
$result['message'] = "Error while deleting user";
$result['code'] = 400;
}
} else {
$result['message'] = "User not Found!";
$result['code'] = 400;
}
return response()->json($result, $result['code']);
}
}
================================================
FILE: app/Http/Controllers/Admin/PetProBusinessController.php
================================================
moduleName = "Pet Pro Business";
$this->singularModuleName = "Pet Pro business";
$this->moduleRoute = url('admin/pet-pro-business');
$this->moduleView = "admin.main.pet-pro-business";
$this->model = $model;
View::share('module_name', $this->moduleName);
View::share('singular_module_name', $this->singularModuleName);
View::share('module_route', $this->moduleRoute);
View::share('moduleView', $this->moduleView);
}
public function index()
{
view()->share('isIndexPage', true);
return view("$this->moduleView.index");
}
public function getDatatable(Request $request)
{
$result = $this->model->withCount('petPro')->orderBy('name', 'asc');
\Log::error(json_encode($result));
return Datatables::of($result)->addIndexColumn()->make(true);
}
public function create()
{
return view("admin.main.general.create");
}
public function store(PetProBusinessRequest $request)
{
$input = $request->except(['_token']);
$isExist = $this->model->where('name', '=', $input['name'])->withTrashed()->first();
if ($isExist) {
if ($isExist->deleted_at == null) {
return redirect($this->moduleRoute)->with("error", "Sorry, Pet pro business nature alerady exist");
} else {
$isExist->deleted_at = null;
$isExist->save();
return redirect($this->moduleRoute)->with("success", "Pet pro business nature created");
}
}
try {
$isSaved = $this->model->create($input);
if ($isSaved) {
return redirect($this->moduleRoute)->with("success", "Pet pro business nature created");
}
return redirect($this->moduleRoute)->with("error", "Sorry, Something went wrong please try again");
} catch (\Exception $e) {
return redirect($this->moduleRoute)->with('error', $e->getMessage());
}
}
public function show($id)
{
}
public function edit($id)
{
$result = $this->model->find($id);
if ($result) {
return view("admin.main.general.edit", compact("result"));
}
return redirect($this->moduleRoute)->with("error", "Sorry, Pet pro business nature not found");
}
public function update(PetProBusinessRequest $request, $id)
{
$input = $request->except(['_token']);
$isExist = $this->model->where('name', '=', $input['name'])->where('id', '!=', $id)->first();
if ($isExist) {
return redirect($this->moduleRoute)->with("error", "Sorry, Pet pro business nature already exist");
} else {
try {
$result = $this->model->find($id);
if ($result) {
$isSaved = $result->update($input);
if ($isSaved) {
return redirect($this->moduleRoute)->with("success", "Pet pro business nature updated");
}
}
return redirect($this->moduleRoute)->with("error", "Sorry, Something went wrong please try again");
} catch (\Exception $e) {
return redirect($this->moduleRoute)->with('error', $e->getMessage());
}
}
}
public function destroy($id)
{
$result = array();
$data = $this->model->find($id);
if ($data) {
$res = $data->delete();
if ($res) {
$result['message'] = "Pet pro busniess nature deleted.";
$result['code'] = 200;
} else {
$result['message'] = "Error while deleting watch and learn business nature";
$result['code'] = 400;
}
} else {
$result['message'] = "Pet pro business nature not Found!";
$result['code'] = 400;
}
return response()->json($result, $result['code']);
}
}
================================================
FILE: app/Http/Controllers/Admin/PetProCategoriesController.php
================================================
moduleName = "Pet Pro Categories";
$this->singularModuleName = "Pet Pro Category";
$this->moduleRoute = url('admin/pet-pro-categories');
$this->moduleView = "admin.main.pet-pro-categories";
$this->model = $model;
View::share('module_name', $this->moduleName);
View::share('singular_module_name', $this->singularModuleName);
View::share('module_route', $this->moduleRoute);
View::share('moduleView', $this->moduleView);
}
public function index()
{
view()->share('isIndexPage', true);
return view("$this->moduleView.index");
}
public function getDatatable(Request $request)
{
$result = $this->model->withCount('petPro')->orderBy('name', 'asc');
return Datatables::of($result)->addIndexColumn()->make(true);
}
public function create()
{
return view("admin.main.general.create");
}
public function store(PetProCategoriesRequest $request)
{
$input = $request->except(['_token']);
$isExist = $this->model->where('name', '=', $input['name'])->withTrashed()->first();
if($isExist){
if($isExist->deleted_at == null){
return redirect($this->moduleRoute)->with("error", "Sorry, Pet pro category alerady exist");
} else {
$isExist->deleted_at = null;
$isExist->save();
return redirect($this->moduleRoute)->with("success", "Pet pro category created");
}
}
try {
$isSaved = $this->model->create($input);
if ($isSaved) {
return redirect($this->moduleRoute)->with("success", "Pet pro category created");
}
return redirect($this->moduleRoute)->with("error", "Sorry, Something went wrong please try again");
} catch (\Exception $e) {
return redirect($this->moduleRoute)->with('error', $e->getMessage());
}
}
public function show($id)
{
}
public function edit($id)
{
$result = $this->model->find($id);
if ($result) {
return view("admin.main.general.edit", compact("result"));
}
return redirect($this->moduleRoute)->with("error", "Sorry, Pet pro category not found");
}
public function update(PetProCategoriesRequest $request, $id)
{
$input = $request->except(['_token']);
$isExist = $this->model->where('name', '=', $input['name'])->where('id', '!=', $id)->first();
if($isExist){
return redirect($this->moduleRoute)->with("error", "Sorry, Pet pro category alerady exist");
} else {
try {
$result = $this->model->find($id);
if ($result) {
$isSaved = $result->update($input);
if ($isSaved) {
return redirect($this->moduleRoute)->with("success", "Pet pro category updated");
}
}
return redirect($this->moduleRoute)->with("error", "Sorry, Something went wrong please try again");
} catch (\Exception $e) {
return redirect($this->moduleRoute)->with('error', $e->getMessage());
}
}
}
public function destroy($id)
{
$result = array();
$data = $this->model->find($id);
if ($data) {
$res = $data->delete();
if ($res) {
$result['message'] = "Pet pro category deleted.";
$result['code'] = 200;
} else {
$result['message'] = "Error while deleting watch and learn category";
$result['code'] = 400;
}
} else {
$result['message'] = "Pet pro category not Found!";
$result['code'] = 400;
}
return response()->json($result, $result['code']);
}
}
================================================
FILE: app/Http/Controllers/Admin/PetProDealsController.php
================================================
moduleName = "Pet Pro Deals";
$this->singularModuleName = "Pet Pro Deal";
$this->moduleView = "admin.main.pet-pro-deals";
$this->moduleRoute = url('admin/pet-pros');
$this->model = $model;
View::share('module_name', $this->moduleName);
View::share('singular_module_name', $this->singularModuleName);
View::share('moduleView', $this->moduleView);
}
public function index()
{
view()->share('isIndexPage', true);
return view("$this->moduleView.index");
}
public function getDatatable(Request $request, $pet_pro_id)
{
$moduleRoute = url('admin/pet-pros/'.$pet_pro_id.'/deals');
View::share('module_route', $moduleRoute);
$result = $this->model->select("*")->where('pet_pro_id', $pet_pro_id)->orderBy('id', 'desc');
return Datatables::of($result)
->addColumn('claimed', function ($result) {
return $result->claims->count();
})
->addIndexColumn()
->make(true);
}
public function create($pet_pro_id)
{
$petPro = PetPro::find($pet_pro_id);
if( $petPro ) {
$moduleRoute = url('admin/pet-pros/'.$pet_pro_id.'/deals');
View::share('module_route', $moduleRoute);
return view("admin.main.pet-pro-deals.create", compact('pet_pro_id'));
}
return redirect($this->moduleRoute)->with("error", "Sorry, Something went wrong please try again");
}
public function store(PetProDealRequest $request, $pet_pro_id)
{
$input = $request->except(['_token']);
try {
$petPro = PetPro::find($pet_pro_id);
if( $petPro ) {
$input["pet_pro_id"] = $pet_pro_id;
$isSaved = $this->model->create($input);
if ($isSaved) {
return redirect($this->moduleRoute.'/'.$pet_pro_id.'/edit')->with("success", "Pet pro deal created");
}
}
return redirect($this->moduleRoute)->with("error", "Sorry, Something went wrong please try again");
} catch (\Exception $e) {
return redirect($this->moduleRoute)->with('error', $e->getMessage());
}
}
public function edit($pet_pro_id, $id)
{
$petPro = PetPro::find($pet_pro_id);
if( $petPro ) {
$moduleRoute = url('admin/pet-pros/'.$pet_pro_id.'/deals');
View::share('module_route', $moduleRoute);
$result = $this->model->find($id);
if ($result) {
return view("admin.main.pet-pro-deals.edit", compact("result", "pet_pro_id"));
}
}
return redirect($this->moduleRoute)->with("error", "Sorry, Pet pro deal not found");
}
public function update(PetProDealRequest $request, $pet_pro_id, $id)
{
$input = $request->except(['_token']);
try {
$petPro = PetPro::find($pet_pro_id);
if( $petPro ) {
$result = $this->model->find($id);
if ($result) {
$isSaved = $result->update($input);
if ($isSaved) {
return redirect($this->moduleRoute.'/'.$pet_pro_id.'/edit')->with("success", "Pet pro deal updated");
}
}
}
return redirect($this->moduleRoute)->with("error", "Sorry, Something went wrong please try again");
} catch (\Exception $e) {
return redirect($this->moduleRoute)->with('error', $e->getMessage());
}
}
public function changeStatus($pet_pro_id, $id)
{
$result = array();
$petPro = PetPro::find($pet_pro_id);
if ($petPro) {
$data = $this->model->find($id);
if ($data) {
if($data->status == 'active' ) {
$data->status = 'pause';
} else {
$data->status = 'active';
}
$isSaved = $data->save();
if ($isSaved) {
$result['message'] = "Change pet pro status";
$result['code'] = 200;
} else {
$result['message'] = "Error while change pet pro status";
$result['code'] = 400;
}
} else {
$result['message'] = "Pet pro deal not Found!";
$result['code'] = 400;
}
} else {
$result['message'] = "Sorry, Something went wrong please try again!";
$result['code'] = 400;
}
return response()->json($result, $result['code']);
}
public function destroy($pet_pro_id, $id)
{
$result = array();
$petPro = PetPro::find($pet_pro_id);
if ($petPro) {
$data = $this->model->find($id);
if ($data) {
$res = $data->delete();
if ($res) {
$result['message'] = "Pet pro deal deleted.";
$result['code'] = 200;
} else {
$result['message'] = "Error while deleting pet pro deal";
$result['code'] = 400;
}
} else {
$result['message'] = "Pet pro deal not Found!";
$result['code'] = 400;
}
} else {
$result['message'] = "Sorry, Something went wrong please try again!";
$result['code'] = 400;
}
return response()->json($result, $result['code']);
}
}
================================================
FILE: app/Http/Controllers/Admin/PetProEventsController.php
================================================
moduleName = "Pet Pro Events";
$this->singularModuleName = "Pet Pro Event";
$this->moduleView = "admin.main.pet-pro-events";
$this->moduleRoute = url('admin/pet-pros');
$this->model = $model;
View::share('module_name', $this->moduleName);
View::share('singular_module_name', $this->singularModuleName);
View::share('moduleView', $this->moduleView);
}
public function index()
{
view()->share('isIndexPage', true);
return view("$this->moduleView.index");
}
public function getDatatable(Request $request, $pet_pro_id)
{
$moduleRoute = url('admin/pet-pros/'.$pet_pro_id.'/events');
View::share('module_route', $moduleRoute);
$result = $this->model->select("*")->where('pet_pro_id', $pet_pro_id)->orderBy('id', 'desc');
return Datatables::of($result)
->addColumn('time', function ($result) {
return $result->start_time.' - '.$result->end_time;
})
->addIndexColumn()
->make(true);
}
public function create($pet_pro_id)
{
$petPro = PetPro::find($pet_pro_id);
if( $petPro ) {
$moduleRoute = url('admin/pet-pros/'.$pet_pro_id.'/events');
View::share('module_route', $moduleRoute);
return view("admin.main.pet-pro-events.create", compact('pet_pro_id'));
}
return redirect($this->moduleRoute)->with("error", "Sorry, Something went wrong please try again");
}
public function store(PetProEventRequest $request, $pet_pro_id)
{
$input = $request->except(['_token']);
try {
$petPro = PetPro::find($pet_pro_id);
if( $petPro ) {
$input["pet_pro_id"] = $pet_pro_id;
if( isset($input["start_time"]) ) {
$input["start_time"] = Carbon::parse( $input["start_time"])->format('H:i:s');
}
if( isset($input["end_time"]) ) {
$input["end_time"] = Carbon::parse( $input["end_time"])->format('H:i:s');
}
$isSaved = $this->model->create($input);
if ($isSaved) {
return redirect($this->moduleRoute.'/'.$pet_pro_id.'/edit')->with("success", "Pet Pro event created");
}
}
return redirect($this->moduleRoute)->with("error", "Sorry, Something went wrong please try again");
} catch (\Exception $e) {
return redirect($this->moduleRoute)->with('error', $e->getMessage());
}
}
public function edit($pet_pro_id, $id)
{
$petPro = PetPro::find($pet_pro_id);
if( $petPro ) {
$moduleRoute = url('admin/pet-pros/'.$pet_pro_id.'/events');
View::share('module_route', $moduleRoute);
$result = $this->model->find($id);
if ($result) {
return view("admin.main.pet-pro-events.edit", compact("result", "pet_pro_id"));
}
}
return redirect($this->moduleRoute)->with("error", "Sorry, Pet Pro event not found");
}
public function update(PetProEventRequest $request, $pet_pro_id, $id)
{
$input = $request->except(['_token']);
try {
$petPro = PetPro::find($pet_pro_id);
if( $petPro ) {
$result = $this->model->find($id);
if ($result) {
if( isset($input["start_time"]) ) {
$input["start_time"] = Carbon::parse( $input["start_time"])->format('H:i:s');
}
else {
$input["start_time"] = null;
}
if( isset($input["end_time"]) ) {
$input["end_time"] = Carbon::parse( $input["end_time"])->format('H:i:s');
}
else {
$input["end_time"] = null;
}
$isSaved = $result->update($input);
if ($isSaved) {
return redirect($this->moduleRoute.'/'.$pet_pro_id.'/edit')->with("success", "Pet Pro event updated");
}
}
}
return redirect($this->moduleRoute)->with("error", "Sorry, Something went wrong please try again");
} catch (\Exception $e) {
return redirect($this->moduleRoute)->with('error', $e->getMessage());
}
}
public function changeStatus($pet_pro_id, $id)
{
$result = array();
$petPro = PetPro::find($pet_pro_id);
if ($petPro) {
$data = $this->model->find($id);
if ($data) {
if($data->status == 'active' ) {
$data->status = 'pause';
} else {
$data->status = 'active';
}
$isSaved = $data->save();
if ($isSaved) {
$result['message'] = "Change pet pro status";
$result['code'] = 200;
} else {
$result['message'] = "Error while change pet pro status";
$result['code'] = 400;
}
} else {
$result['message'] = "Pet pro deal not Found!";
$result['code'] = 400;
}
} else {
$result['message'] = "Sorry, Something went wrong please try again!";
$result['code'] = 400;
}
return response()->json($result, $result['code']);
}
public function destroy($pet_pro_id, $id)
{
$result = array();
$petPro = PetPro::find($pet_pro_id);
if ($petPro) {
$data = $this->model->find($id);
if ($data) {
$res = $data->delete();
if ($res) {
$result['message'] = "Pet pro event deleted.";
$result['code'] = 200;
} else {
$result['message'] = "Error while deleting pet pro event";
$result['code'] = 400;
}
} else {
$result['message'] = "Pet pro event not Found!";
$result['code'] = 400;
}
} else {
$result['message'] = "Sorry, Something went wrong please try again!";
$result['code'] = 400;
}
return response()->json($result, $result['code']);
}
}
================================================
FILE: app/Http/Controllers/Admin/PetProGalleriesController.php
================================================
moduleName = "Pet Pro Galleries";
$this->singularModuleName = "Pet Pro Gallery";
$this->moduleView = "admin.main.pet-pro-gallery";
$this->moduleRoute = url('admin/pet-pros');
$this->model = $model;
View::share('module_name', $this->moduleName);
View::share('singular_module_name', $this->singularModuleName);
View::share('moduleView', $this->moduleView);
}
public function index()
{
}
public function getDatatable(Request $request, $pet_pro_id)
{
}
public function create($pet_pro_id)
{
$petPro = PetPro::find($pet_pro_id);
if( $petPro ) {
$moduleRoute = url('admin/pet-pros/'.$pet_pro_id.'/gallery');
View::share('module_route', $moduleRoute);
return view("admin.main.pet-pro-gallery.create", compact('pet_pro_id'));
}
return redirect($this->moduleRoute)->with("error", "Sorry, Something went wrong please try again");
}
public function store(PetProGalleryRequest $request, $pet_pro_id)
{
$input = [];
try {
$petPro = PetPro::find($pet_pro_id);
if( $petPro ) {
$input["pet_pro_id"] = $pet_pro_id;
foreach ($request->row as $index => $row) {
if( isset($row["image"]) ) {
if(! $row['cropped_image'] ) {
$isCreateThumb="0";
$input["is_cropped_image"] = 0;
} else {
$isCreateThumb="1";
$input["is_cropped_image"] = 1;
}
$imageStore = WagEnabledHelpers::saveUploadedImage($row["image"], config("wagenabled.path.doc.pet_pro_gallery_image_path"), "", $isCreateThumb, $height=250, $width=250, $row['cropped_image']);
if (isset($imageStore['error_msg']) && $imageStore['error_msg'] == '' && isset($imageStore['name']) && !empty($imageStore['name'])) {
$input["gallery_image"] = $imageStore['name'];
}
if( $request->get('is_cover_image') ){
if( $index == $request->get('is_cover_image') ) {
$input['is_cover_image'] = 1;
PetProGallery::where('pet_pro_id', $pet_pro_id)->update(['is_cover_image' => 0]);
}
}
$isSaved = $this->model->create($input);
}
}
return WagEnabledHelpers::apiJsonResponse([] , config("wagenabled.status_codes.success"), 'File Uploaded Successfully');
//return redirect($this->moduleRoute.'/'.$pet_pro_id.'/edit')->with("success", "Pet pro gallery created");
}
return WagEnabledHelpers::apiJsonResponse([] , config("wagenabled.status_codes.normal_error"), 'Sorry, Something went wrong please try again');
//return redirect($this->moduleRoute)->with("error", "Sorry, Something went wrong please try again");
} catch (\Exception $e) {
return WagEnabledHelpers::apiJsonResponse([] , config("wagenabled.status_codes.normal_error"), $e->getMessage());
//return redirect($this->moduleRoute)->with('error', $e->getMessage());
}
}
public function edit($pet_pro_id, $id)
{
$petPro = PetPro::find($pet_pro_id);
if( $petPro ) {
$moduleRoute = url('admin/pet-pros/'.$pet_pro_id.'/gallery');
View::share('module_route', $moduleRoute);
$result = $this->model->find($id);
if ($result) {
return view("admin.main.pet-pro-gallery.edit", compact("result", "pet_pro_id"));
}
}
return redirect($this->moduleRoute)->with("error", "Sorry, Pet pro gallery not found");
}
public function update(PetProGalleryRequest $request, $pet_pro_id, $id)
{
$input = [];
try {
$petPro = PetPro::find($pet_pro_id);
if( $petPro ) {
$result = $this->model->find($id);
if ($result) {
if ($request->file('image', false)) {
if(! $request->get('cropped_image')) {
$isCreateThumb="0";
$input["is_cropped_image"] = 0;
} else {
$isCreateThumb="1";
$input["is_cropped_image"] = 1;
}
$imageStore = WagEnabledHelpers::saveUploadedImage($request->file('image'), config("wagenabled.path.doc.pet_pro_gallery_image_path"), $result->gallery_image, $isCreateThumb, $height=250, $width=250, $request->get('cropped_image'));
if (isset($imageStore['error_msg']) && $imageStore['error_msg'] == '' && isset($imageStore['name']) && !empty($imageStore['name'])) {
$input["gallery_image"] = $imageStore['name'];
}
}
if( $request->get('is_cover_image') ) {
$input['is_cover_image'] = 1;
PetProGallery::where('pet_pro_id', $pet_pro_id)->where('id', "!=", $result->id )->update(['is_cover_image' => 0]);
} else {
$input['is_cover_image'] = 0;
}
$isSaved = $result->update($input);
if ($isSaved) {
return WagEnabledHelpers::apiJsonResponse([] , config("wagenabled.status_codes.success"), 'Pet pro gallery updated');
//return redirect($this->moduleRoute.'/'.$pet_pro_id.'/edit')->with("success", "Pet pro gallery updated");
}
}
}
return WagEnabledHelpers::apiJsonResponse([] , config("wagenabled.status_codes.normal_error"), 'Sorry, Something went wrong please try again');
} catch (\Exception $e) {
return WagEnabledHelpers::apiJsonResponse([] , config("wagenabled.status_codes.server_side"), $e->getMessage());
}
}
public function destroy($pet_pro_id, $id)
{
$result = array();
$petPro = PetPro::find($pet_pro_id);
if ($petPro) {
$data = $this->model->find($id);
if ($data) {
$fileOldName = $data->gallery_image;
$res = $data->delete();
if( $fileOldName ) {
// delete old file
$deleteFileList = array();
$deleteFileList[] = config("wagenabled.path.doc.pet_pro_gallery_image_path").$fileOldName;
$deleteFileList[] = config("wagenabled.path.doc.pet_pro_gallery_image_path").'thumb/'.$fileOldName;
WagEnabledHelpers::deleteIfFileExist($deleteFileList);
}
if ($res) {
$result['message'] = "Pet pro gallery deleted.";
$result['code'] = 200;
} else {
$result['message'] = "Error while deleting pet pro gallery";
$result['code'] = 400;
}
} else {
$result['message'] = "Pet pro gallery not Found!";
$result['code'] = 400;
}
} else {
$result['message'] = "Sorry, Something went wrong please try again!";
$result['code'] = 400;
}
return response()->json($result, $result['code']);
}
}
================================================
FILE: app/Http/Controllers/Admin/PetProsController.php
================================================
moduleName = "Pet Pros";
$this->singularModuleName = "Pet Pro";
$this->moduleRoute = url('admin/pet-pros');
$this->moduleView = "admin.main.pet-pros";
$this->model = $model;
View::share('module_name', $this->moduleName);
View::share('singular_module_name', $this->singularModuleName);
View::share('module_route', $this->moduleRoute);
View::share('moduleView', $this->moduleView);
}
public function index()
{
// $result = $this->model->where('status', 'approved')->with('categories', 'city', 'state')->orderBy('id', 'desc')->get();
// dd($result);
view()->share('isIndexPage', true);
return view("$this->moduleView.index");
}
public function getDatatable(Request $request)
{
$result = $this->model->where('status', 'approved')->with('categories', 'city', 'state')->orderBy('id', 'desc')->get();
return Datatables::of($result)
->addColumn('city_state', function ($result) {
$str = "";
if ($result->city_id) {
$str .= $result->city->name;
}
if ($result->state_id) {
$str .= ', ' . $result->state->name;
}
return $str;
})
->addIndexColumn()
->make(true);
}
public function create()
{
$countries = Country::pluck('name', 'id')->toArray();
$states = [];
$cities = [];
$categories = PetProCategory::orderBy('name', 'asc')->get()->pluck("name", "id")->toArray();
$businessNatures = BusinessNature::orderBy('name', 'asc')->get()->pluck("name", "id")->toArray();
$petType = PetType::orderBy('name', 'asc')->get()->pluck("name", "id")->toArray();
return view("$this->moduleView.create", compact('categories', 'countries', 'states', 'cities', 'businessNatures', 'petType'));
}
public function store(PetProRequest $request)
{
$pet_pro_input = $request->only(['store_name', 'website_url', 'email', 'phone_number', 'address_line_1', 'address_line_2', 'postal_code', 'description']);
$time_input = $request->only(['monday_open', 'monday_close', 'tuesday_open', 'tuesday_close', 'wednesday_open', 'wednesday_close', 'thursday_open', 'thursday_close', 'friday_open', 'friday_close', 'saturday_open', 'saturday_close', 'sunday_open', 'sunday_close']);
$inputCategories = $request['category_id'];
$inputBusinessNatures = $request['business_id'];
$inputPetType = $request['pet_type_id'];
try {
if ($request->get('is_featured_pet_pro')) {
$pet_pro_input['is_featured_pet_pro'] = 1;
$pet_pro_input['featured_title'] = $request->get('featured_title');
$pet_pro_input['featured_description'] = $request->get('featured_description');
}
$isSaved = $this->model->create($pet_pro_input);
$pet_pro = $this->model->where('id', $isSaved->id)->first();
if ($request->country_id && $request->state_id && $request->city_id) {
foreach ($request->country_id as $index => $row) {
$city_latitude = null;
$city_longitude = null;
$city = City::where('id', $request->city_id[$index])->first();
if ($city) {
$city_latitude = $city->city_latitude;
$city_longitude = $city->city_longitude;
}
$pet_pro->countries()->attach($row, ['state_id' => $request->state_id[$index], 'city_id' => $request->city_id[$index], 'latitude' => $city_latitude, 'longitude' => $city_longitude]);
}
}
// $city = City::where('id',$isSaved->city_id)->first();
// if($city){
// $this->model->where('id', $id)->update([
// "latitude" => $city->city_latitude,
// "longitude" => $city->city_longitude,
// ]);
// }
if ($isSaved) {
if (count($inputCategories)) {
$currentTime = Carbon::now();
$insertArray = [];
foreach ($inputCategories as $categoryId) {
$insertArray[] = [
"pet_pro_id" => $isSaved->id,
"category_id" => $categoryId,
"created_at" => $currentTime,
"updated_at" => $currentTime,
];
}
$isSaved->categories()->insert($insertArray);
}
if (count($inputBusinessNatures)) {
$currentTime = Carbon::now();
$insertArray = [];
foreach ($inputBusinessNatures as $businessId) {
$insertArray[] = [
"pet_pro_id" => $isSaved->id,
"business_id" => $businessId,
"created_at" => $currentTime,
"updated_at" => $currentTime,
];
}
$isSaved->business()->insert($insertArray);
}
if (count($inputPetType)) {
$currentTime = Carbon::now();
$insertArray = [];
foreach ($inputPetType as $petType) {
$insertArray[] = [
"pet_pro_id" => $isSaved->id,
"pet_type_id" => $petType,
"created_at" => $currentTime,
"updated_at" => $currentTime,
];
}
$isSaved->petType()->insert($insertArray);
}
if ($isSaved->address_line_1 || $isSaved->address_line_2 || $isSaved->city_id || $isSaved->state_id || $isSaved->postal_code) {
$addressLatLong = GoogleMapHelper::getLatLongFromAddress($isSaved);
$isSaved->update($addressLatLong);
}
/*$googleData = GoogleMapHelper::getTimezone($isSaved);
if( $googleData["timezone"] ) {
$isSaved->timezone = Carbon::now()->timezone($googleData["timezone"])->format('P');
$isSaved->save();
} else {
$isSaved->timezone = 'GMT-4';
$isSaved->save();
}*/
$days = config('wagenabled.days');
//if( $isSaved->timezone ) {
foreach ($days as $day) {
$open_day = $day . "_open";
$close_day = $day . "_close";
if (isset($time_input[$open_day])) {
$time_input[$open_day] = Carbon::parse($time_input[$open_day]/*, $isSaved->timezone*/)->format('H:i:s');
} else {
$time_input[$open_day] = "";
}
if (isset($time_input[$close_day])) {
$time_input[$close_day] = Carbon::parse($time_input[$close_day]/*, $isSaved->timezone*/)->format('H:i:s');
} else {
$time_input[$close_day] = "";
}
PetProTimetable::create([
"pet_pro_id" => $isSaved->id,
"day" => $day,
"open" => $time_input[$open_day] ? $time_input[$open_day] : null,
"close" => $time_input[$close_day] ? $time_input[$close_day] : null,
]);
}
//}
$services = $request->get('services');
if ($services) {
foreach ($services as $service) {
PetProServicesOffered::create([
"pet_pro_id" => $isSaved->id,
"service" => $service,
]);
}
}
$galleryInput["pet_pro_id"] = $isSaved->id;
if ($request->row) {
foreach ($request->row as $index => $row) {
if (isset($row["image"])) {
/*if(! $row["cropped_image"]) {
$isCreateThumb="0";
$galleryInput["is_cropped_image"] = 0;
} else {
$isCreateThumb="1";
$galleryInput["is_cropped_image"] = 1;
}*/
$galleryInput["is_cropped_image"] = 1;
$isCreateThumb = "1";
$imageStore = WagEnabledHelpers::saveUploadedImage($row["image"], config("wagenabled.path.doc.pet_pro_gallery_image_path"), "", $isCreateThumb, $height = 250, $width = 380, $row['cropped_image'], $isThumbOptimized = true);
if (isset($imageStore['error_msg']) && $imageStore['error_msg'] == '' && isset($imageStore['name']) && !empty($imageStore['name'])) {
$galleryInput["gallery_image"] = $imageStore['name'];
}
if ($request->get('is_cover_image')) {
if ($index == $request->get('is_cover_image')) {
$galleryInput['is_cover_image'] = 1;
} else {
$galleryInput['is_cover_image'] = 0;
}
}
$isSaved = PetProGallery::create($galleryInput);
}
}
}
return WagEnabledHelpers::apiJsonResponse([], config("wagenabled.status_codes.success"), 'Pet pro created');
//return redirect($this->moduleRoute)->with("success", "Pet pro created");
}
return WagEnabledHelpers::apiJsonResponse([], config("wagenabled.status_codes.normal_error"), 'Sorry, Something went wrong please try again');
} catch (\Exception $e) {
return WagEnabledHelpers::apiJsonResponse([], config("wagenabled.status_codes.server_side"), $e->getMessage());
}
}
public function show($id)
{
}
public function edit($id)
{
$result = $this->model->with('timetable', 'images', 'categories')->find($id);
if ($result) {
$selectedCategories = $result->categories()->pluck("category_id", "category_id")->all();
$categories = PetProCategory::orderBy('name', 'asc')->get()->pluck("name", "id")->toArray();
$countries = Country::pluck('name', 'id')->toArray();
$selectedBusiness = $result->business()->pluck("business_id", "business_id")->all();
$businessNatures = BusinessNature::orderBy('name', 'asc')->get()->pluck("name", "id")->toArray();
$selectedPetType = $result->petType()->pluck("pet_type_id", "pet_type_id")->all();
$petType = PetType::orderBy('name', 'asc')->get()->pluck("name", "id")->toArray();
$states = State::where('country_id', 231)->orderBy('name', 'asc')->pluck('name', 'id')->toArray();
if ($result->city_id) {
$cities = City::where('state_id', $result->state_id)->where('is_valid', '=', 1)->pluck('name', 'id')->toArray();
} else {
$cities = [];
}
return view("$this->moduleView.edit", compact("result", "categories", "states", "cities", "selectedCategories", 'countries', 'businessNatures', 'selectedBusiness', 'petType', 'selectedPetType'));
}
return redirect($this->moduleRoute)->with("error", "Sorry, Pet pro not found");
}
public function update(PetProRequest $request, $id)
{
$inputCategories = $request->get("category_id", []);
$inputBusinessNatures = $request->get("business_id", []);
$inputPetType = $request['pet_type_id'];
$city = City::where('id', $request->get("city_id"))->first();
try {
$result = $this->model->find($id);
if ($result) {
$pet_pro_input = $request->only(['store_name', 'website_url', 'email', 'phone_number', 'address_line_1', 'address_line_2', 'city_id', 'state_id', 'postal_code', 'description', 'donation_link']);
$time_input = $request->only(['monday_open', 'monday_close', 'tuesday_open', 'tuesday_close', 'wednesday_open', 'wednesday_close', 'thursday_open', 'thursday_close', 'friday_open', 'friday_close', 'saturday_open', 'saturday_close', 'sunday_open', 'sunday_close']);
if ($request->get('is_featured_pet_pro')) {
$pet_pro_input['is_featured_pet_pro'] = 1;
$pet_pro_input['featured_title'] = $request->get('featured_title');
$pet_pro_input['featured_description'] = $request->get('featured_description');
} else {
$pet_pro_input['is_featured_pet_pro'] = 0;
$pet_pro_input['featured_title'] = null;
$pet_pro_input['featured_description'] = null;
}
if ($request->get('is_featured_pet_pro')) {
$pet_pro_input['is_featured_pet_pro'] = 1;
$pet_pro_input['featured_title'] = $request->get('featured_title');
$pet_pro_input['featured_description'] = $request->get('featured_description');
} else {
$pet_pro_input['is_featured_pet_pro'] = 0;
$pet_pro_input['featured_title'] = null;
$pet_pro_input['featured_description'] = null;
}
$isSaved = $result->update($pet_pro_input);
if ($isSaved) {
$currentTime = Carbon::now();
if (count($inputCategories)) {
foreach ($inputCategories as $categoryId) {
$insertArray = [
"pet_pro_id" => $result->id,
"category_id" => $categoryId,
];
$res = $result->categories()->updateOrCreate($insertArray, $insertArray);
$insertedCategories[] = $categoryId;
}
}
if (count($inputBusinessNatures)) {
foreach ($inputBusinessNatures as $businessId) {
$insertArray = [
"pet_pro_id" => $result->id,
"business_id" => $businessId,
];
$res = $result->business()->updateOrCreate($insertArray, $insertArray);
$insertedBusiness[] = $businessId;
}
}
if (count($inputPetType)) {
foreach ($inputPetType as $PetTypeId) {
$insertArray = [
"pet_pro_id" => $result->id,
"business_id" => $PetTypeId,
];
$res = $result->petType()->updateOrCreate($insertArray, $insertArray);
$insertedPetType[] = $PetTypeId;
}
}
$result->categories()->whereNotIn("category_id", $insertedCategories)->delete();
$result->business()->whereNotIn("business_id", $insertedBusiness)->delete();
$result->petType()->whereNotIn("business_id", $insertedPetType)->delete();
if ($city) {
$this->model->where('id', $id)->update([
"latitude" => $city->city_latitude,
"longitude" => $city->city_longitude,
]);
}
if ($result->address_line_1 || $result->address_line_2 || $result->city_id || $result->state_id || $result->postal_code) {
$addressLatLong = GoogleMapHelper::getLatLongFromAddress($result);
$result->update($addressLatLong);
} elseif (!$city) {
$returnArr = [
"latitude" => null,
"longitude" => null,
];
$result->update($returnArr);
}
/* $googleData = GoogleMapHelper::getTimezone($result);
if( $googleData["timezone"] ) {
$result->timezone = Carbon::now()->timezone($googleData["timezone"])->format('P');
$result->save();
} else {
$result->timezone = 'GMT-4';
$result->save();
}*/
$days = config('wagenabled.days');
//if( $result->timezone ) {
foreach ($days as $day) {
$open_day = $day . "_open";
$close_day = $day . "_close";
if (isset($time_input[$open_day])) {
$time_input[$open_day] = Carbon::parse($time_input[$open_day]/*, $result->timezone*/)->format('H:i:s');
} else {
$time_input[$open_day] = "";
}
if (isset($time_input[$close_day])) {
$time_input[$close_day] = Carbon::parse($time_input[$close_day]/*, $result->timezone*/)->format('H:i:s');
} else {
$time_input[$close_day] = "";
}
$pet_pro_timetable = PetProTimetable::where("pet_pro_id", $result->id)
->where("day", $day)
->first();
if ($pet_pro_timetable) {
$pet_pro_timetable->open = $time_input[$open_day] ? $time_input[$open_day] : null;
$pet_pro_timetable->close = $time_input[$close_day] ? $time_input[$close_day] : null;
$pet_pro_timetable->save();
} else {
PetProTimetable::create([
"pet_pro_id" => $result->id,
"day" => $day,
"open" => $time_input[$open_day] ? $time_input[$open_day] : null,
"close" => $time_input[$close_day] ? $time_input[$close_day] : null,
]);
}
}
//}
$services = $request->get('services');
if ($services) {
foreach ($services as $service) {
PetProServicesOffered::create([
"pet_pro_id" => $result->id,
"service" => $service,
]);
}
}
$old_services = $request->get('old_services');
if ($old_services) {
foreach ($old_services as $old_service_id => $service_name) {
PetProServicesOffered::where('id', $old_service_id)->update([
"service" => $service_name,
]);
}
}
$deletedServices = $request->get('deletedServices');
if ($deletedServices) {
$delete_services = explode(",", $deletedServices);
foreach ($delete_services as $id) {
PetProServicesOffered::where('id', $id)->delete();
}
}
$galleryInput["pet_pro_id"] = $result->id;
if ($request->row) {
foreach ($request->row as $index => $row) {
if (isset($row["image"])) {
/*if(! $row["cropped_image"]) {
$isCreateThumb="0";
$galleryInput["is_cropped_image"] = 0;
} else {
$isCreateThumb="1";
$galleryInput["is_cropped_image"] = 1;
}*/
$isCreateThumb = "1";
$galleryInput["is_cropped_image"] = 1;
$imageStore = WagEnabledHelpers::saveUploadedImage($row["image"], config("wagenabled.path.doc.pet_pro_gallery_image_path"), "", $isCreateThumb, $height = 250, $width = 380, $row['cropped_image'], $isThumbOptimized = true);
if (isset($imageStore['error_msg']) && $imageStore['error_msg'] == '' && isset($imageStore['name']) && !empty($imageStore['name'])) {
$galleryInput["gallery_image"] = $imageStore['name'];
}
if ($request->get('is_cover_image')) {
if ($index == $request->get('is_cover_image')) {
$galleryInput['is_cover_image'] = 1;
PetProGallery::where('pet_pro_id', $result->id)->update(['is_cover_image' => 0]);
} else {
$galleryInput['is_cover_image'] = 0;
}
}
PetProGallery::create($galleryInput);
}
}
}
if ($request->old_row) {
foreach ($request->old_row as $index => $row) {
$galleryResult = PetProGallery::find($index);
if (isset($row["image"])) {
/*if(! $row["cropped_image"]) {
$isCreateThumb="0";
$updateGalleryInput["is_cropped_image"] = 0;
} else {
$isCreateThumb="1";
$updateGalleryInput["is_cropped_image"] = 1;
}*/
$isCreateThumb = "1";
$galleryInput["is_cropped_image"] = 1;
$imageStore = WagEnabledHelpers::saveUploadedImage($row["image"], config("wagenabled.path.doc.pet_pro_gallery_image_path"), $galleryResult->gallery_image, $isCreateThumb, $height = 250, $width = 380, $row['cropped_image'], $isThumbOptimized = true);
if (isset($imageStore['error_msg']) && $imageStore['error_msg'] == '' && isset($imageStore['name']) && !empty($imageStore['name'])) {
$updateGalleryInput["gallery_image"] = $imageStore['name'];
}
}
if ($request->get('is_cover_image')) {
if (strpos($request->get('is_cover_image'), 'old_') !== false) {
if ($index == str_replace('old_', '', $request->get('is_cover_image'))) {
$updateGalleryInput['is_cover_image'] = 1;
PetProGallery::where('pet_pro_id', $result->id)->where('id', '!=', $galleryResult->id)->update(['is_cover_image' => 0]);
}
} else {
$updateGalleryInput['is_cover_image'] = 0;
}
}
if (isset($updateGalleryInput)) {
$galleryResult->update($updateGalleryInput);
}
$updateGalleryInput = [];
}
}
$deletedGallery = $request->get('deletedGallery');
if ($deletedGallery) {
$delete_gallery = explode(",", $deletedGallery);
foreach ($delete_gallery as $id) {
$galleryResult = PetProGallery::find($id);
$fileOldName = $galleryResult->gallery_image;
$galleryResult->delete();
if ($fileOldName) {
$deleteFileList = array();
$deleteFileList[] = config("wagenabled.path.doc.pet_pro_gallery_image_path") . $fileOldName;
$deleteFileList[] = config("wagenabled.path.doc.pet_pro_gallery_image_path") . 'thumb/' . $fileOldName;
WagEnabledHelpers::deleteIfFileExist($deleteFileList);
}
}
}
return WagEnabledHelpers::apiJsonResponse([], config("wagenabled.status_codes.success"), 'Pet pro updated');
//return redirect($this->moduleRoute)->with("success", "Pet pro updated");
}
}
return WagEnabledHelpers::apiJsonResponse([], config("wagenabled.status_codes.normal_error"), 'Sorry, Something went wrong please try again');
} catch (\Exception $e) {
return WagEnabledHelpers::apiJsonResponse([], config("wagenabled.status_codes.server_side"), $e->getMessage());
}
}
public function destroy($id)
{
$result = array();
$data = $this->model->find($id);
if ($data) {
$res = $data->delete();
if ($res) {
$result['message'] = "Pet pro deleted.";
$result['code'] = 200;
} else {
$result['message'] = "Error while deleting pet pro";
$result['code'] = 400;
}
} else {
$result['message'] = "Pet pro not Found!";
$result['code'] = 400;
}
return response()->json($result, $result['code']);
}
public function getCities(Request $request, $state_id)
{
$code = config("wagenabled.status_codes.normal_error");
$message = "";
$cities = [];
try {
$cities = City::select(["id", "state_id", "name"])->where('state_id', $state_id)->orderBy('name')->orderBy('id')->groupBy('name')->get();
$code = config("wagenabled.status_codes.success");
} catch (Exception $e) {
$message = "Please, try again!";
}
return WagEnabledHelpers::apiJsonResponse($cities, $code, $message);
}
public function getStates(Request $request, $country_id)
{
$code = config("wagenabled.status_codes.normal_error");
$message = "";
$states = [];
try {
$states = State::select(["id", "name"])->where('country_id', $country_id)->orderBy('name', 'asc')->get();
$code = config("wagenabled.status_codes.success");
} catch (Exception $e) {
$message = "Please, try again!";
}
return WagEnabledHelpers::apiJsonResponse($states, $code, $message);
}
public function getGeocodeData(Request $request)
{
$code = config("wagenabled.status_codes.normal_error");
$message = "";
$data = [];
$responseData = [];
try {
if ($request->get('postal_code', '')) {
$isExistingCityGetCount = City::where('zipcode', trim($request->get('postal_code')))->where('is_valid', 1)->count();
if ($isExistingCityGetCount != 1) {
$data[] = $request->get('postal_code', '');
$GooogleResponseData = GoogleMapHelper::getGeocodeData($data);
if (count($GooogleResponseData) > 0) {
$responseData = $GooogleResponseData;
$state_name = $GooogleResponseData["state"];
$city_name = $GooogleResponseData["city"];
$zipcode = $request->get('postal_code', '');
$latitude = $GooogleResponseData["latitude"];
$longitude = $GooogleResponseData["longitude"];
if ($city_name) {
$isExistingCity = City::where('name', 'like', $city_name);
$cities = clone $isExistingCity;
$isExistingCity = $isExistingCity->first();
if ($isExistingCity) {
$responseData["state_id"] = $isExistingCity->state_id;
$responseData["city_id"] = $isExistingCity->id;
$isInvalidCity = $cities->where('is_valid', '0')->first();
if ($isInvalidCity) {
$cities = City::where('name', 'like', $city_name)->update([
'is_valid' => 1,
]);
}
} else {
if ($state_name) {
$state = State::where('name', 'like', $state_name)->first();
if (!$state) {
$country = Country::where('name', 'United States')->first();
if ($country) {
$state = State::create([
"country_id" => $country->id,
"name" => $state_name,
]);
}
}
if ($state) {
$isSavedCity = City::create([
'name' => $city_name,
'state_id' => $state->id,
'zipcode' => $zipcode,
'city_latitude' => $latitude,
'city_longitude' => $longitude,
'is_valid' => 1,
]);
$responseData["city_id"] = $isSavedCity->id;
$responseData["state_id"] = $state->state_id;
}
}
}
}
}
} else {
$isExistingCityGet = City::where('zipcode', $request->get('postal_code'))->where('is_valid', 1)->orderBy('name')->orderBy('id')->first();
$responseData["city_id"] = $isExistingCityGet->id;
$responseData["state_id"] = $isExistingCityGet->state_id;
}
$code = config("wagenabled.status_codes.success");
}
} catch (Exception $e) {
$message = "Please, try again!";
}
return WagEnabledHelpers::apiJsonResponse($responseData, $code, $message);
}
}
================================================
FILE: app/Http/Controllers/Admin/PetProsRequestController.php
================================================
moduleName = "Pet Pros";
$this->singularModuleName = "Pet Pro";
$this->moduleRoute = url('admin/pet-pros-request');
$this->moduleView = "admin.main.pet-pro-request";
$this->model = $model;
View::share('module_name', $this->moduleName);
View::share('singular_module_name', $this->singularModuleName);
View::share('module_route', $this->moduleRoute);
View::share('moduleView', $this->moduleView);
}
///////////////
// By Umar
//////////////
public function approvePetPro($id)
{
$petpros = $this->model->find($id);
$data = [];
if ($petpros) {
$data = json_decode($petpros->new_detail);
$petpros->update((array)$data);
$petpros->new_detail = null;
$petpros->status = "approved";
$petpros->update();
// return WagEnabledHelpers::apiJsonResponse([], config("wagenabled.status_codes.success"), "Pet Pros is approved.");
return redirect($this->moduleRoute)->with("success", "Pet pro approved");
} else {
// return WagEnabledHelpers::apiJsonResponse([], config("wagenabled.status_codes.server_side"), "Something Went Wrong.");
return redirect($this->moduleRoute)->with("error", "Sorry, Pet pro approval failed");
}
}
public function rejectPetPro($id)
{
$data = $this->model->find($id);
if ($data) {
$data->status = "reject";
$data->update();
// return WagEnabledHelpers::apiJsonResponse([], config("wagenabled.status_codes.success"), "Pet Pros is rejected.");
return redirect($this->moduleRoute)->with("success", "Pet pro rejected");
} else {
// return WagEnabledHelpers::apiJsonResponse([], config("wagenabled.status_codes.server_side"), "Something Went Wrong.");
return redirect($this->moduleRoute)->with("error", "Sorry, Pet pro rejection failed");
}
}
public function getAllPetProsRequestDatatable()
{
view()->share('isIndexPage', true);
return view($this->moduleView.".index");
}
public function getPetProsRequestDatatable(Request $request)
{
$result = $this->model->where('status',null)->orWhere('status','pending')->orWhere('status','approved')->where('new_detail','!=',null)->orderBy('id', 'desc')->get();
return Datatables::of($result)
->editColumn('message', function ($result) {
if ($result->message) {
if (strlen($result->message) > 50) {
return substr($result->message, 0, 50) . '...';
}
}
return $result->message;
})
->addIndexColumn()
->make(true);
}
public function destroy($id)
{
$result = array();
$data = $this->model->find($id);
if ($data) {
$res = $data->delete();
if ($res) {
$result['message'] = "Pet pro deleted.";
$result['code'] = 200;
} else {
$result['message'] = "Error while deleting pet pro";
$result['code'] = 400;
}
} else {
$result['message'] = "Pet pro not Found!";
$result['code'] = 400;
}
return response()->json($result, $result['code']);
}
public function show($id)
{
$result = $this->model->find($id);
if ($result) {
return view("$this->moduleView.show", compact("result"));
}
return redirect($this->moduleRoute)->with("error", "Sorry, Admin user not found");
}
}
================================================
FILE: app/Http/Controllers/Admin/PetTypeController.php
================================================
moduleName = "Pet Type";
$this->singularModuleName = "Pet Type";
$this->moduleRoute = url('admin/pet-type');
$this->moduleView = "admin.main.pet-type";
$this->model = $model;
View::share('module_name', $this->moduleName);
View::share('singular_module_name', $this->singularModuleName);
View::share('module_route', $this->moduleRoute);
View::share('moduleView', $this->moduleView);
}
public function index()
{
view()->share('isIndexPage', true);
return view("$this->moduleView.index");
}
public function getDatatable(Request $request)
{
$result = $this->model->withCount('petPro')->orderBy('name', 'asc');
\Log::error(json_encode($result));
return Datatables::of($result)->addIndexColumn()->make(true);
}
public function create()
{
return view("admin.main.general.create");
}
public function store(PetTypeRequest $request)
{
$input = $request->except(['_token']);
$isExist = $this->model->where('name', '=', $input['name'])->withTrashed()->first();
if ($isExist) {
if ($isExist->deleted_at == null) {
return redirect($this->moduleRoute)->with("error", "Sorry, Pet typ alerady exist");
} else {
$isExist->deleted_at = null;
$isExist->save();
return redirect($this->moduleRoute)->with("success", "Pet typee created");
}
}
try {
$isSaved = $this->model->create($input);
if ($isSaved) {
return redirect($this->moduleRoute)->with("success", "Pet type created");
}
return redirect($this->moduleRoute)->with("error", "Sorry, Something went wrong please try again");
} catch (\Exception $e) {
return redirect($this->moduleRoute)->with('error', $e->getMessage());
}
}
public function show($id)
{
}
public function edit($id)
{
$result = $this->model->find($id);
if ($result) {
return view("admin.main.general.edit", compact("result"));
}
return redirect($this->moduleRoute)->with("error", "Sorry, Pet type not found");
}
public function update(PetTypeRequest $request, $id)
{
$input = $request->except(['_token']);
$isExist = $this->model->where('name', '=', $input['name'])->where('id', '!=', $id)->first();
if ($isExist) {
return redirect($this->moduleRoute)->with("error", "Sorry, Pet type already exist");
} else {
try {
$result = $this->model->find($id);
if ($result) {
$isSaved = $result->update($input);
if ($isSaved) {
return redirect($this->moduleRoute)->with("success", "Pet type updated");
}
}
return redirect($this->moduleRoute)->with("error", "Sorry, Something went wrong please try again");
} catch (\Exception $e) {
return redirect($this->moduleRoute)->with('error', $e->getMessage());
}
}
}
public function destroy($id)
{
$result = array();
$data = $this->model->find($id);
if ($data) {
$res = $data->delete();
if ($res) {
$result['message'] = "Pet type deleted.";
$result['code'] = 200;
} else {
$result['message'] = "Error while deleting watch and learn pet type";
$result['code'] = 400;
}
} else {
$result['message'] = "Pet type not Found!";
$result['code'] = 400;
}
return response()->json($result, $result['code']);
}
}
================================================
FILE: app/Http/Controllers/Admin/ProductReviewCategoriesController.php
================================================
moduleName = "Product Review Categories";
$this->singularModuleName = "Product Review Category";
$this->moduleRoute = url('admin/product-review-categories');
$this->moduleView = "admin.main.product-review-categories";
$this->model = $model;
View::share('module_name', $this->moduleName);
View::share('singular_module_name', $this->singularModuleName);
View::share('module_route', $this->moduleRoute);
View::share('moduleView', $this->moduleView);
}
public function index()
{
view()->share('isIndexPage', true);
return view("$this->moduleView.index");
}
public function getDatatable(Request $request)
{
$result = $this->model->select("*")->ProductReviewCategory()->orderBy('name', 'asc');
return Datatables::of($result)->addIndexColumn()->make(true);
}
public function create()
{
return view("admin.main.general.create");
}
public function store(WatchAndLearnCategoriesRequest $request)
{
$input = $request->except(['_token']);
$isExist = $this->model->where('name', '=', $input['name'])->where('parent_id', config("wagenabled.product_review_category_id"))->withTrashed()->first();
if($isExist){
if($isExist->deleted_at == null){
return redirect($this->moduleRoute)->with("error", "Sorry, Product Review category alerady exist");
} else {
$isExist->deleted_at = null;
$isExist->save();
return redirect($this->moduleRoute)->with("success", "Product Review category created");
}
}
else {
try {
$input['parent_id'] = config("wagenabled.product_review_category_id");
$isSaved = $this->model->create($input);
if ($isSaved) {
return redirect($this->moduleRoute)->with("success", "Product Review category created");
}
return redirect($this->moduleRoute)->with("error", "Sorry, Something went wrong please try again");
} catch (\Exception $e) {
return redirect($this->moduleRoute)->with('error', $e->getMessage());
}
}
}
public function show($id)
{
}
public function edit($id)
{
$result = $this->model->find($id);
if ($result) {
return view("admin.main.general.edit", compact("result"));
}
return redirect($this->moduleRoute)->with("error", "Sorry, Product Review category not found");
}
public function update(WatchAndLearnCategoriesRequest $request, $id)
{
$input = $request->except(['_token']);
$isExist = $this->model->where('name', '=', $input['name'])->where('parent_id', config("wagenabled.product_review_category_id"))->where('id', '!=', $id)->first();
if($isExist){
return redirect($this->moduleRoute)->with("error", "Sorry, Product Review category alerady exist");
} else {
try {
$result = $this->model->find($id);
if ($result) {
$isSaved = $result->update($input);
if ($isSaved) {
return redirect($this->moduleRoute)->with("success", "Product Review category updated");
}
}
return redirect($this->moduleRoute)->with("error", "Sorry, Something went wrong please try again");
} catch (\Exception $e) {
return redirect($this->moduleRoute)->with('error', $e->getMessage());
}
}
}
public function destroy($id)
{
$result = array();
$data = $this->model->find($id);
if ($data) {
$res = $data->delete();
if ($res) {
$result['message'] = "Product Review category deleted.";
$result['code'] = 200;
} else {
$result['message'] = "Error while deleting Product Review category";
$result['code'] = 400;
}
} else {
$result['message'] = "Product Review category not Found!";
$result['code'] = 400;
}
return response()->json($result, $result['code']);
}
}
================================================
FILE: app/Http/Controllers/Admin/ProductReviewController.php
================================================
moduleName = "Product Reviews";
$this->singularModuleName = "Product Review";
$this->moduleRoute = url('admin/product-reviews');
$this->moduleView = "admin.main.product-reviews";
$this->model = $model;
$this->statusCodes = config("wagenabled.status_codes");
View::share('module_name', $this->moduleName);
View::share('singular_module_name', $this->singularModuleName);
View::share('module_route', $this->moduleRoute);
View::share('moduleView', $this->moduleView);
}
public function index()
{
$frontUrl = env('REACT_SERVER_BASE_URL');
view()->share('isIndexPage', true);
$categories = WatchAndLearnCategory::ProductReviewCategory()->pluck('name', 'id')->toArray();
return view("$this->moduleView.index", compact('frontUrl', 'categories'));
}
public function getDatatable(Request $request)
{
$blogMode = $request->get('blogMode');
$category_id = $request->get('category_id');
$parent_product_review_id = config("wagenabled.product_review_category_id");
if($category_id != ""){
$result = $this->model->with('categories.category', 'author')->whereHas('categories',function($q) use($category_id,$parent_product_review_id){
$q->where('selected_category_id',$category_id);
$q->whereHas('category',function($q) use($parent_product_review_id){
$q->where('parent_id', $parent_product_review_id);
});
})->select("*")->where('status', $blogMode)->orderBy('id', 'desc');
}else{
$result = $this->model->with('categories.category', 'author')->whereHas('categories',function($q) use($category_id,$parent_product_review_id){
$q->whereHas('category',function($q) use($parent_product_review_id){
$q->where('parent_id', $parent_product_review_id);
});
})->select("*")->where('status', $blogMode)->orderBy('id', 'desc');
}
return Datatables::of($result)
->addColumn('formated_author', function ($result) {
if( $result->author ) {
return $result->author->name;
}
return '-';
})
->addColumn('formated_category', function ($result) {
$categoryString = "-";
if(count($result->categories)){
foreach ($result->categories as $key => $category) {
if($key == 0){
if($category){
$categoryString = $category->category->name;
}
}else{
if($categoryString == "-" && $category){
$categoryString = $category->name;
}else{
$categoryString = $categoryString.", ".$category->name;
}
}
}
}
return $categoryString;
})
->addIndexColumn()
->make(true);
}
public function create()
{
$categories = WatchAndLearnCategory::ProductReviewCategory()->orderBy('name', 'asc')->get()->pluck("name", "id")->toArray();
$authors = WatchAndLearnAuthor::orderBy('name', 'asc')->get()->pluck("name", "id")->toArray();
return view("$this->moduleView.create", compact('categories', 'authors'));
}
public function store(WatchAndLearnRequest $request)
{
$input = $request->except(['_token', 'image','cropped_image', 'blogMode']);
$input['category_id'] = null;
$inputCategories = $request['category_id'];
try {
if ($request->file('image', false)) {
$imageStore = WagEnabledHelpers::saveUploadedImage($request->file('image'), config("wagenabled.path.doc.watch_and_learn_thumbnail_path"), "", $isCreateThumb="1", $height=250, $width=380, $request->get('cropped_image'));
if (isset($imageStore['error_msg']) && $imageStore['error_msg'] == '' && isset($imageStore['name']) && !empty($imageStore['name'])) {
$input["thumbnail"] = $imageStore['name'];
}
}
$isSaved = $this->model->create($input);
if ($isSaved) {
if(count($inputCategories)) {
$currentTime = Carbon::now();
$insertArray = [];
foreach ($inputCategories as $categoryId) {
$insertArray[] = [
"watch_and_learn_id" => $isSaved->id,
"selected_category_id" => $categoryId,
"created_at" => $currentTime,
"updated_at" => $currentTime,
];
}
$isSaved->categories()->insert($insertArray);
}
if( $request->get('blogMode') == 'draft' ) {
return redirect($this->moduleRoute)->with("success", "Product Review created");
}
$viewData['watchAndLearn'] = $isSaved;
return view("$this->moduleView.content-builder", $viewData);
}
return redirect($this->moduleRoute)->with("error", "Sorry, Something went wrong please try again");
} catch (\Exception $e) {
return redirect($this->moduleRoute)->with('error', $e->getMessage());
}
}
public function show($id)
{
$result = $this->model->withCount(['comments' => function($query){
$query->where('parent_comment_id', 0);
}])
->find($id);
$back_url_path = $this->moduleRoute;
if ($result) {
return view("$this->moduleView.show", compact("result", 'back_url_path'));
}
return redirect($this->moduleRoute)->with("error", "Sorry, Product Review not found");
}
public function edit($id)
{
$result = $this->model->find($id);
$selectedCategories = $result->categories()->pluck("selected_category_id")->all();
$categories = WatchAndLearnCategory::ProductReviewCategory()->orderBy('name', 'asc')->get()->pluck("name", "id")->toArray();
$authors = WatchAndLearnAuthor::orderBy('name', 'asc')->get()->pluck("name", "id")->toArray();
if ($result) {
return view("$this->moduleView.edit", compact("result","categories", 'authors', 'selectedCategories'));
}
return redirect($this->moduleRoute)->with("error", "Sorry, Product Review not found");
}
public function update(WatchAndLearnRequest $request, $id)
{
$input = $request->except(['_token', 'image','cropped_image', 'video', 'blogMode']);
$input['category_id'] = null;
$inputCategories = $request['category_id'];
try {
$result = $this->model->find($id);
if ($result) {
$old_file_name = '';
if ($request->file('image', false)) {
$imageStore = WagEnabledHelpers::saveUploadedImage($request->file('image'), config("wagenabled.path.doc.watch_and_learn_thumbnail_path"), $result->thumbnail, $isCreateThumb="1", $height=250, $width=380, $request->get('cropped_image'));
if (isset($imageStore['error_msg']) && $imageStore['error_msg'] == '' && isset($imageStore['name']) && !empty($imageStore['name'])) {
$input["thumbnail"] = $imageStore['name'];
}
}
if( $request->get('blogMode') == 'draft' ) {
$input["status"] = 'draft';
}
$isSaved = $result->update($input);
if ($isSaved) {
if(count($inputCategories)) {
$result->categories()->delete();
$currentTime = Carbon::now();
$insertArray = [];
foreach ($inputCategories as $categoryId) {
$insertArray[] = [
"watch_and_learn_id" => $id,
"selected_category_id" => $categoryId,
"created_at" => $currentTime,
"updated_at" => $currentTime,
];
}
$result->categories()->insert($insertArray);
}
if( $request->get('blogMode') == 'draft' ) {
return redirect($this->moduleRoute);
}
if( $request->get('blogMode') == 'publish' ) {
return redirect($this->moduleRoute);
}
$viewData['watchAndLearn'] = $result;
return view("$this->moduleView.content-builder", $viewData);
return redirect($this->moduleRoute)->with("success", "Product Review updated");
}
}
return redirect($this->moduleRoute)->with("error", "Sorry, Something went wrong please try again");
} catch (\Exception $e) {
return redirect($this->moduleRoute)->with('error', $e->getMessage());
}
}
public function buildWithContentBuilder(Request $request, $id = null)
{
$viewData = [];
$WatchAndLearn = $this->model::whereId($id)->first();
if ($WatchAndLearn) {
$viewData['watchAndLearn'] = $WatchAndLearn;
}
return view("$this->moduleView.content-builder", $viewData);
}
public function setDescriptionByContentBuilder(Request $request, $id)
{
try {
$data = $this->model::whereId($id)->first();
if ($data) {
$input = $request->only(['description']);
$status = $data->update($input);
if ($status) {
$result = $this->model->with('categories.category')->find($id);
$back_url_path = $this->moduleRoute.'/'.$id.'/edit/buildwithcontentbuilder';
if ($result) {
return view("$this->moduleView.show", compact("result", 'back_url_path'));
}
}
}
return redirect($this->moduleRoute)->with("error", "Sorry, Something went wrong please try again");
} catch (\Exception $e) {
return redirect($this->moduleRoute)->with('error', $e->getMessage());
}
}
public function changeStatus($id, $status, Request $request)
{
$result = $this->model->find($id);
if ($result) {
$result->status = $status;
$result->Save();
$result['message'] = "success";
$result['code'] = 200;
} else {
$result['message'] = "Sorry, Product Review not found";
$result['code'] = 400;
}
return response()->json($result, $result['code']);
}
public function destroy($id)
{
$result = array();
$data = $this->model->find($id);
if ($data) {
$res = $data->delete();
if ($res) {
$result['message'] = "Product Review deleted.";
$result['code'] = 200;
} else {
$result['message'] = "Error while deleting Product Review";
$result['code'] = 400;
}
} else {
$result['message'] = "Product Review not Found!";
$result['code'] = 400;
}
return response()->json($result, $result['code']);
}
public function CommentList(Request $request, $slug, $lastId = 0, $parent_id = 0) {
$this->responseData = [];
$comments = [];
$perPage = config("wagenabled.no_of_comment_display", 6);
$NoOfchildrenCount = config("wagenabled.no_of_comment_children_display", 2);
$depth = config("wagenabled.comment_depth", 2);
$this->responseData["comments"] = [];
$this->responseData["children_count"] = 0;
$this->responseData["no_of_comments_display"] = $perPage;
$this->responseData["no_of_children_display"] = $NoOfchildrenCount;
$this->responseData["depth_count"] = $depth;
$this->responseData["comment_count"] = 0;
$watch_and_learn = $this->model->Where('slug', $slug)
->Where('status', 'published')
->first();
if( $watch_and_learn ) {
$total_count = WatchAndLearnComment::where('parent_comment_id', 0)
->where("watch_and_learn_id", $watch_and_learn->id)
->count();
$total_count = $total_count ? $total_count : 0;
if( $lastId == 0 ) {
$last_comment = WatchAndLearnComment::select('id')
->where("watch_and_learn_id", $watch_and_learn->id)
->orderBy('id', 'desc')
->first();
if( $last_comment ){
$lastId = $last_comment->id;
$lastId++;
}
}
if( $lastId !=0 ) {
//Comment ids get
$ids = WatchAndLearnComment::where('parent_comment_id', $parent_id)
->where("watch_and_learn_id", $watch_and_learn->id)
->where("id", '<', $lastId)
->orderBy('id', 'desc')
->limit($perPage)
->pluck('id')
->toArray();
//Children Comments -
$childrenIds = [];
$parentId = $ids;
for ($i=1; $i <=$depth ; $i++) {
$newParentIds = [];
foreach ($parentId as $id) {
$childrenId = WatchAndLearnComment::where('parent_comment_id', $id)
->orderBy('id', 'desc')
->limit($NoOfchildrenCount)
->pluck('id')
->toArray();
$childrenIds = array_merge($childrenIds, $childrenId);
$newParentIds = array_merge($newParentIds, $childrenId);
}
$parentId = $newParentIds;
}
$ids = array_merge($ids, $childrenIds);
$comments = WatchAndLearnComment::with('user')->whereIn('id', $ids)
->orderBy('id', 'desc')
->get()
->toArray();
$count = [];
foreach ($ids as $id ) {
$count[$id] = WatchAndLearnComment::where('parent_comment_id', $id)
->where("watch_and_learn_id", $watch_and_learn->id)
->count();
}
$this->responseData["comments"] = WagEnabledHelpers::buildTreeStructure($comments, $parent_id);
$this->responseData["children_count"] = $count;
$this->responseData["no_of_comments_display"] = $perPage;
$this->responseData["no_of_children_display"] = $NoOfchildrenCount;
$this->responseData["depth_count"] = $depth;
}
$this->responseData["comment_count"] = $total_count;
$this->code = $this->statusCodes['success'];
$this->message = "";
}
else{
$this->code = $this->statusCodes['success'];
$this->message = "";
}
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
public function deleteComment(Request $request, $slug, $id)
{
$responseData = [];
$code = 403;
$message = "Please, try again!";
$watch_and_learn = $this->model->Where('slug', $slug)
->first();
if( $watch_and_learn ) {
$watch_and_learn_comment = WatchAndLearnComment::with('allChildren')
->where('watch_and_learn_id', $watch_and_learn->id)
->where('id', $id)
->first();
if( $watch_and_learn_comment ) {
$this->watch_and_learn_comment_ids[] = $watch_and_learn_comment->id;
$this->getChildreanIDs($watch_and_learn_comment->allChildren);
$comments = WatchAndLearnComment::with('user')->whereIn('id', $this->watch_and_learn_comment_ids)->delete();
$message = "Comment deleted successfully";
$code = $this->statusCodes['success'];
}
}
return WagEnabledHelpers::apiJsonResponse($responseData, $code, $message);
}
public function getChildreanIDs($watch_and_learn_comments)
{
$childrenId = [];
foreach ($watch_and_learn_comments as $watch_and_learn_comment) {
$childrenId[] = $watch_and_learn_comment->id;
$this->watch_and_learn_comment_ids = array_merge($this->watch_and_learn_comment_ids, $childrenId);
$this->getChildreanIDs($watch_and_learn_comment->allChildren);
}
}
}
================================================
FILE: app/Http/Controllers/Admin/ProductReviewDealsController.php
================================================
moduleName = "Product Review Deals";
$this->singularModuleName = "Product Review Deal";
$this->moduleView = "admin.main.product-review-deals";
$this->moduleRoute = url('admin/product-reviews');
$this->model = $model;
View::share('module_name', $this->moduleName);
View::share('singular_module_name', $this->singularModuleName);
View::share('moduleView', $this->moduleView);
}
public function index()
{
view()->share('isIndexPage', true);
return view("$this->moduleView.index");
}
public function getDatatable(Request $request, $watch_and_learn_id)
{
$moduleRoute = url('admin/product-reviews/'.$watch_and_learn_id.'/deals');
View::share('module_route', $moduleRoute);
$result = $this->model->select("*")->where('watch_and_learn_id', $watch_and_learn_id)->orderBy('id', 'desc');
return Datatables::of($result)
->addColumn('claimed', function ($result) {
return $result->claims->count();
})
->addIndexColumn()
->make(true);
}
public function create($watch_and_learn_id)
{
$watchAndLearn = WatchAndLearn::find($watch_and_learn_id);
if( $watchAndLearn ) {
$moduleRoute = url('admin/product-reviews/'.$watch_and_learn_id.'/deals');
View::share('module_route', $moduleRoute);
return view("admin.main.product-review-deals.create", compact('watch_and_learn_id'));
}
return redirect($this->moduleRoute)->with("error", "Sorry, Something went wrong please try again");
}
public function store(WatchAndLearnDealRequest $request, $watch_and_learn_id)
{
$input = $request->except(['_token']);
try {
$watchAndLearn = WatchAndLearn::find($watch_and_learn_id);
if( $watchAndLearn ) {
$input["watch_and_learn_id"] = $watch_and_learn_id;
$isSaved = $this->model->create($input);
if ($isSaved) {
return redirect($this->moduleRoute.'/'.$watch_and_learn_id.'/edit')->with("success", "Pet pro deal created");
}
}
return redirect($this->moduleRoute)->with("error", "Sorry, Something went wrong please try again");
} catch (\Exception $e) {
return redirect($this->moduleRoute)->with('error', $e->getMessage());
}
}
public function edit($watch_and_learn_id, $id)
{
$watchAndLearn = WatchAndLearn::find($watch_and_learn_id);
if( $watchAndLearn ) {
$moduleRoute = url('admin/product-reviews/'.$watch_and_learn_id.'/deals');
View::share('module_route', $moduleRoute);
$result = $this->model->find($id);
if ($result) {
return view("admin.main.product-review-deals.edit", compact("result", "watch_and_learn_id"));
}
}
return redirect($this->moduleRoute)->with("error", "Sorry, Pet pro deal not found");
}
public function update(WatchAndLearnDealRequest $request, $watch_and_learn_id, $id)
{
$input = $request->except(['_token']);
try {
$watchAndLearn = WatchAndLearn::find($watch_and_learn_id);
if( $watchAndLearn ) {
$result = $this->model->find($id);
if ($result) {
$isSaved = $result->update($input);
if ($isSaved) {
return redirect($this->moduleRoute.'/'.$watch_and_learn_id.'/edit')->with("success", "Pet pro deal updated");
}
}
}
return redirect($this->moduleRoute)->with("error", "Sorry, Something went wrong please try again");
} catch (\Exception $e) {
return redirect($this->moduleRoute)->with('error', $e->getMessage());
}
}
public function changeStatus($watch_and_learn_id, $id)
{
$result = array();
$watchAndLearn = WatchAndLearn::find($watch_and_learn_id);
if ($watchAndLearn) {
$data = $this->model->find($id);
if ($data) {
if($data->status == 'active' ) {
$data->status = 'pause';
} else {
$data->status = 'active';
}
$isSaved = $data->save();
if ($isSaved) {
$result['message'] = "Change pet pro status";
$result['code'] = 200;
} else {
$result['message'] = "Error while change pet pro status";
$result['code'] = 400;
}
} else {
$result['message'] = "Pet pro deal not Found!";
$result['code'] = 400;
}
} else {
$result['message'] = "Sorry, Something went wrong please try again!";
$result['code'] = 400;
}
return response()->json($result, $result['code']);
}
public function destroy($watch_and_learn_id, $id)
{
$result = array();
$watchAndLearn = WatchAndLearn::find($watch_and_learn_id);
if ($watchAndLearn) {
$data = $this->model->find($id);
if ($data) {
$res = $data->delete();
if ($res) {
$result['message'] = "Pet pro deal deleted.";
$result['code'] = 200;
} else {
$result['message'] = "Error while deleting pet pro deal";
$result['code'] = 400;
}
} else {
$result['message'] = "Pet pro deal not Found!";
$result['code'] = 400;
}
} else {
$result['message'] = "Sorry, Something went wrong please try again!";
$result['code'] = 400;
}
return response()->json($result, $result['code']);
}
}
================================================
FILE: app/Http/Controllers/Admin/TestimonialController.php
================================================
moduleName = "Testimonial";
$this->singularModuleName = "Testimonial";
$this->moduleRoute = url('admin/testimonial');
$this->moduleView = "admin.main.testimonials";
$this->model = $model;
$this->breadcrumb = [['title' => $this->moduleName, 'url' => $this->moduleRoute]];
View::share('module_name', $this->moduleName);
View::share('singular_module_name', $this->singularModuleName);
View::share('module_route', $this->moduleRoute );
View::share('moduleView', $this->moduleView );
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
view()->share('isIndexPage', true);
return view("$this->moduleView.index");
}
public function getDatatable()
{
$result = $this->model->all();
return Datatables::of($result)->addIndexColumn()->make(true);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
$this->breadcrumb[] = ['title' => "Add ".$this->moduleName, 'url' => ''];
view()->share('breadcrumb', $this->breadcrumb);
return view("admin.main.general.create");
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(TestimonialRequest $request)
{
$input = $request->except(['_token', 'image','cropped_image']);
try {
if ($request->file('image', false)) {
$imageStore = WagEnabledHelpers::saveUploadedImage($request->file('image'), config("wagenabled.path.doc.testimonial_image_path"), "", $isCreateThumb="1", $height=350, $width=300, $request->get('cropped_image'));
if (isset($imageStore['error_msg']) && $imageStore['error_msg'] == '' && isset($imageStore['name']) && !empty($imageStore['name'])) {
$input["image"] = $imageStore['name'];
}
}
$isSaved = $this->model->create($input);
if ($isSaved) {
return redirect($this->moduleRoute)->with("success", $this->moduleName." Added Successfully");
}
return redirect($this->moduleRoute)->with("error", "Sorry, Something went wrong please try again");
} catch (\Exception $e) {
return redirect($this->moduleRoute)->with('error', $e->getMessage());
}
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
$result = $this->model->find($id);
if($result) {
$this->breadcrumb[] = ['title' => "Edit ".$this->moduleName, 'url' => ''];
view()->share('breadcrumb', $this->breadcrumb);
return view("admin.main.general.edit", compact("result"));
}
return redirect($this->moduleRoute)->with("error", "Sorry, $this->moduleName not found");
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(TestimonialRequest $request, $id)
{
$input = $request->except(['_token', 'image','cropped_image']);
try {
$result = $this->model->find($id);
if($result) {
if ($request->file('image', false)) {
$imageStore = WagEnabledHelpers::saveUploadedImage($request->file('image'), config("wagenabled.path.doc.testimonial_image_path"), $result->image, $isCreateThumb="1", $height=350, $width=300, $request->get('cropped_image'));
if (isset($imageStore['error_msg']) && $imageStore['error_msg'] == '' && isset($imageStore['name']) && !empty($imageStore['name'])) {
$input["image"] = $imageStore['name'];
}
}
$isSaved = $result->update($input);
if ($isSaved) {
return redirect($this->moduleRoute)->with("success", $this->moduleName." Updated Successfully");
}
}
return redirect($this->moduleRoute)->with("error", "Sorry, Something went wrong please try again");
} catch (\Exception $e) {
return redirect($this->moduleRoute)->with('error', $e->getMessage());
}
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
$result = array();
try {
$res = $this->model->find($id);
if ($res) {
$res->delete();
$result['message'] = "$this->moduleName Deleted Successfully.";
$result['code'] = 200;
} else {
$result['code'] = 400;
$result['message'] = "Something went wrong";
}
} catch (\Exception $e) {
$result['message'] = $e->getMessage();
$result['code'] = 400;
}
return response()->json($result, $result['code']);
}
}
================================================
FILE: app/Http/Controllers/Admin/UsersController.php
================================================
moduleName = "Users";
$this->singularModuleName = "User";
$this->moduleRoute = url('admin/users');
$this->moduleView = "admin.main.users";
$this->model = $model;
View::share('module_name', $this->moduleName);
View::share('singular_module_name', $this->singularModuleName);
View::share('module_route', $this->moduleRoute);
View::share('moduleView', $this->moduleView);
}
public function index()
{
view()->share('isIndexPage', true);
return view("$this->moduleView.index");
}
public function getDatatable(Request $request)
{
$result = $this->model->select("*")->with('city')->orderBy('id', 'desc');
return Datatables::of($result)
->addColumn('city_state', function ($result) {
$str = "";
if( $result->city_id ) {
$str .= $result->city->name;
}
if( $result->state_id ) {
$str .= ', '. $result->state->name;
}
return $str;
})
->addIndexColumn()
->make(true);
}
public function create()
{
}
public function store(Request $request)
{
}
public function show($id)
{
$result = $this->model->with('pets', 'pets.breed')->find($id);
if ($result) {
return view("$this->moduleView.show", compact("result"));
}
return redirect($this->moduleRoute)->with("error", "Sorry, Admin user not found");
}
public function edit($id)
{
}
public function update(Request $request, $id)
{
}
public function destroy($id)
{
$result = array();
$data = $this->model->find($id);
if ($data) {
$res = $data->delete();
if ($res) {
$result['message'] = "User deleted.";
$result['code'] = 200;
} else {
$result['message'] = "Error while deleting user";
$result['code'] = 400;
}
} else {
$result['message'] = "User not Found!";
$result['code'] = 400;
}
return response()->json($result, $result['code']);
}
}
================================================
FILE: app/Http/Controllers/Admin/WatchAndLearnAuthorController.php
================================================
moduleName = "Watch And Learn Authors";
$this->singularModuleName = "Watch And Learn Author";
$this->moduleRoute = url('admin/watch-and-learn-author');
$this->moduleView = "admin.main.watch-and-learn-author";
$this->model = $model;
View::share('module_name', $this->moduleName);
View::share('singular_module_name', $this->singularModuleName);
View::share('module_route', $this->moduleRoute);
View::share('moduleView', $this->moduleView);
}
public function index()
{
view()->share('isIndexPage', true);
return view("$this->moduleView.index");
}
public function getDatatable(Request $request)
{
$result = $this->model->select("*")->orderBy('name', 'asc');
return Datatables::of($result)
->editColumn('about', function ($result) {
if( $result->about ) {
if( strlen($result->about) > 50 ){
return substr($result->about, 0, 50).'...';
}
}
return $result->about;
})
->addIndexColumn()
->make(true);
}
public function create()
{
return view("admin.main.general.create");
}
public function store(WatchAndLearnAuthorRequest $request)
{
$input = $request->except(['_token', 'image','cropped_image']);
try {
if ($request->file('image', false)) {
$imageStore = WagEnabledHelpers::saveUploadedImage($request->file('image'), config("wagenabled.path.doc.watch_and_learn_author_path"), "", $isCreateThumb="1", $height=250, $width=380, $request->get('cropped_image'));
if (isset($imageStore['error_msg']) && $imageStore['error_msg'] == '' && isset($imageStore['name']) && !empty($imageStore['name'])) {
$input["profile_image"] = $imageStore['name'];
}
}
$isSaved = $this->model->create($input);
if ($isSaved) {
return redirect($this->moduleRoute)->with("success", "Watch and learn author created");
}
return redirect($this->moduleRoute)->with("error", "Sorry, Something went wrong please try again");
} catch (\Exception $e) {
return redirect($this->moduleRoute)->with('error', $e->getMessage());
}
}
public function show($id)
{
}
public function edit($id)
{
$result = $this->model->find($id);
if ($result) {
return view("admin.main.general.edit", compact("result"));
}
return redirect($this->moduleRoute)->with("error", "Sorry, Watch and learn author not found");
}
public function update(WatchAndLearnAuthorRequest $request, $id)
{
$input = $request->except(['_token', 'image','cropped_image']);
try {
$result = $this->model->find($id);
if ($result) {
if ($request->file('image', false)) {
$imageStore = WagEnabledHelpers::saveUploadedImage($request->file('image'), config("wagenabled.path.doc.watch_and_learn_author_path"), $result->profile_image, $isCreateThumb="1", $height=250, $width=380, $request->get('cropped_image'));
if (isset($imageStore['error_msg']) && $imageStore['error_msg'] == '' && isset($imageStore['name']) && !empty($imageStore['name'])) {
$input["profile_image"] = $imageStore['name'];
}
}
$isSaved = $result->update($input);
if ($isSaved) {
return redirect($this->moduleRoute)->with("success", "Watch and learn author updated");
}
}
return redirect($this->moduleRoute)->with("error", "Sorry, Something went wrong please try again");
} catch (\Exception $e) {
return redirect($this->moduleRoute)->with('error', $e->getMessage());
}
}
public function destroy($id)
{
$result = array();
$data = $this->model->find($id);
if ($data) {
$res = $data->delete();
if ($res) {
$result['message'] = "Watch and learn author deleted.";
$result['code'] = 200;
} else {
$result['message'] = "Error while deleting watch and learn author";
$result['code'] = 400;
}
} else {
$result['message'] = "Watch and learn author not Found!";
$result['code'] = 400;
}
return response()->json($result, $result['code']);
}
}
================================================
FILE: app/Http/Controllers/Admin/WatchAndLearnCategoriesController.php
================================================
moduleName = "Watch And Learn Categories";
$this->singularModuleName = "Watch And Learn Category";
$this->moduleRoute = url('admin/watch-and-learn-categories');
$this->moduleView = "admin.main.watch-and-learn-categories";
$this->model = $model;
View::share('module_name', $this->moduleName);
View::share('singular_module_name', $this->singularModuleName);
View::share('module_route', $this->moduleRoute);
View::share('moduleView', $this->moduleView);
}
public function index()
{
view()->share('isIndexPage', true);
return view("$this->moduleView.index");
}
public function getDatatable(Request $request)
{
$result = $this->model->select("*")->GetWatchAndLearnCategory()->orderBy('name', 'asc');
return Datatables::of($result)->addIndexColumn()->make(true);
}
public function create()
{
return view("admin.main.general.create");
}
public function store(WatchAndLearnCategoriesRequest $request)
{
$input = $request->except(['_token']);
$isExist = $this->model->where('name', '=', $input['name'])->where('parent_id', '!=', config("wagenabled.product_review_category_id"))->where('watch_and_learn_categories.parent_id', 0)->withTrashed()->first();
if($isExist){
if($isExist->deleted_at == null){
return redirect($this->moduleRoute)->with("error", "Sorry, Watch and learn category alerady exist");
} else {
$isExist->deleted_at = null;
$isExist->save();
return redirect($this->moduleRoute)->with("success", "Watch and learn category created");
}
}
else {
try {
$isSaved = $this->model->create($input);
if ($isSaved) {
return redirect($this->moduleRoute)->with("success", "Watch and learn category created");
}
return redirect($this->moduleRoute)->with("error", "Sorry, Something went wrong please try again");
} catch (\Exception $e) {
return redirect($this->moduleRoute)->with('error', $e->getMessage());
}
}
}
public function show($id)
{
}
public function edit($id)
{
$result = $this->model->find($id);
if ($result) {
return view("admin.main.general.edit", compact("result"));
}
return redirect($this->moduleRoute)->with("error", "Sorry, Watch and learn category not found");
}
public function update(WatchAndLearnCategoriesRequest $request, $id)
{
$input = $request->except(['_token']);
$isExist = $this->model->where('name', '=', $input['name'])->where('parent_id', '!=', config("wagenabled.product_review_category_id"))->where('watch_and_learn_categories.parent_id', 0)->where('id', '!=', $id)->first();
if($isExist){
return redirect($this->moduleRoute)->with("error", "Sorry, Watch and learn category alerady exist");
} else {
try {
$result = $this->model->find($id);
if ($result) {
$isSaved = $result->update($input);
if ($isSaved) {
return redirect($this->moduleRoute)->with("success", "Watch and learn category updated");
}
}
return redirect($this->moduleRoute)->with("error", "Sorry, Something went wrong please try again");
} catch (\Exception $e) {
return redirect($this->moduleRoute)->with('error', $e->getMessage());
}
}
}
public function destroy($id)
{
$result = array();
$data = $this->model->find($id);
if ($data) {
$res = $data->delete();
if ($res) {
$result['message'] = "Watch and learn category deleted.";
$result['code'] = 200;
} else {
$result['message'] = "Error while deleting watch and learn category";
$result['code'] = 400;
}
} else {
$result['message'] = "Watch and learn category not Found!";
$result['code'] = 400;
}
return response()->json($result, $result['code']);
}
}
================================================
FILE: app/Http/Controllers/Admin/WatchAndLearnController.php
================================================
moduleName = "Watch And Learn";
$this->singularModuleName = "Watch And Learn";
$this->moduleRoute = url('admin/watch-and-learn');
$this->moduleView = "admin.main.watch-and-learn";
$this->model = $model;
$this->statusCodes = config("wagenabled.status_codes");
View::share('module_name', $this->moduleName);
View::share('singular_module_name', $this->singularModuleName);
View::share('module_route', $this->moduleRoute);
View::share('moduleView', $this->moduleView);
}
public function index()
{
$frontUrl = env('REACT_SERVER_BASE_URL');
view()->share('isIndexPage', true);
$categories = WatchAndLearnCategory::GetWatchAndLearnCategory()->pluck('name', 'id')->toArray();
return view("$this->moduleView.index", compact('frontUrl', 'categories'));
}
public function getDatatable(Request $request)
{
$blogMode = $request->get('blogMode');
$category_id = $request->get('category_id');
$result = $this->model->with('category', 'author')->GetWatchAndLearnCategory()->select("*")->where('status', $blogMode)->orderBy('id', 'desc');
if($category_id != ""){
$result = $result->where('category_id','=',$category_id);
}
return Datatables::of($result)
->addColumn('formated_author', function ($result) {
if( $result->author ) {
return $result->author->name;
}
return '-';
})
->addIndexColumn()
->make(true);
}
public function create()
{
$categories = WatchAndLearnCategory::GetWatchAndLearnCategory()->orderBy('name', 'asc')->get()->pluck("name", "id")->toArray();
$authors = WatchAndLearnAuthor::orderBy('name', 'asc')->get()->pluck("name", "id")->toArray();
return view("$this->moduleView.create", compact('categories', 'authors'));
}
public function store(WatchAndLearnRequest $request)
{
$input = $request->except(['_token', 'image','cropped_image', 'video_file', 'blogMode']);
try {
if ($request->file('image', false)) {
$imageStore = WagEnabledHelpers::saveUploadedImage($request->file('image'), config("wagenabled.path.doc.watch_and_learn_thumbnail_path"), "", $isCreateThumb="1", $height=250, $width=380, $request->get('cropped_image'));
if (isset($imageStore['error_msg']) && $imageStore['error_msg'] == '' && isset($imageStore['name']) && !empty($imageStore['name'])) {
$input["thumbnail"] = $imageStore['name'];
}
}
// if ($request->get('video_type') == 'video_upload') {
// if ($request->file('video_file', false)) {
// $imageStore = WagEnabledHelpers::uploadFile($request->file('video_file'), config("wagenabled.path.doc.watch_and_learn_video_path"), "");
// if (isset($imageStore['error_msg']) && $imageStore['error_msg'] == '' && isset($imageStore['name']) && !empty($imageStore['name'])) {
// $input["video_file"] = $imageStore['name'];
// $input["embed_link"] = null;
// $video_file = $request->file('video_file');
// $input['duration'] = exec("ffmpeg -i $video_file 2>&1 | grep 'Duration' | cut -d ' ' -f 4 | sed s/,//");
// }
// }
// } else {
// //$file_path='https://www.youtube.com/watch?v=uilkmUoXoLU';
// if($input['embed_link']) {
// $input['duration'] = WagEnabledHelpers::getYouTubeVideoDuration($input['embed_link']);
// }
// }
$isSaved = $this->model->create($input);
if ($isSaved) {
if( $request->get('blogMode') == 'draft' ) {
return redirect($this->moduleRoute)->with("success", "Watch and learn created");
}
$viewData['watchAndLearn'] = $isSaved;
return view("$this->moduleView.content-builder", $viewData);
}
return redirect($this->moduleRoute)->with("error", "Sorry, Something went wrong please try again");
} catch (\Exception $e) {
return redirect($this->moduleRoute)->with('error', $e->getMessage());
}
}
public function show($id)
{
$result = $this->model->withCount(['comments' => function($query){
$query->where('parent_comment_id', 0);
}])
->find($id);
$back_url_path = $this->moduleRoute;
if ($result) {
return view("$this->moduleView.show", compact("result", 'back_url_path'));
}
return redirect($this->moduleRoute)->with("error", "Sorry, Watch and learn not found");
}
public function edit($id)
{
$result = $this->model->find($id);
$categories = WatchAndLearnCategory::GetWatchAndLearnCategory()->orderBy('name', 'asc')->get()->pluck("name", "id")->toArray();
$authors = WatchAndLearnAuthor::orderBy('name', 'asc')->get()->pluck("name", "id")->toArray();
if ($result) {
return view("$this->moduleView.edit", compact("result","categories", 'authors'));
}
return redirect($this->moduleRoute)->with("error", "Sorry, Watch and learn not found");
}
public function update(WatchAndLearnRequest $request, $id)
{
$input = $request->except(['_token', 'image','cropped_image', 'video', 'blogMode']);
try {
$result = $this->model->find($id);
if ($result) {
$old_file_name = '';
if ($request->file('image', false)) {
$imageStore = WagEnabledHelpers::saveUploadedImage($request->file('image'), config("wagenabled.path.doc.watch_and_learn_thumbnail_path"), $result->thumbnail, $isCreateThumb="1", $height=250, $width=380, $request->get('cropped_image'));
if (isset($imageStore['error_msg']) && $imageStore['error_msg'] == '' && isset($imageStore['name']) && !empty($imageStore['name'])) {
$input["thumbnail"] = $imageStore['name'];
}
}
// if ($request->get('video_type') == 'video_upload') {
// if ($request->file('video_file', false)) {
// $imageStore = WagEnabledHelpers::uploadFile($request->file('video_file'), config("wagenabled.path.doc.watch_and_learn_video_path"), $result->video_file);
// if (isset($imageStore['error_msg']) && $imageStore['error_msg'] == '' && isset($imageStore['name']) && !empty($imageStore['name'])) {
// $input["video_file"] = $imageStore['name'];
// $input["embed_link"] = null;
// $video_file = $request->file('video_file');
// $input['duration'] = exec("ffmpeg -i $video_file 2>&1 | grep 'Duration' | cut -d ' ' -f 4 | sed s/,//");
// }
// }
// } else {
// $input["video_file"] = null;
// if( $input['embed_link'] ) {
// if( $input['embed_link'] != $result->embed_link) {
// $input['duration'] = WagEnabledHelpers::getYouTubeVideoDuration($input['embed_link']);
// }
// } else {
// $input['duration'] = null;
// }
// }
// if( $result->video_type == 'video_upload' ) {
// $old_file_name = $result->video_file;
// }
if( $request->get('blogMode') == 'draft' ) {
$input["status"] = 'draft';
}
$isSaved = $result->update($input);
if ($isSaved) {
if( $old_file_name ) {
$deleteFileList[] = config("wagenabled.path.doc.watch_and_learn_video_path").$old_file_name;
WagEnabledHelpers::deleteIfFileExist($deleteFileList);
}
if( $request->get('blogMode') == 'draft' ) {
return redirect($this->moduleRoute);
}
if( $request->get('blogMode') == 'publish' ) {
return redirect($this->moduleRoute);
}
$viewData['watchAndLearn'] = $result;
return view("$this->moduleView.content-builder", $viewData);
return redirect($this->moduleRoute)->with("success", "Watch and learn updated");
}
}
return redirect($this->moduleRoute)->with("error", "Sorry, Something went wrong please try again");
} catch (\Exception $e) {
return redirect($this->moduleRoute)->with('error', $e->getMessage());
}
}
public function buildWithContentBuilder(Request $request, $id = null)
{
$viewData = [];
$watchAndLearn = $this->model::whereId($id)->first();
if ($watchAndLearn) {
$viewData['watchAndLearn'] = $watchAndLearn;
}
return view("$this->moduleView.content-builder", $viewData);
}
public function setDescriptionByContentBuilder(Request $request, $id)
{
try {
$data = $this->model::whereId($id)->first();
if ($data) {
$input = $request->only(['description']);
$status = $data->update($input);
if ($status) {
$result = $this->model->find($id);
$back_url_path = $this->moduleRoute.'/'.$id.'/edit/buildwithcontentbuilder';
if ($result) {
return view("$this->moduleView.show", compact("result", 'back_url_path'));
}
}
}
return redirect($this->moduleRoute)->with("error", "Sorry, Something went wrong please try again");
} catch (\Exception $e) {
return redirect($this->moduleRoute)->with('error', $e->getMessage());
}
}
public function storeMedia(Request $request)
{
$media_folder_path = config("wagenabled.path.doc.watch_and_learn_media_path");
$photos_thumb_path = $media_folder_path."thumb";
$uploadedImgs = [];
$photos = $request->file('file');
if (!is_array($photos)) {
$photos = [$photos];
}
if (!Storage::exists($media_folder_path)) {
Storage::makeDirectory($media_folder_path);
}
if (!Storage::exists($photos_thumb_path)) {
Storage::makeDirectory($photos_thumb_path);
}
$randomStringTemplate = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
for ($i = 0; $i < count($photos); $i++) {
$photo = $photos[$i];
$randomString = substr(str_shuffle(str_repeat($randomStringTemplate, 5)), 0, 5);
$timestamp = Carbon::createFromFormat('U.u', microtime(true))->format("YmdHisu");
$nameWithoutExtension = preg_replace("/[^a-zA-Z0-9]/", "", '') . '' . $timestamp;
$nameWithoutExtension = $nameWithoutExtension.'-'.$randomString;
$fileExtension = $photo->getClientOriginalExtension();
if ($fileExtension == '') {
$fileExtension = $photo->guessClientExtension();
}
$name = $nameWithoutExtension. '.' . $fileExtension;
$save_name = str_replace([' ', ':', '-'], "", $name);
$original_photo = Image::make($photo)
->orientate()
->encode($fileExtension);
$resize_photo = Image::make($photo)
->orientate()
->encode($fileExtension);
Storage::put($media_folder_path . $save_name, $original_photo);
Storage::put($photos_thumb_path . '/' . $save_name, $resize_photo);
$upload = new WatchAndLearnMedias();
$upload->filename = $save_name;
$upload->original_name = basename($photo->getClientOriginalName());
$upload->save();
//$upload->img_url = Storage::url($media_folder_path . $save_name);
$upload->img_thumb_url = Storage::url($photos_thumb_path."/" . $save_name);
$upload->img_url = Storage::url($photos_thumb_path."/" . $save_name);
array_push($uploadedImgs, $upload);
}
if ($request->ajax()) {
return response()->json([
'data' => $uploadedImgs
]);
}
return redirect()->back()->with('success', 'Media added successfully');
}
public function changeStatus($id, $status, Request $request)
{
$result = $this->model->find($id);
if ($result) {
$result->status = $status;
$result->Save();
$result['message'] = "success";
$result['code'] = 200;
} else {
$result['message'] = "Sorry, Watch and learn not found";
$result['code'] = 400;
}
return response()->json($result, $result['code']);
}
public function destroy($id)
{
$result = array();
$data = $this->model->find($id);
if ($data) {
$res = $data->delete();
if ($res) {
$result['message'] = "Watch and learn deleted.";
$result['code'] = 200;
} else {
$result['message'] = "Error while deleting watch and learn";
$result['code'] = 400;
}
} else {
$result['message'] = "Watch and learn not Found!";
$result['code'] = 400;
}
return response()->json($result, $result['code']);
}
public function CommentList(Request $request, $slug, $lastId = 0, $parent_id = 0) {
$responseData = [];
$comments = [];
$perPage = config("wagenabled.no_of_comment_display", 6);
$NoOfchildrenCount = config("wagenabled.no_of_comment_children_display", 2);
$depth = config("wagenabled.comment_depth", 2);
$responseData["comments"] = [];
$responseData["children_count"] = 0;
$responseData["no_of_comments_display"] = $perPage;
$responseData["no_of_children_display"] = $NoOfchildrenCount;
$responseData["depth_count"] = $depth;
$responseData["comment_count"] = 0;
$message = "";
$statusCodes = 200;
$watch_and_learn = $this->model->Where('slug', $slug)
->Where('status', 'published')
->first();
if( $watch_and_learn ) {
$total_count = WatchAndLearnComment::where('parent_comment_id', 0)
->where("watch_and_learn_id", $watch_and_learn->id)
->count();
$total_count = $total_count ? $total_count : 0;
if( $lastId == 0 ) {
$last_comment = WatchAndLearnComment::select('id')
->where("watch_and_learn_id", $watch_and_learn->id)
->orderBy('id', 'desc')
->first();
if( $last_comment ){
$lastId = $last_comment->id;
$lastId++;
}
}
if( $lastId !=0 ) {
//Comment ids get
$ids = WatchAndLearnComment::where('parent_comment_id', $parent_id)
->where("watch_and_learn_id", $watch_and_learn->id)
->where("id", '<', $lastId)
->orderBy('id', 'desc')
->limit($perPage)
->pluck('id')
->toArray();
//Children Comments -
$childrenIds = [];
$parentId = $ids;
for ($i=1; $i <=$depth ; $i++) {
$newParentIds = [];
foreach ($parentId as $id) {
$childrenId = WatchAndLearnComment::where('parent_comment_id', $id)
->orderBy('id', 'desc')
->limit($NoOfchildrenCount)
->pluck('id')
->toArray();
$childrenIds = array_merge($childrenIds, $childrenId);
$newParentIds = array_merge($newParentIds, $childrenId);
}
$parentId = $newParentIds;
}
$ids = array_merge($ids, $childrenIds);
$comments = WatchAndLearnComment::with('user')->whereIn('id', $ids)
->orderBy('id', 'desc')
->get()
->toArray();
$count = [];
foreach ($ids as $id ) {
$count[$id] = WatchAndLearnComment::where('parent_comment_id', $id)
->where("watch_and_learn_id", $watch_and_learn->id)
->count();
}
$responseData["comments"] = WagEnabledHelpers::buildTreeStructure($comments, $parent_id);
$responseData["children_count"] = $count;
$responseData["no_of_comments_display"] = $perPage;
$responseData["no_of_children_display"] = $NoOfchildrenCount;
$responseData["depth_count"] = $depth;
}
$responseData["comment_count"] = $total_count;
$statusCodes = 200;
$message = "";
}
return WagEnabledHelpers::apiJsonResponse($responseData, $statusCodes, $message);
}
public function deleteComment(Request $request, $slug, $id)
{
$responseData = [];
$code = 403;
$message = "Please, try again!";
$watch_and_learn = $this->model->Where('slug', $slug)
->first();
if( $watch_and_learn ) {
$watch_and_learn_comment = WatchAndLearnComment::with('allChildren')
->where('watch_and_learn_id', $watch_and_learn->id)
->where('id', $id)
->first();
if( $watch_and_learn_comment ) {
$this->watch_and_learn_comment_ids[] = $watch_and_learn_comment->id;
$this->getChildreanIDs($watch_and_learn_comment->allChildren);
$comments = WatchAndLearnComment::with('user')->whereIn('id', $this->watch_and_learn_comment_ids)->delete();
$message = "Comment deleted successfully";
$code = $this->statusCodes['success'];
}
}
return WagEnabledHelpers::apiJsonResponse($responseData, $code, $message);
}
public function getChildreanIDs($watch_and_learn_comments)
{
$childrenId = [];
foreach ($watch_and_learn_comments as $watch_and_learn_comment) {
$childrenId[] = $watch_and_learn_comment->id;
$this->watch_and_learn_comment_ids = array_merge($this->watch_and_learn_comment_ids, $childrenId);
$this->getChildreanIDs($watch_and_learn_comment->allChildren);
}
}
}
================================================
FILE: app/Http/Controllers/Admin/WatchAndLearnMediaController.php
================================================
moduleName = "Watch And Learn Medias";
$this->singularModuleName = "Watch And Learn Media";
$this->moduleRoute = url('admin/watch-and-learn-medias');
$this->moduleView = "admin.main.watch-and-learn-medias";
$this->model = $model;
View::share('module_name', $this->moduleName);
View::share('singular_module_name', $this->singularModuleName);
View::share('module_route', $this->moduleRoute);
View::share('moduleView', $this->moduleView);
}
public function index(Request $request)
{
view()->share('isIndexPage', true);
$data['html'] = $this->load_more($request);
return view("$this->moduleView.index", $data);
}
public function load_more(Request $request)
{
$media = $this->model::select('*');
$count = $media->count();
$photos = $media->latest('id')->paginate(4);
$isMoreRecords = $photos->toArray()["next_page_url"] ? true : false;
$photos->map(function ($photo) {
$media_folder_path = config("wagenabled.path.doc.watch_and_learn_media_path");
$photos_thumb_path = $media_folder_path."thumb";
//$photo['img_url'] = config('app.url') . "/storage/$media_folder_path/" . $photo['filename'];
//$photo['img_thumb_url'] = config('app.url') . "/storage/$photos_thumb_path/" . $photo['filename'];
$photo['img_url'] = Storage::url($media_folder_path . $photo['filename']);
$photo['img_thumb_url'] = Storage::url($photos_thumb_path."/" . $photo['filename']);
return $photo;
});
$html = null;
if (!$photos->isEmpty()) {
foreach ($photos as $photo) {
$html .= '
';
$html .= '

';
$html .= '
';
$html .= '
' . \Str::limit($photo->original_name, 10) . '';
$html .= '
';
$html .= '';
$html .= '';
$html .= '';
$html .= '
';
$html .= '
';
}
// if ($count > 2) {
// $html .= '';
// }
if ($isMoreRecords) {
$html .= '';
}
// if ($count > 2) {
// $html .= '';
// }
}
if ($request->ajax()) {
$response['html'] = $html;
$response['status'] = true;
return response()->json($response);
} else {
return $html;
}
}
public function create()
{
return view("admin.main.general.create");
}
public function store(Request $request)
{
$media_folder_path = config("wagenabled.path.doc.watch_and_learn_media_path");
$photos_thumb_path = $media_folder_path."thumb";
$uploadedImgs = [];
$photos = $request->file('file');
if (!is_array($photos)) {
$photos = [$photos];
}
if (!Storage::exists($media_folder_path)) {
Storage::makeDirectory($media_folder_path);
}
if (!Storage::exists($photos_thumb_path)) {
Storage::makeDirectory($photos_thumb_path);
}
$randomStringTemplate = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
for ($i = 0; $i < count($photos); $i++) {
$photo = $photos[$i];
if( $photo ) {
$randomString = substr(str_shuffle(str_repeat($randomStringTemplate, 5)), 0, 5);
$timestamp = Carbon::createFromFormat('U.u', microtime(true))->format("YmdHisu");
$nameWithoutExtension = preg_replace("/[^a-zA-Z0-9]/", "", '') . '' . $timestamp;
$nameWithoutExtension = $nameWithoutExtension.'-'.$randomString;
$fileExtension = $photo->getClientOriginalExtension();
if ($fileExtension == '') {
$fileExtension = $photo->guessClientExtension();
}
$name = $nameWithoutExtension. '.' . $fileExtension;
$save_name = str_replace([' ', ':', '-'], "", $name);
$original_photo = Image::make($photo)
->orientate()
->encode($fileExtension);
$resize_photo = Image::make($photo)
->orientate()
->encode($fileExtension, 50);
Storage::put($media_folder_path . $save_name, $original_photo);
Storage::put($photos_thumb_path . '/' . $save_name, $resize_photo);
$upload = new WatchAndLearnMedias();
$upload->filename = $save_name;
$upload->original_name = basename($photo->getClientOriginalName());
$upload->save();
$upload->img_url = Storage::url("/$media_folder_path/" . $save_name);
$upload->img_thumb_url = Storage::url("/$photos_thumb_path/" . $save_name);
array_push($uploadedImgs, $upload);
}
}
if ($request->ajax()) {
return response()->json([
'data' => $uploadedImgs
]);
}
return redirect()->back()->with('success', 'Media added successfully');
}
public function destroy($id)
{
$media = $this->model::where('id', $id)->first();
if ($media) {
$media_folder_path = config("wagenabled.path.doc.watch_and_learn_media_path");
$photos_thumb_path = $media_folder_path."thumb";
$deleteFiles = [
$media_folder_path . $media->filename,
$photos_thumb_path . '/' . $media->filename,
];
Storage::delete($deleteFiles);
$media->delete();
$response['status'] = true;
$response['message'] = 'Media deleted successfully';
} else {
$response['status'] = false;
$response['message'] = 'Media not found';
}
return response()->json($response);
}
}
================================================
FILE: app/Http/Controllers/Api/V1/Auth/ForgotPasswordController.php
================================================
middleware('guest');
$this->statusCodes = config("wagenabled.status_codes");
}
public function forgotPassword(Request $request) {
$validator = Validator::make($request->all(), [
'email' => 'required|email',
]);
if ($validator->fails()) {
return WagEnabledHelpers::apiValidationFailResponse($validator);
}
$input = $request->all();
$user = User::where("email", "=", $input['email'])->withTrashed()->first();
if ($user) {
if( $user->deleted_at == null ) {
$randomStringTemplate = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$timestamp = Carbon::createFromFormat('U.u', microtime(true))->format("YmdHisu");
$randomString = substr(str_shuffle(str_repeat($randomStringTemplate, 5)), 0, 15);
$randomString2 = substr(str_shuffle(str_repeat($randomStringTemplate, 5)), 0, 15);
$randomString3 = substr(str_shuffle(str_repeat($randomStringTemplate, 5)), 0, 15);
$token = $timestamp . $randomString . $randomString2 . $randomString3;
$passwordReset = PasswordReset::updateOrCreate(
['email' => $user->email],
[
'email' => $user->email,
'token' => $token
]
);
if ($passwordReset) {
Mail::to($user->email)->send(new UerPasswordResetMail($user, $token));
$data = array(
'message' => "Reset password link sent to your email, please check it",
);
return Response::json($data, $this->statusCodes['success']);
}
else {
$data = ['message' => "Please try again"];
}
}
else {
$validator->getMessageBag()->add('email', 'Please contact wag enabled support');
return WagEnabledHelpers::apiValidationFailResponse($validator);
}
}
else {
$validator->getMessageBag()->add('email', 'Please enter correct email address');
return WagEnabledHelpers::apiValidationFailResponse($validator);
}
return Response::json($data, $this->statusCodes['form_validation']);
}
}
================================================
FILE: app/Http/Controllers/Api/V1/Auth/LoginController.php
================================================
all(), [
'email' => 'required|email',
'password' => 'required',
]);
if ($validator->fails()) {
return WagEnabledHelpers::apiValidationFailResponse($validator);
}
if ($this->hasTooManyLoginAttempts($request)) {
$this->fireLockoutEvent($request);
return $this->sendLockoutResponse($request);
}
$credentials = $this->credentials($request);
$user = User::where('email', $credentials['email'])->withTrashed()->first();
if ( !$user ) {
$validator->getMessageBag()->add('email', 'Please enter correct email address.');
return WagEnabledHelpers::apiValidationFailResponse($validator);
} elseif( ! Hash::check($credentials['password'], $user->password)) {
$validator->getMessageBag()->add('password', 'Please enter correct password.');
return WagEnabledHelpers::apiValidationFailResponse($validator);
}
if( $user->deleted_at == null ) {
if ($token = JWTAuth::attempt($credentials)) {
$user = auth()->user();
$userResponse = [];
if($user) {
$userResponse = $user;
}
return response()->json([
'token' => "Bearer " . $token,
'user' => $userResponse,
]);
}
}
else {
$validator->getMessageBag()->add('email', 'Please contact Wag Enabled support');
return WagEnabledHelpers::apiValidationFailResponse($validator);
}
$this->incrementLoginAttempts($request);
return $this->sendFailedLoginResponse($request);
}
public function logout()
{
auth('api')->logout();
return response()->json(['message' => 'Successfully logged out']);
}
}
================================================
FILE: app/Http/Controllers/Api/V1/Auth/RegisterController.php
================================================
all(), [
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users,email',
'password' => 'required|min:6',
'latitude' => 'nullable',
'longitude' => 'nullable',
]);
if ($validator->fails()) {
return WagEnabledHelpers::apiValidationFailResponse($validator);
}
$input = $request->only(['name', 'email', 'password', 'latitude', 'longitude']);
$input['password'] = Hash::make($input['password']);
$user = User::create($input);
$token = JWTAuth::fromUser($user);
$userResponse = [];
if($user) {
$userResponse = $user;
// entry
$arr = array(
'fields' => array(
array(
'name' => 'email',
'value' => $user->email
),
array(
'name' => 'name',
'value' => $user->name
)
),
'context' => array(
"pageUri" => env('REACT_SERVER_BASE_URL').'/signup',
"pageName" => "Signup page"
),
);
$post_json = json_encode($arr);
HubspotHelpers::storeForm($post_json, env('HUBSPOT_PORTAL_ID'), env('HUBSPOT_SIGNUP_FORM_GUID'));
}
$data = array(
'token' => "Bearer " . $token,
'user' => $userResponse,
);
$message = "User registered successfully";
return WagEnabledHelpers::apiJsonResponse($data, "", $message);
}
}
================================================
FILE: app/Http/Controllers/Api/V1/Auth/ResetPasswordController.php
================================================
middleware('guest');
}
public function showResetForm(Request $request, $token = null)
{
return view('api.auth.passwords.reset')->with(
['token' => $token, 'email' => $request->email]
);
}
public function resetPassword(Request $request)
{
$statusCodes = config("wagenabled.status_codes");
$validator = Validator::make($request->all(), [
'token' => 'required',
'password' => 'required|confirmed|min:6'
]);
if ($validator->fails()) {
return WagEnabledHelpers::apiValidationFailResponse($validator);
}
$input = $request->all();
$code = $statusCodes['normal_error'];
$passwordReset = PasswordReset::where([
['token', $request->token],
])->first();
if ($passwordReset) {
if (Carbon::parse($passwordReset->updated_at)->addMinutes(300)->isPast()) {
$passwordReset->delete();
$message = 'This password reset link is expired, Please try agin';
}
else {
$user = User::where('email', $passwordReset->email)->first();
if ($user) {
$user->password = bcrypt($input['password']);
$user->save();
PasswordReset::where('email', $user->email)->delete();
$code = $statusCodes['success'];
$message = "Password reset successfully!";
}
else {
$message = "Please try again";
}
}
}
else {
$message = "Invalid user for reset password";
}
return WagEnabledHelpers::apiJsonResponse($responseData = [], $code, $message);
}
protected function sendResetResponse($response)
{
\Auth::logout();
return redirect("thank-you");
}
}
================================================
FILE: app/Http/Controllers/Api/V1/Auth/SocialLoginController.php
================================================
statusCodes = config("wagenabled.status_codes");
}
public function login(Request $request) {
$validator = Validator::make($request->all(), [
'name' => 'required',
'email' => 'required|email',
'provider' => 'required|in:facebook,google,normal',
'provider_id' => 'required',
'latitude' => 'nullable',
'longitude' => 'nullable',
]);
if ($validator->fails()) {
return WagEnabledHelpers::apiValidationFailResponse($validator);
}
if ($this->hasTooManyLoginAttempts($request)) {
$this->fireLockoutEvent($request);
return $this->sendLockoutResponse($request);
}
$responseData =[];
$login_email = $request->get("email", "");
$input = $request->only(['provider', 'provider_id', 'name', 'latitude', 'longitude']);
$user = "";
$LoginUserAlreadyExists = User::where("email", $login_email )->withTrashed()->first();
if( $LoginUserAlreadyExists ) {
if( $LoginUserAlreadyExists->deleted_at == null ) {
if($LoginUserAlreadyExists->provider_id != $input['provider_id'] || $LoginUserAlreadyExists->provider != $input['provider'] ) {
$LoginUserAlreadyExists->update($input);
}
$user = $LoginUserAlreadyExists;
} else {
return WagEnabledHelpers::apiJsonResponse($responseData, config('wagenabled.status_codes.auth_fail'), "Please contact Wag Enabled support");
}
}
else {
return WagEnabledHelpers::apiJsonResponse($responseData, config('wagenabled.status_codes.auth_fail'), "Account not found please signup");
/* $input["email"] = $login_email;
$user = User::create($input);
// entry
$arr = array(
'fields' => array(
array(
'name' => 'email',
'value' => $user->email
),
array(
'name' => 'name',
'value' => $user->name
)
),
'context' => array(
"pageUri" => env('REACT_SERVER_BASE_URL').'/signup',
"pageName" => "Signup page"
),
);
$post_json = json_encode($arr);
HubspotHelpers::storeForm($post_json, env('HUBSPOT_PORTAL_ID'), env('HUBSPOT_SIGNUP_FORM_GUID'));*/
}
$token = JWTAuth::fromUser($user);
return response()->json([
'token' => "Bearer " . $token,
'user' => $user,
]);
}
}
================================================
FILE: app/Http/Controllers/Api/V1/Auth/SocialSignUpController.php
================================================
statusCodes = config("wagenabled.status_codes");
}
public function signup(Request $request) {
$validator = Validator::make($request->all(), [
'name' => 'required',
'email' => 'required|email',
'provider' => 'required|in:facebook,google,normal',
'provider_id' => 'required',
'latitude' => 'nullable',
'longitude' => 'nullable',
]);
if ($validator->fails()) {
return WagEnabledHelpers::apiValidationFailResponse($validator);
}
if ($this->hasTooManyLoginAttempts($request)) {
$this->fireLockoutEvent($request);
return $this->sendLockoutResponse($request);
}
$responseData =[];
$login_email = $request->get("email", "");
$input = $request->only(['provider', 'provider_id', 'name', 'latitude', 'longitude']);
$user = "";
$LoginUserAlreadyExists = User::where("email", $login_email )->withTrashed()->first();
if( $LoginUserAlreadyExists ) {
return WagEnabledHelpers::apiJsonResponse($responseData, config('wagenabled.status_codes.auth_fail'), "Already resisted with same email please login.");
}
else {
$input["email"] = $login_email;
$user = User::create($input);
// entry
$arr = array(
'fields' => array(
array(
'name' => 'email',
'value' => $user->email
),
array(
'name' => 'name',
'value' => $user->name
)
),
'context' => array(
"pageUri" => env('REACT_SERVER_BASE_URL').'/signup',
"pageName" => "Signup page"
),
);
$post_json = json_encode($arr);
HubspotHelpers::storeForm($post_json, env('HUBSPOT_PORTAL_ID'), env('HUBSPOT_SIGNUP_FORM_GUID'));
}
$token = JWTAuth::fromUser($user);
return response()->json([
'token' => "Bearer " . $token,
'user' => $user,
]);
}
}
================================================
FILE: app/Http/Controllers/Api/V1/Auth/VerificationController.php
================================================
middleware('auth');
$this->middleware('signed')->only('verify');
$this->middleware('throttle:6,1')->only('verify', 'resend');
}
}
================================================
FILE: app/Http/Controllers/Api/V1/BusinessRequestController.php
================================================
statusCodes = config("wagenabled.status_codes");
$this->responseData = [];
$this->message = "Please, try again!";
$this->code = config("wagenabled.status_codes.normal_error");
}
public function store(Request $request)
{
$customMessages = [
'unique' => 'Business request already sent using this email address.'
];
$validator = Validator::make($request->all(), [
'first_name' => 'required | max: 255',
'last_name' => 'required | max: 255',
'business_name' => 'required | max: 255',
'contact_email' => 'required|email|unique:business_requests',
'message' => 'required',
], $customMessages);
if ($validator->fails()) {
return WagEnabledHelpers::apiValidationFailResponse($validator);
}
$input = $request->only(['first_name', 'last_name', 'business_name', 'contact_email', 'message']);
$isSaved = BusinessRequest::create($input);
if ($isSaved) {
Mail::to(config('wagenabled.send_contact_to_email'))->send(new SendBusinessRequestMail($isSaved));
$this->message = "Your business request has been received, We'll get back to you shortly.";
$this->code = $this->statusCodes['success'];
}
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
}
================================================
FILE: app/Http/Controllers/Api/V1/ContactController.php
================================================
statusCodes = config("wagenabled.status_codes");
$this->responseData = [];
$this->message = "Please, try again!";
$this->code = config("wagenabled.status_codes.normal_error");
}
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'name' => 'required | max: 255',
'email' => 'required | email',
'message' => 'required',
]);
if ($validator->fails()) {
return WagEnabledHelpers::apiValidationFailResponse($validator);
}
$input = $request->only(['name', 'email', 'message']);
$isSaved = Contact::create($input);
if ($isSaved) {
// send email to Wag Enabled
Mail::to(config('wagenabled.send_contact_to_email'))->send(new SendContactMail($isSaved));
$this->message = "Your message has been received, We'll get back to you shortly.";
$this->code = $this->statusCodes['success'];
}
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
}
================================================
FILE: app/Http/Controllers/Api/V1/HomeController.php
================================================
statusCodes = config("wagenabled.status_codes");
$this->responseData = [];
$this->message = "Please, try again!";
$this->code = config("wagenabled.status_codes.normal_error");
}
public function getTestimonialCounts(Request $request)
{
$this->responseData["watchAndLearnCounts"] = WatchAndLearn::count();
$this->responseData["petProCounts"] = PetPro::count();
$this->responseData["dealCounts"] = PetProDeal::active()->count();
$this->message = "";
$this->code = $this->statusCodes['success'];
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
public function getFeaturedPetProList(Request $request)
{
$this->responseData["featured_pet_pro_list"] = PetPro::select(['id', 'slug', 'featured_title', 'store_name', 'featured_description', 'is_featured_pet_pro' ])
->with('coverImage')
->orderBy('id', 'desc')
->where('is_featured_pet_pro', 1)
->get();
$this->message = "";
$this->code = $this->statusCodes['success'];
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
public function getTestimonialList(Request $request)
{
$this->responseData["testimonial_list"] = Testimonial::all();
$this->message = "";
$this->code = $this->statusCodes['success'];
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
}
================================================
FILE: app/Http/Controllers/Api/V1/NewsletterController.php
================================================
statusCodes = config("wagenabled.status_codes");
$this->responseData = [];
$this->message = "Please, try again!";
$this->code = config("wagenabled.status_codes.normal_error");
}
public function store(Request $request)
{
$customMessages = [
'unique' => 'Your email address already registered'
];
$validator = Validator::make($request->all(), [
'email' => 'required|email|unique:newsletters',
'first_name' => 'required | max: 255',
'zipcode' => ' max: 20',
], $customMessages);
if ($validator->fails()) {
return WagEnabledHelpers::apiValidationFailResponse($validator);
}
$input = $request->only(['email', 'first_name', 'zipcode']);
$city = City::where('zipcode', $input["zipcode"])->first();
if ( !$city ) {
$validator->getMessageBag()->add('zipcode', 'Please enter correct zipcode');
return WagEnabledHelpers::apiValidationFailResponse($validator);
}
$isSaved = Newsletter::create($input);
if ($isSaved) {
$arr = array(
'fields' => array(
array(
'name' => 'email',
'value' => $isSaved->email
),
array(
'name' => 'firstname',
'value' => $isSaved->first_name
),
array(
'name' => 'zip',
'value' => $isSaved->zipcode
)
),
'context' => array(
"pageUri" => env('REACT_SERVER_BASE_URL'),
"pageName" => "Newsletter page"
),
);
$post_json = json_encode($arr);
HubspotHelpers::storeForm($post_json, env('HUBSPOT_PORTAL_ID'), env('HUBSPOT_NEWSLETTER_FORM_GUID'));
$this->message = " Thank you for subscribing to Wag Enabled!";
$this->code = $this->statusCodes['success'];
}
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
}
================================================
FILE: app/Http/Controllers/Api/V1/PetProController.php
================================================
statusCodes = config("wagenabled.status_codes");
$this->responseData = [];
$this->message = "Please, try again!";
$this->code = config("wagenabled.status_codes.normal_error");
}
public function careFromBestList(Request $request)
{
$this->responseData["care_from_best_list"] = PetPro::withCount(['deals' => function ($query) {
$query->active();
}])
->with('coverImage')
->orderBy('avg_rating', 'desc')
->orderBy('id', 'desc')
->take(config('wagenabled.no_of_care_from_best_display', 6))
->get();
foreach ($this->responseData["care_from_best_list"] as $key => $petPro) {
$petPro['categories'] = PetProSelectedCategory::leftjoin('pet_pro_categories', 'pet_pro_categories.id', '=', 'pet_pro_selected_categories.category_id')
->select([
'pet_pro_categories.id',
'pet_pro_categories.name as name',
])
->where('pet_pro_selected_categories.pet_pro_id', '=', $petPro->id)
->get();
}
$this->message = "";
$this->code = $this->statusCodes['success'];
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
public function getList(Request $request, $page = 1)
{
$input = $request->only(['latitude', 'longitude']);
$perPage = config("wagenabled.per_page_pet_pro_results", 6);
$skip = ($page > 1) ? ($perPage * ($page - 1)) : 0;
$is_seach_by_location = false;
$category_id = $request->get('category_id', "");
$business_id = $request->get('business_id', "");
$search = $request->get('search', "");
$sort_by = $request->get('sort_by', "");
$pet_pros = PetPro::withCount(['deals' => function ($query) {
$query->active();
},
])
->with('coverImage', 'city', 'state');
$category_id = json_decode($category_id);
if ($category_id != null && count($category_id)) {
$allCatValue = false;
$categoryIdArray = [];
foreach ($category_id as $key => $value) {
if ($value->value != "") {
$categoryIdArray[] = $value->value;
} else {
$allCatValue = true;
}
}
if (!$allCatValue) {
$selectedCategoryPetProIds = PetProSelectedCategory::whereIn('category_id', $categoryIdArray)->pluck('pet_pro_id')->toArray();
$pet_pros = $pet_pros->whereIn('id', $selectedCategoryPetProIds);
}
}
$business_id = json_decode($business_id);
if ($business_id != null && count($business_id)) {
$allvalue = false;
$businessIdArray = [];
foreach ($business_id as $key => $value) {
if ($value->value != "") {
$businessIdArray[] = $value->value;
} else {
$allvalue = true;
}
}
if (!$allvalue) {
$selectedBusinessPetProIds = PetProSelectedBusinessNature::whereIn('business_id', $businessIdArray)->pluck('pet_pro_id')->toArray();
$pet_pros = $pet_pros->whereIn('id', $selectedBusinessPetProIds);
}
}
if ($search) {
// $pet_pros = $pet_pros->Where('store_name', 'like', '%'.$search.'%' );
$pet_pros = $pet_pros->where(function ($query) use ($search) {
$query
->where('store_name', 'like', '%' . $search . '%')
->orWhere('description', 'like', '%' . $search . '%')
->orWhereHas('servicesOffered', function ($q) use ($search) {
$q->where('pet_pro_services_offered.service', 'like', '%' . $search . '%'); // '=' is optional
});
});
}
// if( $sort_by == 'nearest' ) {
/*if( empty($input["longitude"]) || empty($input["latitude"]) ) {
$user = Auth::user();
if ($user) {
if($user->city) {
$input["longitude"] = $user->city->city_latitude;
$input["latitude"] = $user->city->city_longitude;
}
}
}*/
if (!(empty($input["longitude"]) || empty($input["latitude"]))) {
$is_seach_by_location = true;
//$pet_pros = $pet_pros->selectRaw('pet_pros.*, ( 6367 * acos( cos( radians( ? ) ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians( ? ) ) + sin( radians( ? ) ) * sin( radians( latitude ) ) ) ) AS distance', [$input["latitude"], $input["longitude"], $input["latitude"]]);
$pet_pros_with_lat_long = DB::table('pet_country_state_city')->selectRaw('pet_country_state_city.*, ( 6367 * acos( cos( radians( ? ) ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians( ? ) ) + sin( radians( ? ) ) * sin( radians( latitude ) ) ) ) AS distance', [$input["latitude"], $input["longitude"], $input["latitude"]]);
}
// }
$totalRecords = $pet_pros->count();
$this->responseData = [
"pet_pro_list" => [],
];
if ($totalRecords > 0) {
$petProArr = clone $pet_pros;
$totalRecords = count($petProArr->get());
//if( $sort_by ) {
switch ($sort_by) {
case 'popular':
$pet_pros = $pet_pros->orderBy("avg_rating", "DESC")
->orderBy("id", "DESC");
break;
case 'deal_offered':
$pet_pros = $pet_pros->orderBy("deals_count", "DESC")
->orderBy("id", "DESC");
break;
case 'latest':
$pet_pros = $pet_pros->orderBy("id", "DESC");
break;
default:
$pet_pros = $pet_pros->orderBy("id", "DESC");
break;
}
//}
if ($is_seach_by_location) {
$pet_pro_list = $pet_pros->get();
} else {
$pet_pro_list = $pet_pros->skip($skip)
->take($perPage)
->get();
}
$this->responseData["pet_pro_list"] = $pet_pro_list;
foreach ($this->responseData["pet_pro_list"] as $key => $petPro) {
$petPro['categories'] = PetProSelectedCategory::leftjoin('pet_pro_categories', 'pet_pro_categories.id', '=', 'pet_pro_selected_categories.category_id')
->select([
'pet_pro_categories.id',
'pet_pro_categories.name as name',
])
->where('pet_pro_selected_categories.pet_pro_id', '=', $petPro->id)
->get();
}
}
if ($is_seach_by_location) {
$pet_pros_with_lat_long = $pet_pros_with_lat_long->orderBy(\DB::raw('-`distance`'), 'desc')->havingRaw('distance <= ?', [25]); //->orHavingRaw('distance is null')
$this->responseData["pet_pro_list"] = $this->addMatchOne($pet_pros_with_lat_long->get(), $this->responseData["pet_pro_list"]);
$totalPages = ceil(count($this->responseData["pet_pro_list"]) / $perPage);
$this->responseData["total_page"] = $totalPages;
$this->responseData["total_records"] = count($this->responseData["pet_pro_list"]);
$skiparray = 0;
$limitarray = $perPage;
if ($page > 1) {
$skiparray = ($perPage * $page) - $perPage;
$limitarray = ($perPage * $page) - 1;
}
$this->responseData["pet_pro_list"] = array_slice($this->responseData["pet_pro_list"], $skiparray, $limitarray);
$this->message = "";
$this->code = $this->statusCodes['success'];
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
} else {
$totalPages = ceil($totalRecords / $perPage);
$this->responseData["total_page"] = $totalPages;
$this->responseData["total_records"] = $totalRecords;
$this->message = "";
$this->code = $this->statusCodes['success'];
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
}
public function getMapList(Request $request)
{
$input = $request->only(['latitude', 'longitude']);
$is_seach_by_location = false;
$category_id = $request->get('category_id', "");
$search = $request->get('search', "");
$pet_pros = PetPro::withCount(['deals' => function ($query) {
$query->active();
},
])
->with('coverImage');
if ($category_id) {
$selectedCategoryPetProIds = PetProSelectedCategory::where('category_id', $category_id)->pluck('pet_pro_id')->toArray();
$pet_pros = $pet_pros->whereIn('id', $selectedCategoryPetProIds);
}
if ($search) {
$pet_pros = $pet_pros->where(function ($query) use ($search) {
$query
->where('store_name', 'like', '%' . $search . '%')
->orWhere('description', 'like', '%' . $search . '%')
->orWhereHas('servicesOffered', function ($q) use ($search) {
$q->where('pet_pro_services_offered.service', 'like', '%' . $search . '%'); // '=' is optional
});
});
}
if (!(empty($input["longitude"]) || empty($input["latitude"]))) {
$is_seach_by_location = true;
$pet_pros = $pet_pros->selectRaw('pet_pros.*, ( 6367 * acos( cos( radians( ? ) ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians( ? ) ) + sin( radians( ? ) ) * sin( radians( latitude ) ) ) ) AS distance', [$input["latitude"], $input["longitude"], $input["latitude"]])->orderBy(\DB::raw('-`distance`'), 'desc')->havingRaw('distance <= ?', [25])->orHavingRaw('distance is null');
}
$pet_pro_list = $pet_pros->get();
$this->responseData["pet_pro_list"] = $pet_pro_list;
$this->message = "";
$this->code = $this->statusCodes['success'];
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
public function getDetails(Request $request, $slug)
{
$pet_pro = PetPro::with(['country', 'state', 'city', 'otherImage', 'coverImage', 'images', 'servicesOffered',
'deals' => function ($query) {
$query->active();
},
'events' => function ($query) {
$query->active();
},
])
->Where('slug', $slug)
->first();
if ($pet_pro) {
$pet_pro['categories'] = PetProSelectedCategory::leftjoin('pet_pro_categories', 'pet_pro_categories.id', '=', 'pet_pro_selected_categories.category_id')
->select([
'pet_pro_categories.id',
'pet_pro_categories.name as name',
])
->where('pet_pro_selected_categories.pet_pro_id', '=', $pet_pro->id)
->get();
$this->responseData["is_liked"] = 0;
$user = Auth::user();
if ($user) {
if ($user->count() != 0) {
$this->responseData["is_liked"] = UserLovedPetPro::where("user_id", $user->id)->where("pet_pro_id", $pet_pro->id)->first() ? 1 : 0;
}
}
$this->responseData["per_pro"] = $pet_pro;
$this->message = "";
$this->code = $this->statusCodes['success'];
}
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
public function likeDislikePetPro(Request $request, $slug)
{
$user = Auth::user();
if ($user->count() == 0) {
return WagEnabledHelpers::apiUserNotFoundResponse();
}
$pet_pro = PetPro::Where('slug', $slug)
->first();
if ($pet_pro) {
$isLoved = UserLovedPetPro::where('user_id', $user->id)
->where('pet_pro_id', $pet_pro->id)
->first();
if ($isLoved) {
$isLoved->delete();
$this->responseData["is_liked"] = 0;
$this->message = "Pet pro removed from your profile";
} else {
$isSaved = UserLovedPetPro::create([
'user_id' => $user->id,
'pet_pro_id' => $pet_pro->id,
]);
$this->responseData["is_liked"] = 1;
$this->message = "Pet pro saved to your profile";
}
$this->code = $this->statusCodes['success'];
}
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
public function storeReview(Request $request, $slug)
{
$user = Auth::user();
if ($user->count() == 0) {
return WagEnabledHelpers::apiUserNotFoundResponse();
}
$validator = Validator::make($request->all(), [
'rate' => 'required',
'description' => 'required',
]);
if ($validator->fails()) {
return WagEnabledHelpers::apiValidationFailResponse($validator);
}
$pet_pro = PetPro::Where('slug', $slug)
->first();
if ($pet_pro) {
$input = $request->only(['rate', 'description']);
$input["user_id"] = $user->id;
$input["name"] = $user->name;
$input["pet_pro_id"] = $pet_pro->id;
$isSaved = PetProReview::create($input);
if ($isSaved) {
$no = 1;
if ($pet_pro->avg_rating != 0) {
$no = ($pet_pro->total_rated / $pet_pro->avg_rating) + 1;
}
$total_rated = $pet_pro->total_rated + $input["rate"];
$avg_rating = ($total_rated / $no);
$pet_pro_details["total_rated"] = $total_rated;
$pet_pro_details["avg_rating"] = $avg_rating;
$pet_pro->update($pet_pro_details);
$this->responseData["avg_rating"] = round($avg_rating, 2);
$this->responseData["pet_pro_review"] = [PetProReview::with('user')
->where("id", $isSaved->id)
->first()];
$this->message = "Thank you for leaving a review!";
$this->code = $this->statusCodes['success'];
}
}
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
public function getReviewList(Request $request, $slug, $lastId = 0)
{
$perPage = config("wagenabled.no_of_review_display", 3);
$pet_pro = PetPro::Where('slug', $slug)
->first();
if ($pet_pro) {
$this->responseData["is_more_review"] = 0;
$this->responseData["pet_pro_reviews"] = [];
$this->responseData["reviews_count"] = 0;
$this->responseData["total_records"] = 0;
if ($lastId == 0) {
$last_pet_pro_review = PetProReview::select('id')
->where("pet_pro_id", $pet_pro->id)
->orderBy('id', 'desc')
->first();
if ($last_pet_pro_review) {
$lastId = $last_pet_pro_review->id;
$lastId++;
}
}
if ($lastId != 0) {
$reviews = PetProReview::with('user')
->where("pet_pro_id", $pet_pro->id);
$reviews_count = clone $reviews;
$reviews_count = $reviews_count->count();
$reviews = $reviews->where("id", "<", $lastId)
->orderBy("id", "desc")
->take($perPage)
->get();
$last_record = PetProReview::where("pet_pro_id", $pet_pro->id)
->where("id", "<", $lastId)
->orderBy("id", "desc")
->skip($perPage)
->first();
$is_more_records = ($last_record) ? 1 : 0;
$this->responseData["is_more_review"] = $is_more_records;
$this->responseData["pet_pro_reviews"] = $reviews;
$this->responseData["reviews_count"] = $reviews->count();
$this->responseData["total_records"] = $reviews_count;
}
$this->message = "";
$this->code = $this->statusCodes['success'];
}
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
public function deleteReview(Request $request, $slug, $id)
{
$user = Auth::user();
if ($user->count() == 0) {
return WagEnabledHelpers::apiUserNotFoundResponse();
}
$pet_pro = PetPro::Where('slug', $slug)
->first();
if ($pet_pro) {
$petProReview = PetProReview::where('user_id', $user->id)
->where('pet_pro_id', $pet_pro->id)
->where('id', $id)
->first();
if ($petProReview) {
$no = 1;
if ($pet_pro->avg_rating != 0) {
$no = ($pet_pro->total_rated / $pet_pro->avg_rating) - 1;
}
$total_rated = $pet_pro->total_rated - $petProReview->rate;
if ($no) {
$avg_rating = ($total_rated / $no);
} else {
$avg_rating = $total_rated;
}
$pet_pro_details["total_rated"] = $total_rated;
$pet_pro_details["avg_rating"] = $avg_rating;
$pet_pro->update($pet_pro_details);
$petProReview->delete();
$this->responseData["avg_rating"] = round($avg_rating, 2);
$this->message = "review deleted successfully";
$this->code = $this->statusCodes['success'];
}
}
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
public function claimDeal(Request $request, $slug, $pet_deal_id)
{
$user = Auth::user();
if ($user->count() == 0) {
return WagEnabledHelpers::apiUserNotFoundResponse();
}
$pet_pro = PetPro::Where('slug', $slug)
->first();
if ($pet_pro) {
$pet_pro_deal = PetProDeal::where('pet_pro_id', $pet_pro->id)
->find($pet_deal_id);
if ($pet_pro_deal) {
$isClaimed = PetProDealClaim::where('user_id', $user->id)
->where('pet_pro_deal_id', $pet_pro_deal->id)
->first();
if (!$isClaimed) {
$input["user_id"] = $user->id;
$input["pet_pro_deal_id"] = $pet_pro_deal->id;
$isSaved = PetProDealClaim::create($input);
if ($isSaved) {
$this->message = "Deal claimed successfully";
$this->code = $this->statusCodes['success'];
}
} else {
$this->message = "Already claimed this deal";
}
}
}
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
public function getCategoryList(Request $request)
{
$category_data = PetProCategory::select(['id', 'name'])
->orderBy('name')
->get();
$category_list = [];
foreach ($category_data as $category) {
$category_list[] = ["value" => $category->id, "label" => $category->name];
}
$this->responseData["category_list"] = $category_list;
$this->message = "";
$this->code = $this->statusCodes['success'];
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
public function getBusinessNatureList(Request $request)
{
$business_nature_data = BusinessNature::select(['id', 'name'])
->orderBy('name')
->get();
$business_nature_list = [];
foreach ($business_nature_data as $business) {
$business_nature_list[] = ["value" => $business->id, "label" => $business->name];
}
$this->responseData["business_nature_list"] = $business_nature_list;
$this->message = "";
$this->code = $this->statusCodes['success'];
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
public function addMatchOne($petProsLatLongArr, $petProsArr)
{$petProsLatestArray = [];
foreach ($petProsArr as $key1 => $match) {
foreach ($petProsLatLongArr as $key => $value) {
if ($match->id == $value->pet_pro_id) {
$petProsLatestArray[] = $match;
}
}
}
return json_decode(json_encode($petProsLatestArray));
}
public function addLocationAnotherTable()
{
$pet_pros = PetPro::all();
foreach ($pet_pros as $key => $value) {
if ($value->state_id && $value->city_id) {
DB::table('pet_country_state_city')->insert([
'pet_pro_id' => $value->id,
'country_id' => 231,
'state_id' => $value->state_id,
'city_id' => $value->city_id,
'latitude' => $value->latitude,
'longitude' => $value->longitude,
]);
}
}
}
/////////////////
//By Umar
////////////////
public function newPetPros(UserPetProRequest $request)
{
$pet_pro_input = $request->only(['store_name', 'website_url', 'email', 'phone_number', 'address_line_1', 'address_line_2', 'postal_code', 'description']);
$pet_pro_input['user_id'] = Auth::user()->id;
$pet_pro_input['user_type'] = 'User';
$time_input = $request->only(['monday_open', 'monday_close', 'tuesday_open', 'tuesday_close', 'wednesday_open', 'wednesday_close', 'thursday_open', 'thursday_close', 'friday_open', 'friday_close', 'saturday_open', 'saturday_close', 'sunday_open', 'sunday_close']);
$inputCategories = $request['category_id'];
$inputBusinessNatures = $request['business_id'];
try {
if ($request->get('is_featured_pet_pro')) {
$pet_pro_input['is_featured_pet_pro'] = 1;
$pet_pro_input['featured_title'] = $request->get('featured_title');
$pet_pro_input['featured_description'] = $request->get('featured_description');
}
$pet_pro_input['new_detail'] = json_encode($pet_pro_input);
$isSaved = PetPro::create($pet_pro_input);
$pet_pro = PetPro::where('id', $isSaved->id)->first();
if ($request->country_id && $request->state_id && $request->city_id) {
foreach ($request->country_id as $index => $row) {
$city_latitude = null;
$city_longitude = null;
$city = City::where('id', $request->city_id[$index])->first();
if ($city) {
$city_latitude = $city->city_latitude;
$city_longitude = $city->city_longitude;
}
$pet_pro->countries()->attach($row, ['state_id' => $request->state_id[$index], 'city_id' => $request->city_id[$index], 'latitude' => $city_latitude, 'longitude' => $city_longitude]);
}
}
if ($isSaved) {
if (isset($inputCategories) && count($inputCategories)) {
$currentTime = Carbon::now();
$insertArray = [];
foreach ($inputCategories as $categoryId) {
$insertArray[] = [
"pet_pro_id" => $isSaved->id,
"category_id" => $categoryId,
"created_at" => $currentTime,
"updated_at" => $currentTime,
];
}
$isSaved->categories()->insert($insertArray);
}
if (isset($inputBusinessNatures) && count($inputBusinessNatures)) {
$currentTime = Carbon::now();
$insertArray = [];
foreach ($inputBusinessNatures as $businessId) {
$insertArray[] = [
"pet_pro_id" => $isSaved->id,
"business_id" => $businessId,
"created_at" => $currentTime,
"updated_at" => $currentTime,
];
}
$isSaved->business()->insert($insertArray);
}
if ($isSaved->address_line_1 || $isSaved->address_line_2 || $isSaved->city_id || $isSaved->state_id || $isSaved->postal_code) {
$addressLatLong = GoogleMapHelper::getLatLongFromAddress($isSaved);
$isSaved->update($addressLatLong);
}
$days = config('wagenabled.days');
foreach ($days as $day) {
$open_day = $day . "_open";
$close_day = $day . "_close";
if (isset($time_input[$open_day])) {
$time_input[$open_day] = Carbon::parse($time_input[$open_day]/*, $isSaved->timezone*/)->format('H:i:s');
} else {
$time_input[$open_day] = "";
}
if (isset($time_input[$close_day])) {
$time_input[$close_day] = Carbon::parse($time_input[$close_day]/*, $isSaved->timezone*/)->format('H:i:s');
} else {
$time_input[$close_day] = "";
}
PetProTimetable::create([
"pet_pro_id" => $isSaved->id,
"day" => $day,
"open" => $time_input[$open_day] ? $time_input[$open_day] : null,
"close" => $time_input[$close_day] ? $time_input[$close_day] : null,
]);
}
$services = $request->get('services');
if ($services) {
foreach ($services as $service) {
PetProServicesOffered::create([
"pet_pro_id" => $isSaved->id,
"service" => $service,
]);
}
}
$galleryInput["pet_pro_id"] = $isSaved->id;
if ($request->row) {
foreach ($request->row as $index => $row) {
if (isset($row["image"])) {
$galleryInput["is_cropped_image"] = 1;
$isCreateThumb = "1";
$imageStore = WagEnabledHelpers::saveUploadedImage($row["image"], config("wagenabled.path.doc.pet_pro_gallery_image_path"), "", $isCreateThumb, $height = 250, $width = 380, $row['cropped_image'], $isThumbOptimized = true);
if (isset($imageStore['error_msg']) && $imageStore['error_msg'] == '' && isset($imageStore['name']) && !empty($imageStore['name'])) {
$galleryInput["gallery_image"] = $imageStore['name'];
}
if ($request->get('is_cover_image')) {
if ($index == $request->get('is_cover_image')) {
$galleryInput['is_cover_image'] = 1;
} else {
$galleryInput['is_cover_image'] = 0;
}
}
$isSaved = PetProGallery::create($galleryInput);
}
}
}
$petPro = PetPro::find($isSaved->id);
$petPro->status = 'pending';
$petPro->update();
return WagEnabledHelpers::apiJsonResponse($petPro, config("wagenabled.status_codes.success"), 'Pet pro created');
}
return WagEnabledHelpers::apiJsonResponse([], config("wagenabled.status_codes.normal_error"), 'Sorry, Something went wrong please try again');
} catch (\Exception $e) {
return WagEnabledHelpers::apiJsonResponse([], config("wagenabled.status_codes.server_side"), $e->getMessage());
}
}
public function completePetPros(UserPetProRequest $request, $id)
{
$inputCategories = $request->get("category_id", []);
$inputBusinessNatures = $request->get("business_id", []);
$city = City::where('id', $request->get("city_id"))->first();
try {
$result = PetPro::find($id);
if ($result) {
$pet_pro_input = $request->only(['store_name', 'website_url', 'email', 'phone_number', 'address_line_1', 'address_line_2', 'city_id', 'state_id', 'postal_code', 'description', 'donation_link']);
$time_input = $request->only(['monday_open', 'monday_close', 'tuesday_open', 'tuesday_close', 'wednesday_open', 'wednesday_close', 'thursday_open', 'thursday_close', 'friday_open', 'friday_close', 'saturday_open', 'saturday_close', 'sunday_open', 'sunday_close']);
if ($request->get('is_featured_pet_pro')) {
$pet_pro_input['is_featured_pet_pro'] = 1;
$pet_pro_input['featured_title'] = $request->get('featured_title');
$pet_pro_input['featured_description'] = $request->get('featured_description');
} else {
$pet_pro_input['is_featured_pet_pro'] = 0;
$pet_pro_input['featured_title'] = null;
$pet_pro_input['featured_description'] = null;
}
if ($request->get('is_featured_pet_pro')) {
$pet_pro_input['is_featured_pet_pro'] = 1;
$pet_pro_input['featured_title'] = $request->get('featured_title');
$pet_pro_input['featured_description'] = $request->get('featured_description');
} else {
$pet_pro_input['is_featured_pet_pro'] = 0;
$pet_pro_input['featured_title'] = null;
$pet_pro_input['featured_description'] = null;
}
$isSaved = $pet_pro_input;
$pet_pro_input = json_encode($pet_pro_input);
$result->update([
'new_detail' => $pet_pro_input,
]);
if ($isSaved) {
$currentTime = Carbon::now();
if (count($inputCategories)) {
foreach ($inputCategories as $categoryId) {
$insertArray = [
"pet_pro_id" => $result->id,
"category_id" => $categoryId,
];
$res = $result->categories()->updateOrCreate($insertArray, $insertArray);
$insertedCategories[] = $categoryId;
}
}
if (count($inputBusinessNatures)) {
foreach ($inputBusinessNatures as $businessId) {
$insertArray = [
"pet_pro_id" => $result->id,
"business_id" => $businessId,
];
$res = $result->business()->updateOrCreate($insertArray, $insertArray);
$insertedBusiness[] = $businessId;
}
}
if (isset($insertedCategories)) {
$result->categories()->whereNotIn("category_id", $insertedCategories)->delete();
}
if (isset($insertedBusiness)) {
$result->business()->whereNotIn("business_id", $insertedBusiness)->delete();
}
if ($city) {
PetPro::where('id', $id)->update([
"latitude" => $city->city_latitude,
"longitude" => $city->city_longitude,
]);
}
if ($result->address_line_1 || $result->address_line_2 || $result->city_id || $result->state_id || $result->postal_code) {
$addressLatLong = GoogleMapHelper::getLatLongFromAddress($result);
$result->update($addressLatLong);
} elseif (!$city) {
$returnArr = [
"latitude" => null,
"longitude" => null,
];
$result->update($returnArr);
}
$days = config('wagenabled.days');
foreach ($days as $day) {
$open_day = $day . "_open";
$close_day = $day . "_close";
if (isset($time_input[$open_day])) {
$time_input[$open_day] = Carbon::parse($time_input[$open_day]/*, $result->timezone*/)->format('H:i:s');
} else {
$time_input[$open_day] = "";
}
if (isset($time_input[$close_day])) {
$time_input[$close_day] = Carbon::parse($time_input[$close_day]/*, $result->timezone*/)->format('H:i:s');
} else {
$time_input[$close_day] = "";
}
$pet_pro_timetable = PetProTimetable::where("pet_pro_id", $result->id)
->where("day", $day)
->first();
if ($pet_pro_timetable) {
$pet_pro_timetable->open = $time_input[$open_day] ? $time_input[$open_day] : null;
$pet_pro_timetable->close = $time_input[$close_day] ? $time_input[$close_day] : null;
$pet_pro_timetable->save();
} else {
PetProTimetable::create([
"pet_pro_id" => $result->id,
"day" => $day,
"open" => $time_input[$open_day] ? $time_input[$open_day] : null,
"close" => $time_input[$close_day] ? $time_input[$close_day] : null,
]);
}
}
$services = $request->get('services');
if ($services) {
foreach ($services as $service) {
PetProServicesOffered::create([
"pet_pro_id" => $result->id,
"service" => $service,
]);
}
}
$old_services = $request->get('old_services');
if ($old_services) {
foreach ($old_services as $old_service_id => $service_name) {
PetProServicesOffered::where('id', $old_service_id)->update([
"service" => $service_name,
]);
}
}
$deletedServices = $request->get('deletedServices');
if ($deletedServices) {
$delete_services = explode(",", $deletedServices);
foreach ($delete_services as $id) {
PetProServicesOffered::where('id', $id)->delete();
}
}
$galleryInput["pet_pro_id"] = $result->id;
if ($request->row) {
foreach ($request->row as $index => $row) {
if (isset($row["image"])) {
$isCreateThumb = "1";
$galleryInput["is_cropped_image"] = 1;
$imageStore = WagEnabledHelpers::saveUploadedImage($row["image"], config("wagenabled.path.doc.pet_pro_gallery_image_path"), "", $isCreateThumb, $height = 250, $width = 380, $row['cropped_image'], $isThumbOptimized = true);
if (isset($imageStore['error_msg']) && $imageStore['error_msg'] == '' && isset($imageStore['name']) && !empty($imageStore['name'])) {
$galleryInput["gallery_image"] = $imageStore['name'];
}
if ($request->get('is_cover_image')) {
if ($index == $request->get('is_cover_image')) {
$galleryInput['is_cover_image'] = 1;
PetProGallery::where('pet_pro_id', $result->id)->update(['is_cover_image' => 0]);
} else {
$galleryInput['is_cover_image'] = 0;
}
}
PetProGallery::create($galleryInput);
}
}
}
if ($request->old_row) {
foreach ($request->old_row as $index => $row) {
$galleryResult = PetProGallery::find($index);
if (isset($row["image"])) {
$isCreateThumb = "1";
$galleryInput["is_cropped_image"] = 1;
$imageStore = WagEnabledHelpers::saveUploadedImage($row["image"], config("wagenabled.path.doc.pet_pro_gallery_image_path"), $galleryResult->gallery_image, $isCreateThumb, $height = 250, $width = 380, $row['cropped_image'], $isThumbOptimized = true);
if (isset($imageStore['error_msg']) && $imageStore['error_msg'] == '' && isset($imageStore['name']) && !empty($imageStore['name'])) {
$updateGalleryInput["gallery_image"] = $imageStore['name'];
}
}
if ($request->get('is_cover_image')) {
if (strpos($request->get('is_cover_image'), 'old_') !== false) {
if ($index == str_replace('old_', '', $request->get('is_cover_image'))) {
$updateGalleryInput['is_cover_image'] = 1;
PetProGallery::where('pet_pro_id', $result->id)->where('id', '!=', $galleryResult->id)->update(['is_cover_image' => 0]);
}
} else {
$updateGalleryInput['is_cover_image'] = 0;
}
}
if (isset($updateGalleryInput)) {
$galleryResult->update($updateGalleryInput);
}
$updateGalleryInput = [];
}
}
$deletedGallery = $request->get('deletedGallery');
if ($deletedGallery) {
$delete_gallery = explode(",", $deletedGallery);
foreach ($delete_gallery as $id) {
$galleryResult = PetProGallery::find($id);
$fileOldName = $galleryResult->gallery_image;
$galleryResult->delete();
if ($fileOldName) {
$deleteFileList = array();
$deleteFileList[] = config("wagenabled.path.doc.pet_pro_gallery_image_path") . $fileOldName;
$deleteFileList[] = config("wagenabled.path.doc.pet_pro_gallery_image_path") . 'thumb/' . $fileOldName;
WagEnabledHelpers::deleteIfFileExist($deleteFileList);
}
}
}
$petPro = PetPro::find($id);
return WagEnabledHelpers::apiJsonResponse($petPro, config("wagenabled.status_codes.success"), 'Pet pro updated');
}
}
return WagEnabledHelpers::apiJsonResponse([], config("wagenabled.status_codes.normal_error"), 'Sorry, Something went wrong please try again');
} catch (\Exception $e) {
return WagEnabledHelpers::apiJsonResponse([], config("wagenabled.status_codes.server_side"), $e->getMessage());
}
}
public function getUserPetProList(Request $request, $page = 1)
{
$user = auth()->user()->id;
$input = $request->only(['latitude', 'longitude']);
$perPage = config("wagenabled.per_page_pet_pro_results", 6);
$skip = ($page > 1) ? ($perPage * ($page - 1)) : 0;
$is_seach_by_location = false;
$category_id = $request->get('category_id', "");
// $userId = $request->get('userId');
$business_id = $request->get('business_id', "");
$search = $request->get('search', "");
$sort_by = $request->get('sort_by', "");
$pet_pros = PetPro::withCount(['deals' => function ($query) {
$query->active();
},
])
->with('coverImage', 'city', 'state');
$pet_pros = $pet_pros->where('user_id', $user);
$category_id = json_decode($category_id);
if ($category_id != null && count($category_id)) {
$allCatValue = false;
$categoryIdArray = [];
foreach ($category_id as $key => $value) {
if ($value->value != "") {
$categoryIdArray[] = $value->value;
} else {
$allCatValue = true;
}
}
if (!$allCatValue) {
$selectedCategoryPetProIds = PetProSelectedCategory::whereIn('category_id', $categoryIdArray)->pluck('pet_pro_id')->toArray();
$pet_pros = $pet_pros->whereIn('id', $selectedCategoryPetProIds);
}
}
$business_id = json_decode($business_id);
if ($business_id != null && count($business_id)) {
$allvalue = false;
$businessIdArray = [];
foreach ($business_id as $key => $value) {
if ($value->value != "") {
$businessIdArray[] = $value->value;
} else {
$allvalue = true;
}
}
if (!$allvalue) {
$selectedBusinessPetProIds = PetProSelectedBusinessNature::whereIn('business_id', $businessIdArray)->pluck('pet_pro_id')->toArray();
$pet_pros = $pet_pros->whereIn('id', $selectedBusinessPetProIds);
}
}
if ($search) {
// $pet_pros = $pet_pros->Where('store_name', 'like', '%'.$search.'%' );
$pet_pros = $pet_pros->where(function ($query) use ($search) {
$query
->where('store_name', 'like', '%' . $search . '%')
->orWhere('description', 'like', '%' . $search . '%')
->orWhereHas('servicesOffered', function ($q) use ($search) {
$q->where('pet_pro_services_offered.service', 'like', '%' . $search . '%'); // '=' is optional
});
});
}
// if( $sort_by == 'nearest' ) {
/*if( empty($input["longitude"]) || empty($input["latitude"]) ) {
$user = Auth::user();
if ($user) {
if($user->city) {
$input["longitude"] = $user->city->city_latitude;
$input["latitude"] = $user->city->city_longitude;
}
}
}*/
if (!(empty($input["longitude"]) || empty($input["latitude"]))) {
$is_seach_by_location = true;
//$pet_pros = $pet_pros->selectRaw('pet_pros.*, ( 6367 * acos( cos( radians( ? ) ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians( ? ) ) + sin( radians( ? ) ) * sin( radians( latitude ) ) ) ) AS distance', [$input["latitude"], $input["longitude"], $input["latitude"]]);
$pet_pros_with_lat_long = DB::table('pet_country_state_city')->selectRaw('pet_country_state_city.*, ( 6367 * acos( cos( radians( ? ) ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians( ? ) ) + sin( radians( ? ) ) * sin( radians( latitude ) ) ) ) AS distance', [$input["latitude"], $input["longitude"], $input["latitude"]]);
}
// }
$totalRecords = $pet_pros->count();
$this->responseData = [
"pet_pro_list" => [],
];
if ($totalRecords > 0) {
$petProArr = clone $pet_pros;
$totalRecords = count($petProArr->get());
//if( $sort_by ) {
switch ($sort_by) {
case 'popular':
$pet_pros = $pet_pros->orderBy("avg_rating", "DESC")
->orderBy("id", "DESC");
break;
case 'deal_offered':
$pet_pros = $pet_pros->orderBy("deals_count", "DESC")
->orderBy("id", "DESC");
break;
case 'latest':
$pet_pros = $pet_pros->orderBy("id", "DESC");
break;
default:
$pet_pros = $pet_pros->orderBy("id", "DESC");
break;
}
//}
if ($is_seach_by_location) {
$pet_pro_list = $pet_pros->get();
} else {
$pet_pro_list = $pet_pros->skip($skip)
->take($perPage)
->get();
}
$this->responseData["pet_pro_list"] = $pet_pro_list;
foreach ($this->responseData["pet_pro_list"] as $key => $petPro) {
$petPro['categories'] = PetProSelectedCategory::leftjoin('pet_pro_categories', 'pet_pro_categories.id', '=', 'pet_pro_selected_categories.category_id')
->select([
'pet_pro_categories.id',
'pet_pro_categories.name as name',
])
->where('pet_pro_selected_categories.pet_pro_id', '=', $petPro->id)
->get();
}
}
if ($is_seach_by_location) {
$pet_pros_with_lat_long = $pet_pros_with_lat_long->orderBy(\DB::raw('-`distance`'), 'desc')->havingRaw('distance <= ?', [25]); //->orHavingRaw('distance is null')
$this->responseData["pet_pro_list"] = $this->addMatchOne($pet_pros_with_lat_long->get(), $this->responseData["pet_pro_list"]);
$totalPages = ceil(count($this->responseData["pet_pro_list"]) / $perPage);
$this->responseData["total_page"] = $totalPages;
$this->responseData["total_records"] = count($this->responseData["pet_pro_list"]);
$skiparray = 0;
$limitarray = $perPage;
if ($page > 1) {
$skiparray = ($perPage * $page) - $perPage;
$limitarray = ($perPage * $page) - 1;
}
$this->responseData["pet_pro_list"] = array_slice($this->responseData["pet_pro_list"], $skiparray, $limitarray);
$this->message = "";
$this->code = $this->statusCodes['success'];
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
} else {
$totalPages = ceil($totalRecords / $perPage);
$this->responseData["total_page"] = $totalPages;
$this->responseData["total_records"] = $totalRecords;
$this->message = "";
$this->code = $this->statusCodes['success'];
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
}
}
================================================
FILE: app/Http/Controllers/Api/V1/ProductReviewController.php
================================================
statusCodes = config("wagenabled.status_codes");
$this->responseData = [];
$this->message = "Please, try again!";
$this->code = config("wagenabled.status_codes.normal_error");
$this->watch_and_learn_comment_ids = [];
}
public function getList(Request $request, $page = 1)
{
$perPage = config("wagenabled.per_page_watch_and_learn_results", 6);
$skip = ($page > 1) ? ($perPage * ($page - 1)) : 0;
$parent_product_review_id = config("wagenabled.product_review_category_id");
$category_id = $request->get('category_id', "");
$search = $request->get('search', "");
$sort_by = $request->get('sort_by', "");
$allCatValue = true ;
$category_id = json_decode($category_id);
if($category_id != null && count($category_id) ) {
$allCatValue = false;
$categoryIdArray = [];
foreach ($category_id as $key => $value) {
if($value->value != ""){
$categoryIdArray[] = $value->value;
}else{
$allCatValue = true;
}
}
}
if(!$allCatValue){
$watch_and_learn = WatchAndLearn::with('categories.category')->whereHas('categories',function($q) use($categoryIdArray, $parent_product_review_id){
$q->whereIn('selected_category_id',$categoryIdArray);
$q->whereHas('category',function($q) use($parent_product_review_id){
$q->where('parent_id', $parent_product_review_id);
});
})->withCount(['deals' => function($query){
$query->active();
},
])->withCount('users')->Where('status', 'published');
}else{
$watch_and_learn = WatchAndLearn::with('categories.category')->whereHas('categories',function($q) use( $parent_product_review_id){
$q->whereHas('category',function($q) use($parent_product_review_id){
$q->where('parent_id', $parent_product_review_id);
});
})->withCount(['deals' => function($query){
$query->active();
},
])->withCount('users')->Where('status', 'published');
}
if( $search ) {
$watch_and_learn = $watch_and_learn->where( function($query) use( $search ){
$query->Where('title', 'like', '%'.$search.'%');
$query->orWhere('description', 'REGEXP', '>[^<]*'.$search);
});
}
$totalRecords = $watch_and_learn->count();
$totalPages = ceil($totalRecords / $perPage);
$this->responseData = [
"total_records" => $totalRecords,
"total_page" => $totalPages,
"watch_and_learn_list" => [],
];
if($totalRecords > 0) {
switch ($sort_by) {
case 'popular':
$watch_and_learn = $watch_and_learn->orderBy("users_count", "DESC")
->orderBy("id", "DESC");
break;
case 'latest':
$watch_and_learn = $watch_and_learn->orderBy("id", "DESC");
break;
case 'deal_offered':
$watch_and_learn = $watch_and_learn->orderBy("deals_count", "DESC")
->orderBy("id", "DESC");
break;
default:
$watch_and_learn = $watch_and_learn->orderBy("id", "DESC");
break;
}
$watch_and_learn_list = $watch_and_learn->skip($skip)
->take($perPage)
->get();
$this->responseData["watch_and_learn_list"] = $watch_and_learn_list;
}
$this->message = "";
$this->code = $this->statusCodes['success'];
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
public function getCategoryList(Request $request) {
$category_data = WatchAndLearnCategory::ProductReviewCategory()
->select(['id', 'name'])
->orderBy('name')
->get();
$category_list = [];
foreach ($category_data as $category) {
$category_list[] = [ "value" => $category->id, "label"=> $category->name];
}
$this->responseData["category_list"] = $category_list;
$this->message = "";
$this->code = $this->statusCodes['success'];
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
public function claimDeal(Request $request, $slug, $watch_and_learn_deal_id) {
$user = Auth::user();
if ($user->count() == 0) {
return WagEnabledHelpers::apiUserNotFoundResponse();
}
$watch_and_learn = WatchAndLearn::Where('slug', $slug)
->first();
if( $watch_and_learn ) {
$watch_and_learn_deal = WatchAndLearnDeal::where('watch_and_learn_id', $watch_and_learn->id)
->find($watch_and_learn_deal_id);
if( $watch_and_learn_deal ) {
$isClaimed = WatchAndLearnDealClaim::where('user_id', $user->id)
->where('watch_and_learn_deal_id', $watch_and_learn_deal->id)
->first();
if( ! $isClaimed ) {
$input["user_id"] = $user->id;
$input["watch_and_learn_deal_id"] = $watch_and_learn_deal->id;
$isSaved = WatchAndLearnDealClaim::create($input);
if ($isSaved) {
$this->message = "Deal claimed successfully";
$this->code = $this->statusCodes['success'];
}
}
else {
$this->message = "Already claimed this deal";
}
}
}
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
public function addCategoryAnotherTable()
{
$product_reviews = WatchAndLearn::all();
foreach ($product_reviews as $key => $value) {
if($value->category_id){
DB::table('watch_and_learn_selected_categories')->insert([
'watch_and_learn_id' => $value->id,
'selected_category_id' => $value->category_id,
]);
}
}
}
}
================================================
FILE: app/Http/Controllers/Api/V1/UsersController.php
================================================
statusCodes = config("wagenabled.status_codes");
$this->responseData = [];
$this->message = "Please, try again!";
$this->code = config("wagenabled.status_codes.normal_error");
}
public function getProfileDetails(Request $request)
{
$user = Auth::user();
if ($user->count() == 0) {
return WagEnabledHelpers::apiUserNotFoundResponse();
}
$user = User::with('city', 'state')->find($user->id);
$this->responseData["user_details"] = $user;
$this->code = $this->statusCodes['success'];
$this->message = '';
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
public function updateProfile(Request $request)
{
$user = Auth::user();
if ($user->count() == 0) {
return WagEnabledHelpers::apiUserNotFoundResponse();
}
$validator = Validator::make($request->all(), [
'name' => 'required | max: 255',
'email' => [
"required",
"email",
Rule::unique('users')->ignore($user->id),
],
'zipcode' => 'required',
'latitude' => 'nullable',
'longitude' => 'nullable',
'image' => 'nullable',
'address'=>'nullable',
]);
if ($validator->fails()) {
return WagEnabledHelpers::apiValidationFailResponse($validator);
}
$input = $request->only(['name', 'email', 'zipcode', 'latitude', 'longitude']);
$city = City::where('zipcode', $input["zipcode"])->first();
if (!$city) {
$validator->getMessageBag()->add('zipcode', 'Please enter correct zipcode');
return WagEnabledHelpers::apiValidationFailResponse($validator);
}
$input['city_id'] = $city->id;
$input['state_id'] = $city->state->id;
$input['country_id'] = $city->state->country->id;
if ($request->file('image', false)) {
$imageStore = WagEnabledHelpers::saveUploadedImage($request->file('image'), config("wagenabled.path.doc.user_profile_image_path"), $user->profile_image, $isCreateThumb = "1", $height = 250, $width = 380);
if (isset($imageStore['error_msg']) && $imageStore['error_msg'] == '' && isset($imageStore['name']) && !empty($imageStore['name'])) {
$input["profile_image"] = $imageStore['name'];
}
}
$isSaved = $user->update($input);
if ($isSaved) {
$this->responseData["user_details"] = $user;
$this->code = $this->statusCodes['success'];
$this->message = 'Profile Updated successfully';
}
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
public function updatePassword(Request $request)
{
$user = Auth::user();
if ($user->count() == 0) {
return WagEnabledHelpers::apiUserNotFoundResponse();
}
$validator = Validator::make($request->all(), [
'old_password' => 'required|min:6',
'password' => 'required_with:old_password|confirmed|min:6',
]);
if ($validator->fails()) {
return WagEnabledHelpers::apiValidationFailResponse($validator);
}
$old_password = $request->get("old_password", "");
$password = $request->get("password", "");
if ($old_password) {
if (!Hash::check($old_password, $user->password)) {
$validator->getMessageBag()->add('old_password', 'Please enter correct password.');
return WagEnabledHelpers::apiValidationFailResponse($validator);
}
$input["password"] = Hash::make($password);
}
$isSaved = $user->update($input);
if ($isSaved) {
$this->responseData["user_details"] = $user;
$this->code = $this->statusCodes['success'];
$this->message = 'Profile Updated successfully';
}
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
public function updateLocation(Request $request)
{
$user = Auth::user();
if ($user->count() == 0) {
return WagEnabledHelpers::apiUserNotFoundResponse();
}
$validator = Validator::make($request->all(), [
'latitude' => 'nullable',
'longitude' => 'nullable',
]);
if ($validator->fails()) {
return WagEnabledHelpers::apiValidationFailResponse($validator);
}
$input = $request->only(['latitude', 'longitude']);
$isSaved = $user->update($input);
if ($isSaved) {
$this->responseData["user_details"] = $user;
$this->code = $this->statusCodes['success'];
$this->message = '';
}
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
public function storeMyPets(Request $request)
{
$user = Auth::user();
if ($user->count() == 0) {
return WagEnabledHelpers::apiUserNotFoundResponse();
}
$validator = Validator::make($request->all(), [
'name' => 'required | max: 255',
'breed_ids' => 'required',
'pet_image' => 'required | mimes:jpeg,jpg,png',
'adoption_date' => 'required',
]);
if ($validator->fails()) {
return WagEnabledHelpers::apiValidationFailResponse($validator);
}
$input = $request->only(['name']);
if ($request->file('pet_image', false)) {
$imageStore = WagEnabledHelpers::saveUploadedImage($request->file('pet_image'), config("wagenabled.path.doc.users_pet_image_path"), '', $isCreateThumb = "1", $height = 300, $width = 350);
if (isset($imageStore['error_msg']) && $imageStore['error_msg'] == '' && isset($imageStore['name']) && !empty($imageStore['name'])) {
$input["pet_image"] = $imageStore['name'];
}
}
$input["user_id"] = $user->id;
$isSaved = UserPet::create($input);
if ($isSaved) {
// insert breed
$breedIds = [];
if (!empty($request->get("breed_ids"))) {
$breedIds = explode(",", $request->get("breed_ids"));
}
foreach ($breedIds as $breedId) {
if ($breedId) {
$user_breed = UsersPetBreed::insert([
"users_pet_id" => $isSaved->id,
"breed_id" => $breedId,
]);
}
}
$users_pets = UserPet::with('breed')
->where('id', $isSaved->id)
->get();
$this->responseData["users_pet"] = $users_pets;
$this->code = $this->statusCodes['success'];
$this->message = 'Pet added successfully.';
}
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
public function deleteMyPet(Request $request, $id)
{
$user = Auth::user();
if ($user->count() == 0) {
return WagEnabledHelpers::apiUserNotFoundResponse();
}
$userPet = UserPet::where('user_id', $user->id)
->where('id', $id)
->first();
if ($userPet) {
$petBreed = UsersPetBreed::where('users_pet_id', $id)->delete();
$userPet->delete();
$this->message = "Pet deleted successfully";
$this->code = $this->statusCodes['success'];
}
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
public function completeProfile(Request $request)
{
$user = Auth::user();
if ($user->count() == 0) {
return WagEnabledHelpers::apiUserNotFoundResponse();
}
$validator = Validator::make($request->all(), [
'country_id' => 'required | integer',
'zipcode' => 'required',
]);
if ($validator->fails()) {
return WagEnabledHelpers::apiValidationFailResponse($validator);
}
$input = $request->only(['country_id', 'zipcode']);
$city = City::where('zipcode', $input["zipcode"])->first();
if (!$city) {
$validator->getMessageBag()->add('zipcode', 'Please enter correct zipcode');
return WagEnabledHelpers::apiValidationFailResponse($validator);
}
$input = $request->only(['country_id', 'zipcode']);
$input['city_id'] = $city->id;
$input['state_id'] = $city->state->id;
$isSaved = $user->update($input);
if ($isSaved) {
// entry
$arr = array(
'properties' => array(
array(
'property' => 'zip',
'value' => $user->zipcode,
),
),
);
$post_json = json_encode($arr);
HubspotHelpers::updateContact($post_json, $user->email, env('HUBSPOT_API_KEY'));
$this->responseData["user_details"] = $user;
$this->code = $this->statusCodes['success'];
$this->message = 'Profile updated successfully';
}
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
public function updateVetDetails(Request $request)
{
$user = Auth::user();
if ($user->count() == 0) {
return WagEnabledHelpers::apiUserNotFoundResponse();
}
$validator = Validator::make($request->all(), [
'vet_place_name' => 'required',
'vet_address' => 'required',
'vet_phone_number' => 'required',
]);
if ($validator->fails()) {
return WagEnabledHelpers::apiValidationFailResponse($validator);
}
$input = $request->only(['vet_place_name', 'vet_address', 'vet_phone_number']);
$isSaved = $user->update($input);
if ($isSaved) {
$this->responseData["user_details"] = $user;
$this->code = $this->statusCodes['success'];
$this->message = 'Profile updated successfully';
}
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
public function getLovedPetPros(Request $request, $lastId = 0)
{
$user = Auth::user();
if ($user->count() == 0) {
return WagEnabledHelpers::apiUserNotFoundResponse();
}
$perPage = config("wagenabled.no_of_loved_pet_pro_display", 3);
$loved_pet_pros = UserLovedPetPro::with(['petPro' => function ($query) {
$query->withCount('deals');
}, 'petPro.coverImage', 'petPro.deals'])
->where('user_id', $user->id);
if ($lastId) {
$loved_pet_pros = $loved_pet_pros->where('id', '<', $lastId);
}
$loved_pet_pros = $loved_pet_pros->orderBy('id', 'desc')
->take($perPage)
->get();
if ($loved_pet_pros->count() > 0) {
foreach ($loved_pet_pros as $key => $petPro) {
$petPro['categories'] = PetProSelectedCategory::leftjoin('pet_pro_categories', 'pet_pro_categories.id', '=', 'pet_pro_selected_categories.category_id')
->select([
'pet_pro_categories.id',
'pet_pro_categories.name as name',
])
->where('pet_pro_selected_categories.pet_pro_id', '=', $petPro->pet_pro_id)
->get();
}
$get_previous_records = UserLovedPetPro::where('id', '<', $loved_pet_pros->last()->id)
->where('user_id', $user->id)
->first();
$this->responseData["is_more_loved_pet_pros"] = ($get_previous_records ? 1 : 0);
}
$this->responseData["loved_pet_pros"] = $loved_pet_pros;
$this->code = $this->statusCodes['success'];
$this->message = '';
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
public function getSavedVideos(Request $request, $page = 1)
{
$user = Auth::user();
if ($user->count() == 0) {
return WagEnabledHelpers::apiUserNotFoundResponse();
}
$perPage = config("wagenabled.no_of_saved_video_display", 3);
$skip = ($page > 1) ? ($perPage * ($page - 1)) : 0;
$saved_videos = UserSavedVideo::with('watchAndLearn', 'watchAndLearn.category')
->whereHas('watchAndLearn', function ($query) {
$query->Where('status', 'published');
$query->GetWatchAndLearnCategory();
})
->where('user_id', $user->id)
->orderBy('id', 'desc')
->skip($skip)
->take($perPage)
->get();
if ($saved_videos->count() > 0) {
$get_previous_records = UserSavedVideo::with('watchAndLearn', 'watchAndLearn.category')
->whereHas('watchAndLearn', function ($query) {
$query->Where('status', 'published');
$query->GetWatchAndLearnCategory();
})
->where('id', '<', $saved_videos->last()->id)
->where('user_id', $user->id)
->first();
$this->responseData["is_more_saved_videos"] = ($get_previous_records ? 1 : 0);
}
$this->responseData["saved_videos"] = $saved_videos;
$this->code = $this->statusCodes['success'];
$this->message = '';
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
public function getSavedProductReview(Request $request, $page = 1)
{
$user = Auth::user();
if ($user->count() == 0) {
return WagEnabledHelpers::apiUserNotFoundResponse();
}
$perPage = config("wagenabled.no_of_saved_video_display", 3);
$skip = ($page > 1) ? ($perPage * ($page - 1)) : 0;
$saved_videos = UserSavedVideo::with(['watchAndLearn' => function ($query) {
$query->withCount('deals');
}, 'watchAndLearn.category', 'watchAndLearn.deals'])
->whereHas('watchAndLearn', function ($query) {
$query->Where('status', 'published');
$query->ProductReviewCategory();
})
->where('user_id', $user->id)
->orderBy('id', 'desc')
->skip($skip)
->take($perPage)
->get();
if ($saved_videos->count() > 0) {
$get_previous_records = UserSavedVideo::with('watchAndLearn', 'watchAndLearn.category')
->whereHas('watchAndLearn', function ($query) {
$query->Where('status', 'published');
$query->ProductReviewCategory();
})
->where('id', '<', $saved_videos->last()->id)
->where('user_id', $user->id)
->first();
$this->responseData["is_more_saved_videos"] = ($get_previous_records ? 1 : 0);
}
$this->responseData["saved_videos"] = $saved_videos;
$this->code = $this->statusCodes['success'];
$this->message = '';
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
public function getUserPetProReview(Request $request, $page = 1)
{
$user = Auth::user();
if ($user->count() == 0) {
return WagEnabledHelpers::apiUserNotFoundResponse();
}
$perPage = config("wagenabled.no_of_user_pet_pro_review_display", 3);
$skip = ($page > 1) ? ($perPage * ($page - 1)) : 0;
$pet_pro_reviews = PetProReview::with('user', 'petPro', 'petPro.coverImage')
->where('user_id', $user->id)
->orderBy('id', 'desc')
->skip($skip)
->take($perPage)
->get();
if ($pet_pro_reviews->count() > 0) {
$get_previous_records = PetProReview::where('id', '<', $pet_pro_reviews->last()->id)
->where('user_id', $user->id)
->first();
$this->responseData["is_more_pet_pro_reviews"] = ($get_previous_records ? 1 : 0);
}
$this->responseData["pet_pro_reviews"] = $pet_pro_reviews;
$this->code = $this->statusCodes['success'];
$this->message = '';
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
public function getUsersPet(Request $request, $lastId = 0)
{
$user = Auth::user();
if ($user->count() == 0) {
return WagEnabledHelpers::apiUserNotFoundResponse();
}
$perPage = config("wagenabled.no_of_users_pet_display", 1);
$users_pets = UserPet::with('breed')
->where('user_id', $user->id);
if ($lastId) {
$users_pets = $users_pets->where('id', '<', $lastId);
}
$users_pets = $users_pets->orderBy('id', 'desc')
//->take($perPage)
->get();
if ($users_pets->count() > 0) {
$get_previous_records = UserPet::where('id', '<', $users_pets->last()->id)
->where('user_id', $user->id)
->first();
$this->responseData["is_more_users_pets"] = ($get_previous_records ? 1 : 0);
}
$this->responseData["users_pets"] = $users_pets;
$this->code = $this->statusCodes['success'];
$this->message = '';
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
public function getBreedList(Request $request)
{
$breed_data = Breed::select(['id', 'name'])
->orderBy('name')
->get();
$breed_list = [];
//$breed_list[] = ["value" => '', "label" => 'Mixed'];
foreach ($breed_data as $breed) {
$breed_list[] = ["value" => $breed->id, "label" => $breed->name];
}
$this->responseData["breed_list"] = $breed_list;
$this->message = "";
$this->code = $this->statusCodes['success'];
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
public function getCountryList(Request $request)
{
$country_data = Country::select(['id', 'name'])
->orderBy('name')
->get();
$country_list = [];
$country_list[] = ["value" => '', "label" => 'None'];
foreach ($country_data as $country) {
$country_list[] = ["value" => $country->id, "label" => $country->name];
}
$this->responseData["country_list"] = $country_list;
$this->message = "";
$this->code = $this->statusCodes['success'];
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
public function getStates($country_id)
{
$code = config("wagenabled.status_codes.normal_error");
$message = "";
$states = [];
try {
$states = State::select(["id", "name"])->where('country_id', $country_id)->orderBy('name', 'asc')->get();
$code = config("wagenabled.status_codes.success");
} catch (Exception $e) {
$message = "Please, try again!";
}
return WagEnabledHelpers::apiJsonResponse($states, $code, $message);
}
public function getCities($state_id)
{
$code = config("wagenabled.status_codes.normal_error");
$message = "";
$cities = [];
try {
$cities = City::select(["id", "state_id", "name"])->where('state_id', $state_id)->orderBy('name')->orderBy('id')->groupBy('name')->get();
$code = config("wagenabled.status_codes.success");
} catch (Exception $e) {
$message = "Please, try again!";
}
return WagEnabledHelpers::apiJsonResponse($cities, $code, $message);
}
public function getclaimDeals()
{
$user = Auth::user();
if ($user->count() == 0) {
return WagEnabledHelpers::apiUserNotFoundResponse();
}
$isClaimed = PetProDealClaim::select('pet_pro_deal_id')->where('user_id', $user->id)->get();
$isClaimedWatchAndLearn = WatchAndLearnDealClaim::select('watch_and_learn_deal_id')->where('user_id', $user->id)->get();
$deal_ids = [];
foreach ($isClaimed as $key => $value) {
$deal_ids[] = $value->pet_pro_deal_id;
}
$deal_watch_learn_ids = [];
foreach ($isClaimedWatchAndLearn as $key => $value) {
$deal_watch_learn_ids[] = $value->watch_and_learn_deal_id;
}
$this->responseData['claimedDeals'] = PetProDeal::whereIn('id', $deal_ids)->get();
$this->responseData['claimedDealsWatchAndLearn'] = WatchAndLearnDeal::whereIn('id', $deal_watch_learn_ids)->get();
$this->message = "";
$this->code = $this->statusCodes['success'];
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
public function sendEmails(Request $request)
{
$address = env('MAIL_TO_ADDRESS', 'softsquare.4td1gv@zapiermail.com');
Mail::send('emails.addSubscriber', ["detail" => $request], function ($m) use ($address, $request) {
$m->from($request->email, $request->name);
$m->to($address);
$m->subject("New Subscriber");
});
$this->responseData = "";
$this->message = "Mail send successfully ";
$this->code = $this->statusCodes['success'];
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
public function addContactFormFlowDesk(Request $request)
{
$address = env('MAIL_TO_ADDRESS', 'wagenabled.4td1gv@zapiermail.com');
Mail::send('emails.contactForm', ["detail" => $request], function ($m) use ($address, $request) {
$m->from($request->email, $request->name);
$m->to($address);
$m->subject("Contact Us");
});
$this->responseData = "";
$this->message = "Mail send successfully ";
$this->code = $this->statusCodes['success'];
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
}
================================================
FILE: app/Http/Controllers/Api/V1/WatchAndLearnController.php
================================================
statusCodes = config("wagenabled.status_codes");
$this->responseData = [];
$this->message = "Please, try again!";
$this->code = config("wagenabled.status_codes.normal_error");
$this->watch_and_learn_comment_ids = [];
}
public function getList(Request $request, $page = 1)
{
$perPage = config("wagenabled.per_page_watch_and_learn_results", 6);
$skip = ($page > 1) ? ($perPage * ($page - 1)) : 0;
$category_id = $request->get('category_id', "");
$search = $request->get('search', "");
$sort_by = $request->get('sort_by', "");
$watch_and_learn = WatchAndLearn::with('category')->GetWatchAndLearnCategory()->withCount('users')->Where('status', 'published');
if( $category_id ) {
$watch_and_learn = $watch_and_learn->where( 'category_id', $category_id );
}
if( $search ) {
$watch_and_learn = $watch_and_learn->where( function($query) use( $search ){
$query->Where('title', 'like', '%'.$search.'%');
$query->orWhere('description', 'REGEXP', '>[^<]*'.$search);
/*$query->orwhereHas('author', function($query) use( $search ) {
$$query->Where('name', 'like', '%'.$search.'%');
});*/
});
}
$totalRecords = $watch_and_learn->count();
$totalPages = ceil($totalRecords / $perPage);
$this->responseData = [
"total_records" => $totalRecords,
"total_page" => $totalPages,
"watch_and_learn_list" => [],
];
if($totalRecords > 0) {
switch ($sort_by) {
case 'popular':
$watch_and_learn = $watch_and_learn->orderBy("users_count", "DESC")
->orderBy("id", "DESC");
break;
case 'latest':
$watch_and_learn = $watch_and_learn->orderBy("id", "DESC");
break;
default:
$watch_and_learn = $watch_and_learn->orderBy("id", "DESC");
break;
}
$watch_and_learn_list = $watch_and_learn->skip($skip)
->take($perPage)
->get();
$this->responseData["watch_and_learn_list"] = $watch_and_learn_list;
}
$this->message = "";
$this->code = $this->statusCodes['success'];
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
public function getRelatedVideoList(Request $request, $slug)
{
$watch_and_learn = WatchAndLearn::Where('slug', $slug)->Where('status', 'published')
->first();
if( $watch_and_learn ) {
$this->responseData["related_video_list"] = WatchAndLearn::with('category')
->where('category_id', $watch_and_learn->category_id)
->where('id', '!=', $watch_and_learn->id)
->Where('status', 'published')
->orderBy('id', 'desc')
->take(config('wagenabled.no_of_related_video_display', 3))
->get();
$this->message = "";
$this->code = $this->statusCodes['success'];
}
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
public function getDetails(Request $request, $slug) {
$watch_and_learn = WatchAndLearn::withCount(['comments' => function($query){
$query->where('parent_comment_id', 0);
}])
->with(['category','author',
'deals' => function($query){
$query->active();
}
])
->Where('slug', $slug)
->Where('status', 'published')
->first();
if( $watch_and_learn ) {
$this->responseData["is_saved"] = 0;
$user = Auth::user();
if ($user) {
if ($user->count() != 0) {
$this->responseData["is_saved"] = UserSavedVideo::where("user_id", $user->id)->where("watch_and_learn_id", $watch_and_learn->id)->first() ? 1 : 0;
}
}
$this->responseData["watch_and_learn"] = $watch_and_learn;
$this->message = "";
$this->code = $this->statusCodes['success'];
}
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
public function saveUnsaveVideos(Request $request, $slug) {
$user = Auth::user();
if ($user->count() == 0) {
return WagEnabledHelpers::apiUserNotFoundResponse();
}
$watch_and_learn = WatchAndLearn::Where('slug', $slug)->Where('status', 'published')
->first();
if( $watch_and_learn ) {
$isSavedVideo = UserSavedVideo::where('user_id', $user->id)
->where('watch_and_learn_id', $watch_and_learn->id)
->first();
if( $isSavedVideo ) {
$isSavedVideo->delete();
$this->responseData["is_saved"] = 0;
$this->message = "Blog post removed from saved posts.";
} else {
$isSaved = UserSavedVideo::create([
'user_id' => $user->id,
'watch_and_learn_id' => $watch_and_learn->id
]);
$this->responseData["is_saved"] = 1;
$this->message = 'Blog post saved. You can find it in your profile\'s "Saved posts" section in the future!';
}
$this->code = $this->statusCodes['success'];
}
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
public function storeComment(Request $request) {
$user = Auth::user();
if ($user->count() == 0) {
return WagEnabledHelpers::apiUserNotFoundResponse();
}
$validator = Validator::make($request->all(), [
'parent_comment_id' => 'required | integer',
'slug' => 'required',
/*'name' => 'required|max:255',
'email' => 'required | email', */
'message' => 'required',
]);
if ($validator->fails()) {
return WagEnabledHelpers::apiValidationFailResponse($validator);
}
$slug = $request->get('slug');
$watch_and_learn = WatchAndLearn::Where('slug', $slug)
->Where('status', 'published')
->first();
if( $watch_and_learn ) {
$input = $request->only(['parent_comment_id' , 'message']);
$input["user_id"] = $user->id;
$input["name"] = $user->name;
/*$input["email"] = $user->email;*/
$input["watch_and_learn_id"] = $watch_and_learn->id;
$isSaved = WatchAndLearnComment::create($input);
if ($isSaved) {
// send email to Wag Enabled
Mail::to(config('wagenabled.send_comment_notification_to_email'))->send(new SendCommentNotificaitonMail($watch_and_learn));
$this->responseData["comments"] = [WatchAndLearnComment::with('user')
->where("id", $isSaved->id)
->first()];
$this->message = "Comment added successfully";
$this->code = $this->statusCodes['success'];
}
}
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
public function deleteComment(Request $request, $slug, $id) {
$user = Auth::user();
if ($user->count() == 0) {
return WagEnabledHelpers::apiUserNotFoundResponse();
}
$watch_and_learn = WatchAndLearn::Where('slug', $slug)
->first();
if( $watch_and_learn ) {
$watch_and_learn_comment = WatchAndLearnComment::with('allChildren')->where('user_id', $user->id)
->where('watch_and_learn_id', $watch_and_learn->id)
->where('parent_comment_id', 0)
->where('id', $id)
->first();
if( $watch_and_learn_comment ) {
$this->watch_and_learn_comment_ids[] = $watch_and_learn_comment->id;
$this->getChildreanIDs($watch_and_learn_comment->allChildren);
$comments = WatchAndLearnComment::with('user')->whereIn('id', $this->watch_and_learn_comment_ids)->delete();
$this->message = "Comment deleted successfully";
$this->code = $this->statusCodes['success'];
}
}
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
public function getChildreanIDs($watch_and_learn_comments)
{
$childrenId = [];
foreach ($watch_and_learn_comments as $watch_and_learn_comment) {
$childrenId[] = $watch_and_learn_comment->id;
$this->watch_and_learn_comment_ids = array_merge($this->watch_and_learn_comment_ids, $childrenId);
$this->getChildreanIDs($watch_and_learn_comment->allChildren);
}
}
public function all_products()
{
$products = [];
$Children = [$this];
while(count($Children) > 0){
$nextCategories = [];
foreach ($Children as $child) {
$products = array_merge($products, $child->products->all());
$nextCategories = array_merge($nextCategories, $child->children->all());
}
$Children = $nextCategories;
}
return new Collection($products); //Illuminate\Database\Eloquent\Collection
}
public function CommentList(Request $request, $slug, $lastId = 0, $parent_id = 0) {
$this->responseData = [];
$comments = [];
$perPage = config("wagenabled.no_of_comment_display", 6);
$NoOfchildrenCount = config("wagenabled.no_of_comment_children_display", 2);
$depth = config("wagenabled.comment_depth", 2);
$this->responseData["comments"] = [];
$this->responseData["children_count"] = 0;
$this->responseData["no_of_comments_display"] = $perPage;
$this->responseData["no_of_children_display"] = $NoOfchildrenCount;
$this->responseData["depth_count"] = $depth;
$this->responseData["comment_count"] = 0;
$watch_and_learn = WatchAndLearn::Where('slug', $slug)
->Where('status', 'published')
->first();
if( $watch_and_learn ) {
$total_count = WatchAndLearnComment::where('parent_comment_id', 0)
->where("watch_and_learn_id", $watch_and_learn->id)
->count();
$total_count = $total_count ? $total_count : 0;
if( $lastId == 0 ) {
$last_comment = WatchAndLearnComment::select('id')
->where("watch_and_learn_id", $watch_and_learn->id)
->orderBy('id', 'desc')
->first();
if( $last_comment ){
$lastId = $last_comment->id;
$lastId++;
}
}
if( $lastId !=0 ) {
//Comment ids get
$ids = WatchAndLearnComment::where('parent_comment_id', $parent_id)
->where("watch_and_learn_id", $watch_and_learn->id)
->where("id", '<', $lastId)
->orderBy('id', 'desc')
->limit($perPage)
->pluck('id')
->toArray();
//Children Comments -
$childrenIds = [];
$parentId = $ids;
for ($i=1; $i <=$depth ; $i++) {
$newParentIds = [];
foreach ($parentId as $id) {
$childrenId = WatchAndLearnComment::where('parent_comment_id', $id)
->orderBy('id', 'desc')
->limit($NoOfchildrenCount)
->pluck('id')
->toArray();
$childrenIds = array_merge($childrenIds, $childrenId);
$newParentIds = array_merge($newParentIds, $childrenId);
}
$parentId = $newParentIds;
}
$ids = array_merge($ids, $childrenIds);
$comments = WatchAndLearnComment::with('user')->whereIn('id', $ids)
->orderBy('id', 'desc')
->get()
->toArray();
$count = [];
foreach ($ids as $id ) {
$count[$id] = WatchAndLearnComment::where('parent_comment_id', $id)
->where("watch_and_learn_id", $watch_and_learn->id)
->count();
}
$this->responseData["comments"] = WagEnabledHelpers::buildTreeStructure($comments, $parent_id);
$this->responseData["children_count"] = $count;
$this->responseData["no_of_comments_display"] = $perPage;
$this->responseData["no_of_children_display"] = $NoOfchildrenCount;
$this->responseData["depth_count"] = $depth;
}
$this->responseData["comment_count"] = $total_count;
$this->code = $this->statusCodes['success'];
$this->message = "";
}
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
public function getCategoryList(Request $request) {
$category_data = WatchAndLearnCategory::GetWatchAndLearnCategory()
->select(['id', 'name'])
->orderBy('name')
->get();
$category_list = [];
$category_list[] = ["value" => '', "label"=> 'All'];
foreach ($category_data as $category) {
$category_list[] = [ "value" => $category->id, "label"=> $category->name];
}
$this->responseData["category_list"] = $category_list;
$this->message = "";
$this->code = $this->statusCodes['success'];
return WagEnabledHelpers::apiJsonResponse($this->responseData, $this->code, $this->message);
}
}
================================================
FILE: app/Http/Controllers/Auth/ConfirmPasswordController.php
================================================
middleware('auth');
}
}
================================================
FILE: app/Http/Controllers/Auth/ForgotPasswordController.php
================================================
middleware('guest')->except('logout');
}
}
================================================
FILE: app/Http/Controllers/Auth/RegisterController.php
================================================
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:8', '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
================================================
middleware('auth');
$this->middleware('signed')->only('verify');
$this->middleware('throttle:6,1')->only('verify', 'resend');
}
}
================================================
FILE: app/Http/Controllers/Controller.php
================================================
middleware('auth');
}
/**
* Show the application dashboard.
*
* @return \Illuminate\Contracts\Support\Renderable
*/
public function index()
{
return view('home');
}
}
================================================
FILE: app/Http/HubspotHelpers.php
================================================
getMessage());
}
}
public static function updateContact($post_json, $email, $hapikey) {
try {
$endpoint = 'https://api.hubapi.com/contacts/v1/contact/email/'.$email.'/profile?hapikey='.$hapikey;
$ch = @curl_init();
@curl_setopt($ch, CURLOPT_POST, true);
@curl_setopt($ch, CURLOPT_POSTFIELDS, $post_json);
@curl_setopt($ch, CURLOPT_URL, $endpoint);
@curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
@curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = @curl_exec($ch);
$status_code = @curl_getinfo($ch, CURLINFO_HTTP_CODE);
$curl_errors = curl_error($ch);
@curl_close($ch);
} catch (Exception $e) {
\Log::info($e->getMessage());
}
}
}
================================================
FILE: app/Http/Kernel.php
================================================
[
\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',
\Illuminate\Routing\Middleware\SubstituteBindings::class
],
];
/**
* The application's route middleware.
*
* These middleware may be assigned to groups or used individually.
*
* @var array
*/
protected $routeMiddleware = [
'auth' => \App\Http\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,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'adminAuth' => Middleware\AdminAuth::class,
'jwtAuth' => \App\Http\Middleware\VerifyJWTToken::class,
'jwt_setAuthProvider' => 'App\Http\Middleware\SetAuthProviderUser',
];
}
================================================
FILE: app/Http/Middleware/AdminAuth.php
================================================
guard('admin')->id()))
{
return $next($request);
}
else
{
return redirect("admin/login")->with('status', 'Please Login to access admin area');
}
}
}
================================================
FILE: app/Http/Middleware/Authenticate.php
================================================
expectsJson()) {
return route('login');
}
}
}
================================================
FILE: app/Http/Middleware/CheckForMaintenanceMode.php
================================================
check()) {
return redirect(RouteServiceProvider::HOME);
}
return $next($request);
}
}
================================================
FILE: app/Http/Middleware/SetAuthProviderUser.php
================================================
'api']);
config(['auth.providers.users.model' => \App\Models\User::class]);
Config::set('jwt.user' , "App\Models\User");
Config::set('auth.providers.users.model', \App\Models\User::class);
return $next($request);
}
}
================================================
FILE: app/Http/Middleware/TrimStrings.php
================================================
authenticate()) {
$tokenErrorMsg = "Token invalid";
$code = 400;
} else {
$payload = JWTAuth::parseToken()->getPayload();
$user = auth()->authenticate($user);
if (!$user) {
$tokenErrorMsg = "User not found";
$code = 404;
}
}
} catch (Tymon\JWTAuth\Exceptions\TokenExpiredException $e) {
$tokenErrorMsg = "Token expired";
$code = 401;
} catch (JWTException $e) {
$tokenErrorMsg = "Token invalid";
$code = 401;
}
if ($tokenErrorMsg) {
return response()->json([ 'message' => $tokenErrorMsg], $code);
}
return $next($request);
}
}
================================================
FILE: app/Http/Requests/Admin/AdminUsersRequest.php
================================================
'required | max:255',
'email' => [
"required",
"email",
Rule::unique('admin_users')->ignore($this->admin_user),
],
'password' => 'required|min:6',
/*'phone_number' => 'required',*/
];
switch($this->method())
{
case 'PUT':
{
$result['password'] = '';
}
default:break;
}
return $result;
}
}
================================================
FILE: app/Http/Requests/Admin/PetProBusinessRequest.php
================================================
[
"required",
],
];
return $result;
}
}
================================================
FILE: app/Http/Requests/Admin/PetProCategoriesRequest.php
================================================
[
"required",
// Rule::unique('pet_pro_categories')->ignore($this->pet_pro_category),
],
];
return $result;
}
}
================================================
FILE: app/Http/Requests/Admin/PetProDealRequest.php
================================================
'required | max:255',
'fine_print' => 'required',
'start_date' => 'nullable | date',
'end_date' => 'nullable | date | after_or_equal:start_date'
];
return $result;
}
}
================================================
FILE: app/Http/Requests/Admin/PetProEventRequest.php
================================================
'required | max:255',
'description' => 'nullable',
'event_date' => 'nullable | date',
'start_time' => 'nullable',
'end_time' => 'nullable',
'address' => 'nullable',
'url' => 'required | url',
];
return $result;
}
}
================================================
FILE: app/Http/Requests/Admin/PetProGalleryRequest.php
================================================
'required | mimes:jpeg,jpg,png', */
];
switch($this->method())
{
case 'PUT':
{
$result['image'] = 'nullable | mimes:jpeg,jpg,png';
}
default:break;
}
return $result;
}
}
================================================
FILE: app/Http/Requests/Admin/PetProRequest.php
================================================
'required | max:255',
'email' => 'nullable | email',
'website_url' => 'nullable | url',
'phone_number' => 'nullable | max:15',
'address_line_1' => 'nullable | max:255',
'address_line_2' => 'nullable | max:255',
'category_id' => 'required',
'postal_code' => 'nullable | max:255',
'description' => 'nullable',
'donation_link' => 'nullable | url',
];
return $result;
}
}
================================================
FILE: app/Http/Requests/Admin/PetTypeRequest.php
================================================
[
"required",
],
];
return $result;
}
}
================================================
FILE: app/Http/Requests/Admin/TestimonialRequest.php
================================================
'required',
'description' => 'required',
'client_name' => 'required',
'client_title' => 'required',
'image' => 'required | mimes:jpeg,jpg,png',
];
switch($this->method())
{
case 'PUT':
{
$result['image'] = '';
}
default:break;
}
return $result;
}
}
================================================
FILE: app/Http/Requests/Admin/WatchAndLearnAuthorRequest.php
================================================
'required | max:255',
'website_link' => 'nullable | url',
'image' => 'required | mimes:jpeg,jpg,png',
'about' => 'required'
];
switch($this->method())
{
case 'PUT':
{
$result['image'] = '';
}
default:break;
}
return $result;
}
}
================================================
FILE: app/Http/Requests/Admin/WatchAndLearnCategoriesRequest.php
================================================
[
"required",
// Rule::unique('watch_and_learn_categories')->ignore($this->watch_and_learn_category),
],
];
return $result;
}
}
================================================
FILE: app/Http/Requests/Admin/WatchAndLearnDealRequest.php
================================================
'required | max:255',
'fine_print' => 'required',
'start_date' => 'nullable | date',
'end_date' => 'nullable | date | after_or_equal:start_date'
];
return $result;
}
}
================================================
FILE: app/Http/Requests/Admin/WatchAndLearnRequest.php
================================================
'required',
'title' => 'required | max:255',
'author_id' => 'nullable | integer',
'description' => 'nullable',
'image' => 'required | mimes:jpeg,jpg,png',
'blog_meta_description' => 'required | max:255',
'alt_image_text' => 'required | max:255',
// 'video_type' => 'required',
// 'video_file' => 'nullable | mimes:mp4',
// 'embed_link' => 'nullable | regex: /^https:\/\/(?:www\.)?youtube.com\/embed\/[A-z0-9]+/',
];
switch($this->method())
{
case 'PUT':
{
$result['image'] = '';
}
default:break;
}
return $result;
}
}
================================================
FILE: app/Http/Requests/User/UserPetProRequest.php
================================================
'required | max:255',
'email' => 'required | email',
'website_url' => 'nullable | url',
'phone_number' => 'required | max:15',
'address_line_1' => 'required | max:255',
'address_line_2' => 'nullable | max:255',
'category_id' => 'nullable',
'postal_code' => 'nullable | max:255',
'description' => 'required',
'donation_link' => 'nullable | url',
];
return $result;
}
}
================================================
FILE: app/Http/WagEnabledHelpers.php
================================================
format("YmdHisu");
$nameWithoutExtension = preg_replace("/[^a-zA-Z0-9]/", "", '') . '' . $timestamp;
$nameWithoutExtension = $nameWithoutExtension . '-' . $randomString;
$fileExtension = $file->getClientOriginalExtension();
$name = $nameWithoutExtension . '.' . $fileExtension;
$name = str_replace([' ', ':', '-'], "", $name);
$deleteFileList = array();
$thumbName = "";
try {
$img = Image::make($file->getRealPath())
->orientate()
->encode($fileExtension);
$media_file_upload_res = Storage::put($storagePath . $name, $img);
if ($media_file_upload_res) {
$imageName = $name;
$thumbnailStoragePath = $storagePath . "thumb/";
$smallThumbnailStoragePath = $storagePath . "small-thumb/";
if ($isCreateThumb == "1") {
if ($cropped_image != "") {
$image_thumb_content = Image::make($cropped_image)
->orientate()
->encode($fileExtension, 50);
Storage::put($thumbnailStoragePath . $name, $image_thumb_content);
if ($isThumbOptimized) {
$image_small_thumb_content = Image::make($cropped_image)
->resize(500, null, function ($constraint) {
$constraint->aspectRatio();
$constraint->upsize();
})
->orientate()
->encode($fileExtension);
Storage::put($smallThumbnailStoragePath . $name, $image_small_thumb_content);
}
/* Resize profile picture small */
/* $image_thumb_content = Image::make($cropped_image)
->resize($width, $height, function ($constraint) {
$constraint->aspectRatio();
$constraint->upsize();
})
->orientate()
->encode($fileExtension);
Storage::put($thumbnailStoragePath . $name, $image_thumb_content);*/
} else {
if ($isThumbOptimized) {
$original_image_contents = Storage::get($storagePath . $name);
/* Resize profile picture small */
$image_thumb_content = Image::make($original_image_contents)
->orientate()
->encode($fileExtension, 50);
Storage::put($thumbnailStoragePath . $name, $image_thumb_content);
$image_small_thumb_content = Image::make($original_image_contents)
->resize(500, null, function ($constraint) {
$constraint->aspectRatio();
$constraint->upsize();
})
->orientate()
->encode($fileExtension);
Storage::put($smallThumbnailStoragePath . $name, $image_small_thumb_content);
} else {
$original_image_contents = Storage::get($storagePath . $name);
/* Resize profile picture small */
$image_thumb_content = Image::make($original_image_contents)
->resize($width, $height, function ($constraint) {
$constraint->aspectRatio();
$constraint->upsize();
})
->orientate()
->encode($fileExtension);
Storage::put($thumbnailStoragePath . $name, $image_thumb_content);
}
}
}
}
if (!empty($fileOldName)) {
$deleteFileList[] = $storagePath . $fileOldName;
$deleteFileList[] = $storagePath . "thumb/" . $fileOldName;
}
if (count($deleteFileList) > 0) {
WagEnabledHelpers::deleteIfFileExist($deleteFileList);
}
$returnArray = array('name' => $imageName, "error_msg" => "");
return $returnArray;
} catch (Exception $e) {
WagEnabledHelpers::deleteIfFileExist($deleteFileList);
$returnArray = array('name' => "", "error_msg" => $e->getMessage());
return $returnArray;
}
}
public static function saveUploadedImageS3($file, $storagePath, $fileOldName = '', $isCreateThumb = "1", $height = 200, $width = 200)
{
$randomStringTemplate = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randomString = substr(str_shuffle(str_repeat($randomStringTemplate, 5)), 0, 5);
$timestamp = Carbon::createFromFormat('U.u', microtime(true))->format("YmdHisu");
$nameWithoutExtension = preg_replace("/[^a-zA-Z0-9]/", "", '') . '' . $timestamp;
$nameWithoutExtension = $nameWithoutExtension . '-' . $randomString;
$fileExtension = $file->getClientOriginalExtension();
$name = $nameWithoutExtension . '.' . $fileExtension;
$name = str_replace([' ', ':', '-'], "", $name);
$deleteFileList = array();
$thumbName = "";
try {
$img = Image::make($file->getRealPath())
->orientate()
->encode($fileExtension);
$media_file_upload_res = Storage::disk('s3')->put($storagePath . $name, $img);
if ($media_file_upload_res) {
$imageName = $name;
if ($isCreateThumb == "1") {
$original_image_contents = Storage::disk('s3')->get($storagePath . $name);
/* Resize profile picture small */
$image_thumb_content = Image::make($original_image_contents)
->resize($width, $height, function ($constraint) {
$constraint->aspectRatio();
$constraint->upsize();
})
->orientate()
->encode($fileExtension);
$thumbnailStoragePath = $storagePath . "thumb/";
Storage::disk('s3')->put($thumbnailStoragePath . $name, $image_thumb_content);
}
}
if (!empty($fileOldName)) {
$deleteFileList[] = $storagePath . $fileOldName;
$deleteFileList[] = $storagePath . "thumb/" . $fileOldName;
}
if (count($deleteFileList) > 0) {
WagEnabledHelpers::deleteIfFileExistS3($deleteFileList);
}
$returnArray = array('name' => $imageName, "error_msg" => "");
return $returnArray;
} catch (Exception $e) {
WagEnabledHelpers::deleteIfFileExistS3($deleteFileList);
$returnArray = array('name' => "", "error_msg" => $e->getMessage());
return $returnArray;
}
}
public static function deleteIfFileExist($files)
{
if (is_array($files) && count($files) > 0) {
foreach ($files as $key => $path) {
if (!empty($path) && Storage::exists($path)) {
Storage::delete($path);
}
}
} else {
if (!empty($files) && Storage::exists($files)) {
Storage::delete($files);
}
}
}
public static function deleteIfFileExistS3($files)
{
if (is_array($files) && count($files) > 0) {
foreach ($files as $key => $path) {
if (!empty($path) && Storage::disk('s3')->exists($path)) {
Storage::disk('s3')->delete($path);
}
}
} else {
if (!empty($files) && Storage::disk('s3')->exists($files)) {
Storage::disk('s3')->delete($files);
}
}
}
public static function uploadFile($file, $storagePath, $fileOldName = '')
{
$randomStringTemplate = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randomString = substr(str_shuffle(str_repeat($randomStringTemplate, 5)), 0, 5);
$timestamp = Carbon::createFromFormat('U.u', microtime(true))->format("YmdHisu");
$nameWithoutExtension = preg_replace("/[^a-zA-Z0-9]/", "", '') . '' . $timestamp;
$nameWithoutExtension = $nameWithoutExtension . '-' . $randomString;
$fileExtension = $file->getClientOriginalExtension();
$name = $nameWithoutExtension . '.' . $fileExtension;
$name = str_replace([' ', ':', '-'], "", $name);
$deleteFileList = array();
try {
$returnArray = array('name' => "", "error_msg" => "Sorry something went wrong please try again");
if (Storage::put($storagePath . $name, file_get_contents($file->getRealPath()))) {
$returnArray = array('name' => $name, "error_msg" => "");
}
if (!empty($fileOldName)) {
$deleteFileList[] = $storagePath . $fileOldName;
}
if (count($deleteFileList) > 0) {
WagEnabledHelpers::deleteIfFileExist($deleteFileList);
}
return $returnArray;
} catch (Exception $e) {
$returnArray = array('name' => "", "error_msg" => $e . getMessage());
return $returnArray;
}
}
public static function apiUserNotFoundResponse()
{
$statusCodes = config("wagenabled.status_codes");
return WagEnabledHelpers::apiJsonResponse([], $statusCodes['auth_fail'], "User not found");
}
public static function apiJsonResponse($responseData = [], $code = '', $message = "")
{
$statusCodes = config("wagenabled.status_codes");
if ($code == '') {
$code = $statusCodes['success'];
if (count($responseData) == 0) {
$code = $statusCodes['success_with_empty'];
}
}
$data = array(
'message' => $message,
'data' => $responseData,
);
return Response::json($data, $code);
}
public static function generateUniqueFileName($fileExtension)
{
$randomStringTemplate = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randomString = substr(str_shuffle(str_repeat($randomStringTemplate, 5)), 0, 5);
$timestamp = Carbon::createFromFormat('U.u', microtime(true))->format("YmdHisu");
$nameWithoutExtension = preg_replace("/[^a-zA-Z0-9]/", "", '') . '' . $timestamp;
$nameWithoutExtension = $nameWithoutExtension . '-' . $randomString;
$name = $nameWithoutExtension . '.' . $fileExtension;
$name = str_replace([' ', ':', '-'], "", $name);
return $name;
}
public static function apiValidationFailResponse($validator)
{
$statusCodes = config("wagenabled.status_codes");
$messages = $validator->errors();
if (is_object($messages)) {
$messages = $messages->toArray();
}
return WagEnabledHelpers::apiJsonResponse($messages, $statusCodes['form_validation'], "Validation Error");
}
public static function generateUniqueSlug($model, $stringForSlug, $id = 0, $slugColumn = "slug")
{
$slug = Str::slug($stringForSlug);
$allSlugs = WagEnabledHelpers::getRelatedSlugs($slug, $model, $id, $slugColumn);
if (!$allSlugs->contains($slugColumn, $slug)) {
return $slug;
}
$i = 1;
do {
$newSlug = $slug . '-' . $i;
$i++;
} while ($allSlugs->contains($slugColumn, $newSlug));
$slug = $newSlug;
$allSlugs = WagEnabledHelpers::getRelatedSlugs($slug, $model, $id, $slugColumn);
if (!$allSlugs->contains($slugColumn, $slug)) {
return $slug;
}
return WagEnabledHelpers::generateUniqueSlug($model, $slug, $id, $slugColumn);
}
public static function getRelatedSlugs($slug, $model, $id, $slugColumn)
{
return $model->select($slugColumn)->where($slugColumn, 'like', $slug . '%')
->where('id', '<>', $id)
->withTrashed()
->get();
}
public static function buildTreeStructure(array $elements, $parentId = '0', $idColumnName = "id", $parentIdColumnName = "parent_comment_id")
{
$branch = array();
if (count($elements) > 0) {
foreach ($elements as $element) {
if ($element[$parentIdColumnName] == $parentId) {
$children = self::buildTreeStructure($elements, $element[$idColumnName], $idColumnName, $parentIdColumnName);
if ($children) {
$element['children'] = $children;
}
$branch[] = $element;
}
}
}
return $branch;
}
public static function getYouTubeVideoID($url)
{
$queryString = parse_url($url, PHP_URL_QUERY);
parse_str($queryString, $params);
if (isset($params['v']) && strlen($params['v']) > 0) {
return $params['v'];
} else {
return "";
}
}
public static function ISO8601ToSeconds($ISO8601)
{
$start = new \DateTime('@0'); // Unix epoch
$start->add(new \DateInterval($ISO8601));
return $start->format('H:i:s.v');
}
public static function getYouTubeVideoDuration($url)
{
try {
$youtubeID = str_replace('https://www.youtube.com/embed/', '', $url);
if ($youtubeID) {
$api_key = env('GOOGLE_API_KEY', 'AIzaSyDfSFDURSYNLP98jkn2pIurVv3QThXNg2Q');
$api_url = 'https://www.googleapis.com/youtube/v3/videos?part=contentDetails&id=' . $youtubeID . '&key=' . $api_key;
$data = json_decode(@file_get_contents($api_url));
if ($data) {
if (isset($data->items[0]) && isset($data->items[0]->contentDetails) && isset($data->items[0]->contentDetails->duration)) {
return WagEnabledHelpers::ISO8601ToSeconds($data->items[0]->contentDetails->duration);
}
}
}
return '';
} catch (Exception $e) {
$returnArray = array('name' => "", "error_msg" => $e . getMessage());
return $returnArray;
}
}
}
================================================
FILE: app/Imports/BreedsImport.php
================================================
first();
if( ! $breed_exist ) {
return new Breed([
'name' => $row['dog_breeds'],
]);
}
}
}
================================================
FILE: app/Library/GoogleMapHelper.php
================================================
null,
"longitude" => null,
];
if($addressObj) {
$addressArr = [];
/*if(!empty($addressObj->store_name)) {
$addressArr[] = $addressObj->store_name;
}*/
if(!empty($addressObj->address_line_1) ) {
$addressArr[] = $addressObj->address_line_1;
}
if(!empty($addressObj->address_line_2) ) {
$addressArr[] = $addressObj->address_line_2;
}
if(!empty($addressObj->city_id)) {
$city = City::find($addressObj->city_id);
if($city) {
$addressArr[] = $city->name;
}
}
if(!empty($addressObj->state_id)) {
$state = State::find($addressObj->state_id);
if($state) {
$addressArr[] = $state->name;
}
}
$addressArr[] = 'USA';
if(!empty($addressObj->postal_code)) {
$addressArr[] = $addressObj->postal_code;
}
$addressStr = implode(", ", $addressArr);
if(!empty($addressStr)) {
// Get JSON results from this request
$geo = file_get_contents('https://maps.googleapis.com/maps/api/geocode/json?address='.urlencode($addressStr).'&key='.$googleMapApiKey);
$geo = json_decode($geo, true); // Convert the JSON to an array
if (isset($geo['status']) && ($geo['status'] == 'OK')) {
$returnArr["latitude"] = $geo['results'][0]['geometry']['location']['lat']; // Latitude
$returnArr["longitude"] = $geo['results'][0]['geometry']['location']['lng']; // Longitude
} else {
\Log::info($geo);
}
}
}
return $returnArr;
}
public static function getTimezone($addressObj) {
$googleMapApiKey = config("wagenabled.google_map.api_key");
$returnArr = [
"timezone" => "",
];
if($addressObj) {
$addressArr = [];
if($addressObj->latitude && $addressObj->longitude ) {
$timestamp = Carbon::now()->timestamp;
$geo = file_get_contents('https://maps.googleapis.com/maps/api/timezone/json?location='.$addressObj["latitude"].','.$addressObj["longitude"].'×tamp='.$timestamp.'&key='.$googleMapApiKey);
$geo = json_decode($geo, true);
$returnArr["timezone"] = $geo["timeZoneId"];
}
}
return $returnArr;
}
public static function getGeocodeData($addressObj) {
$googleMapApiKey = config("wagenabled.google_map.api_key");
$returnArr = [];
if($addressObj) {
$addressStr = implode(", ", $addressObj);
if(!empty($addressStr)) {
// Get JSON results from this request
$geo = file_get_contents('https://maps.googleapis.com/maps/api/geocode/json?address='.urlencode($addressStr).'&key='.$googleMapApiKey);
$geo = json_decode($geo, true); // Convert the JSON to an array
$city = "";
$state = "";
$temp_city_name = "";
if (isset($geo['status']) && ($geo['status'] == 'OK')) {
if (count($geo['results']) > 0) {
//break up the components
$arrComponents = $geo['results'][0]['address_components'];
foreach($arrComponents as $index=>$component) {
$type = $component['types'][0];
if ($temp_city_name == "" && ($type == "administrative_area_level_2") ) {
$temp_city_name = trim($component['long_name']);
}
if ($city == "" && ($type == "sublocality_level_1" || $type == "locality") ) {
$city = trim($component['long_name']);
}
if ($state == "" && $type=="administrative_area_level_1") {
$state = trim($component['long_name']);
}
if ($city != "" && $state != "") {
break;
}
}
if( $city == "" ) {
$city = $temp_city_name;
}
}
$returnArr["latitude"] = $geo['results'][0]['geometry']['location']['lat']; // Latitude
$returnArr["longitude"] = $geo['results'][0]['geometry']['location']['lng']; // Longitude
$returnArr["city"] = $city;
$returnArr["state"] = $state;
} else {
\Log::info($geo);
}
}
}
return $returnArr;
}
}
================================================
FILE: app/Mail/SendBusinessRequestMail.php
================================================
businessRequest = $businessRequest;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
$address = env('MAIL_FROM_ADDRESS', 'hello@wagenabled.com');
$subject = 'Wag enabled business request mail.';
$name = env('MAIL_FROM_NAME', 'Wag Enabled');
return $this->view('emails.api.v1.businessRequest.sendBusinessRequestEmail')
->from($address, $name)
->subject($subject)
->replyTo($this->businessRequest->contact_email, $this->businessRequest->first_name .' '. $this->businessRequest->last_name )
->with(['businessRequest' => $this->businessRequest]);
}
}
================================================
FILE: app/Mail/SendCommentNotificaitonMail.php
================================================
watchAndLearn = $watchAndLearn;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
$address = env('MAIL_FROM_ADDRESS', 'hello@wagenabled.com');
$subject = 'Wag enabled watch and learn comment notification mail.';
$name = env('MAIL_FROM_NAME', 'Wag Enabled');
$url = config("wagenabled.react_server_base_url") . "/watch-and-learn/" . $this->watchAndLearn->slug;
return $this->view('emails.api.v1.watchAndLearnComment.sendWatchAndLearnCommentNotificationEmail')
->from($address, $name)
->subject($subject)
->with(['watchAndLearn' => $this->watchAndLearn, 'url' => $url]);
}
}
================================================
FILE: app/Mail/SendContactMail.php
================================================
contact = $contact;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
$address = env('MAIL_FROM_ADDRESS', 'hello@wagenabled.com');
$subject = 'Wag enabled contact mail.';
$name = env('MAIL_FROM_NAME', 'Wag Enabled');
return $this->view('emails.api.v1.contact.sendContactEmail')
->from($address, $name)
->subject($subject)
->replyTo($this->contact->email, $this->contact->name )
->with(['contact' => $this->contact]);
}
}
================================================
FILE: app/Mail/UerPasswordResetMail.php
================================================
user = $user;
$this->token = $token;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
$address = env('MAIL_FROM_ADDRESS', 'hello@wagenabled.com');
$subject = 'Wag enabled password reset mail.';
$name = env('MAIL_FROM_NAME', 'Wag Enabled');
$url = config("wagenabled.react_server_base_url") . "/reset-password?token=" . $this->token;
return $this->view('emails.api.v1.auth.passwordReset')
->from($address, $name)
->subject($subject)
->with([ 'user' => $this->user, 'url' => $url]);
}
}
================================================
FILE: app/Models/AdminUser.php
================================================
created_at)) {
$data = Carbon::parse($this->created_at)->format('m/d/Y');
}
return $data;
}
}
================================================
FILE: app/Models/Breed.php
================================================
hasMany('App\Models\UserPet', 'breed_id', 'id');
}
}
================================================
FILE: app/Models/BusinessNature.php
================================================
created_at)) {
$data = Carbon::parse($this->created_at)->format('m/d/y');
}
return $data;
}
public function petPro()
{
return $this->hasMany('App\Models\PetProSelectedBusinessNature', 'business_id', 'id');
}
}
================================================
FILE: app/Models/BusinessRequest.php
================================================
created_at)) {
$data = Carbon::parse($this->created_at)->format('m/d/y');
}
return $data;
}
}
================================================
FILE: app/Models/City.php
================================================
hasMany('User');
}
public function state()
{
return $this->belongsTo('App\Models\State', 'state_id', 'id');
}
public function petpros()
{
//return $this->belongsToMany(RelatedModel, pivot_table_name, foreign_key_of_current_model_in_pivot_table, foreign_key_of_other_model_in_pivot_table);
return $this->belongsToMany(
'App\Models\PetPro',
'pet_country_state_city',
'city_id',
'pet_pro_id');
}
}
================================================
FILE: app/Models/Contact.php
================================================
created_at)) {
$data = Carbon::parse($this->created_at)->format('m/d/y');
}
return $data;
}
}
================================================
FILE: app/Models/Country.php
================================================
hasMany('User');
}
public function states()
{
return $this->hasMany('App\Models\State', 'country_id', 'id');
}
public function petpros()
{
//return $this->belongsToMany(RelatedModel, pivot_table_name, foreign_key_of_current_model_in_pivot_table, foreign_key_of_other_model_in_pivot_table);
return $this->belongsToMany(
'App\Models\PetPro',
'pet_country_state_city',
'country_id',
'pet_pro_id');
}
}
================================================
FILE: app/Models/Newsletter.php
================================================
created_at)) {
$data = Carbon::parse($this->created_at)->format('m/d/y');
}
return $data;
}
}
================================================
FILE: app/Models/PasswordReset.php
================================================
created_at)) {
$data = Carbon::parse($this->created_at)->format('m/d/y');
}
return $data;
}
public function categories()
{
return $this->hasMany('App\Models\PetProSelectedCategory','pet_pro_id', 'id');
}
public function business()
{
return $this->hasMany('App\Models\PetProSelectedBusinessNature','pet_pro_id', 'id');
}
public function petType()
{
return $this->hasMany('App\Models\PetProsSelectedPetType','pet_pro_id', 'id');
}
public function servicesOffered()
{
return $this->hasMany('App\Models\PetProServicesOffered','pet_pro_id', 'id');
}
public function country()
{
return $this->belongsTo('App\Models\Country');
}
public function countries()
{
return $this->belongsToMany(
'App\Models\Country',
'pet_country_state_city',
'pet_pro_id',
'country_id');
}
public function states()
{
return $this->belongsToMany(
'App\Models\State',
'pet_country_state_city',
'pet_pro_id',
'state_id');
}
public function cities()
{
return $this->belongsToMany(
'App\Models\City',
'pet_country_state_city',
'pet_pro_id',
'city_id');
}
public function state()
{
return $this->belongsTo('App\Models\State');
}
public function city()
{
return $this->belongsTo('App\Models\City');
}
public function timetable()
{
return $this->hasMany('App\Models\PetProTimetable', 'pet_pro_id', 'id');
}
public function reviews()
{
return $this->hasMany('App\Models\PetProReview', 'pet_pro_id', 'id');
}
public function coverImage()
{
return $this->hasOne('App\Models\PetProGallery', 'pet_pro_id', 'id')->Where('is_cover_image', '1');
}
public function otherImage()
{
return $this->hasMany('App\Models\PetProGallery', 'pet_pro_id', 'id')->Where('is_cover_image', '0');
}
public function images()
{
return $this->hasMany('App\Models\PetProGallery', 'pet_pro_id', 'id')->orderBy('is_cover_image', 'desc')->orderBy('id', 'asc');
}
public function deals()
{
return $this->hasMany('App\Models\PetProDeal', 'pet_pro_id', 'id')->orderBy('id', 'desc');
}
public function events()
{
return $this->hasMany('App\Models\PetProEvent', 'pet_pro_id', 'id')->orderBy('event_date', 'asc');
}
public function getFormattedTimetableAttribute()
{
$data = [];
foreach ($this->timetable as $timetable) {
$data[$timetable->day."_open"] = $timetable->open ? Carbon::parse($timetable->open)->format('h:i a') : '';
$data[$timetable->day."_close"] = $timetable->close ? Carbon::parse($timetable->close)->format('h:i a') : '';
}
return $data;
}
public function getIsTimetableEnteredAttribute()
{
$result_count = PetProTimetable::where('pet_pro_id', $this->id)->whereNotNull('open')->count();
if( $result_count ) {
return true;
}
return false;
}
}
================================================
FILE: app/Models/PetProCategory.php
================================================
created_at)) {
$data = Carbon::parse($this->created_at)->format('m/d/y');
}
return $data;
}
public function petPro()
{
return $this->hasMany('App\Models\PetProSelectedCategory', 'category_id', 'id');
}
}
================================================
FILE: app/Models/PetProDeal.php
================================================
belongsTo('App\Models\PetPro', 'pet_pro_id', 'id');
}
public function claims()
{
return $this->hasMany('App\Models\PetProDealClaim', 'pet_pro_deal_id', 'id');
}
public function scopeActive($query)
{
$current_date_time_ob = Carbon::now('UTC');
$current_date = $current_date_time_ob->format('Y-m-d');
return $query->where('pet_pro_deals.status', 'active')
->where(function($q) use($current_date) {
$q->where(function($q){
$q->whereNull('start_date')
->whereNull('end_date');
})->orWhere(function($q) use($current_date) {
$q->where('start_date', '<=', $current_date)
->where('end_date', '>=', $current_date);
});
});
}
public function getIsClaimedAttribute()
{
$user = Auth::user();
if ($user) {
if ($user->count() != 0) {
$isClaimed = PetProDealClaim::where('pet_pro_deal_id', $this->id)
->where('user_id', $user->id)
->first();
if( $isClaimed ) {
return 1;
}
}
}
return 0;
}
//formated_start_date
public function getFormatedStartDateAttribute()
{
$data = "";
if(!empty($this->start_date)) {
$data = Carbon::parse($this->start_date)->format('m/d/y');
}
return $data;
}
//formated_end_date
public function getFormatedEndDateAttribute()
{
$data = "";
if(!empty($this->end_date)) {
$data = Carbon::parse($this->end_date)->format('m/d/y');
}
return $data;
}
}
================================================
FILE: app/Models/PetProDealClaim.php
================================================
belongsTo('App\Models\PetPro', 'pet_pro_id', 'id');
}
//formated_event_date
public function getFormatedEventDateAttribute()
{
$data = "";
if(!empty($this->event_date)) {
$data = Carbon::parse($this->event_date)->format('m/d/y');
}
return $data;
}
//formated_event_date_day
public function getFormatedEventDateDayAttribute()
{
$data = "";
if(!empty($this->event_date)) {
$data = Carbon::parse($this->event_date)->format('d');
}
return $data;
}
//formated_event_start_date
public function getFormatedEventStartDateAttribute()
{
$data = "";
if(!empty($this->event_date)) {
$data = Carbon::parse($this->event_date)->format('M, d Y');
}
return $data;
}
//formated_event_end_date
public function getFormatedEventEndDateAttribute()
{
$data = "";
if(!empty($this->event_date)) {
$data = Carbon::parse($this->event_end_date)->format('M, d Y');
}
return $data;
}
//formated_event_month
public function getFormatedEventMonthAttribute()
{
$data = "";
if(!empty($this->event_date)) {
$data = Carbon::parse($this->event_date)->format('F');
}
return $data;
}
//formated_event_start_time
public function getFormatedEventStartTimeAttribute()
{
$data = "";
if(!empty($this->start_time)) {
$data = Carbon::parse($this->start_time)->format('h:i a');
}
return $data;
}
//formated_event_end_time
public function getFormatedEventEndTimeAttribute()
{
$data = "";
if(!empty($this->end_time)) {
$data = Carbon::parse($this->end_time)->format('h:i a');
}
return $data;
}
public function scopeActive($query)
{
$current_date_time_ob = Carbon::now('UTC');
$current_date = $current_date_time_ob->format('Y-m-d');
$current_time = $current_date_time_ob->format('H:i:s');
return $query->where(function($q) use($current_date, $current_time) {
$q->where(function($q){
$q->whereNull('event_date');
})
->orWhere(function($q) use($current_date, $current_time) {
$q->where('event_end_date', '>=', $current_date)
/*->where('start_time', '>=', $current_time)*/;
});
})->where('status', 'active');
}
}
================================================
FILE: app/Models/PetProGallery.php
================================================
belongsTo('App\Models\PetPro', 'pet_pro_id', 'id');
}
//image_full_path
public function getImageFullPathAttribute()
{
if (!empty($this->gallery_image)) {
return Storage::url(config("wagenabled.path.url.pet_pro_gallery_image_path") . $this->gallery_image);
}
return asset('admin-theme/images/default-wag.svg');
}
//image_thumb_full_path
public function getImageThumbFullPathAttribute()
{
if (!empty($this->gallery_image)) {
$image_url = Storage::url(config("wagenabled.path.url.pet_pro_gallery_image_path").'thumb/'. $this->gallery_image);
if($this->is_cropped_image) {
return $image_url;
}
return Storage::url(config("wagenabled.path.url.pet_pro_gallery_image_path"). $this->gallery_image);
}
return asset('admin-theme/images/default-wag.svg');
}
//image_small_thumb_full_path
public function getImageSmallThumbFullPathAttribute()
{
if (!empty($this->gallery_image)) {
$image_url = Storage::url(config("wagenabled.path.url.pet_pro_gallery_image_path").'small-thumb/'. $this->gallery_image);
return $image_url;
}
return asset('admin-theme/images/default-wag.svg');
}
}
================================================
FILE: app/Models/PetProReview.php
================================================
created_at)) {
$data = Carbon::parse($this->created_at)->format('d F, Y');
}
return $data;
}
public function petPro()
{
return $this->belongsTo('App\Models\PetPro', 'pet_pro_id', 'id');
}
public function user()
{
return $this->belongsTo('App\Models\User', 'user_id', 'id');
}
}
================================================
FILE: app/Models/PetProSelectedBusinessNature.php
================================================
belongsTo('App\Models\PetPro', 'pet_pro_id', 'id');
}
public function businessNature()
{
return $this->belongsTo('App\Models\BusinessNature', 'business_id', 'id');
}
}
================================================
FILE: app/Models/PetProSelectedCategory.php
================================================
belongsTo('App\Models\PetPro', 'pet_pro_id', 'id');
}
public function category()
{
return $this->belongsTo('App\Models\PetProCategory', 'category_id', 'id');
}
}
================================================
FILE: app/Models/PetProServicesOffered.php
================================================
belongsTo('App\Models\PetPro', 'pet_pro_id', 'id');
}
}
================================================
FILE: app/Models/PetProTimetable.php
================================================
belongsTo('App\Models\WatchAndLearn', 'watch_and_learn_id', 'id');
}
}
================================================
FILE: app/Models/PetProsSelectedPetType.php
================================================
belongsTo('App\Models\PetPro', 'pet_pro_id', 'id');
}
public function businessNature()
{
return $this->belongsTo('App\Models\PetType', 'pet_type_id', 'id');
}
}
================================================
FILE: app/Models/PetType.php
================================================
created_at)) {
$data = Carbon::parse($this->created_at)->format('m/d/y');
}
return $data;
}
public function petPro()
{
return $this->hasMany('App\Models\PetProsSelectedPetType', 'pet_type_id', 'id');
}
}
================================================
FILE: app/Models/State.php
================================================
hasMany('User');
}
public function countries()
{
return $this->hasMany('App\Models\City', 'state_id', 'id');
}
public function country()
{
return $this->belongsTo('App\Models\Country', 'country_id', 'id');
}
public function petpros()
{
//return $this->belongsToMany(RelatedModel, pivot_table_name, foreign_key_of_current_model_in_pivot_table, foreign_key_of_other_model_in_pivot_table);
return $this->belongsToMany(
'App\Models\PetPro',
'pet_country_state_city',
'state_id',
'pet_pro_id');
}
}
================================================
FILE: app/Models/Testimonial.php
================================================
image) && $model->image) {
$deleteFileList[] = config("wagenabled.path.doc.testimonial_image_path").$model->image;
$deleteFileList[] = config("wagenabled.path.doc.testimonial_image_path").'thumb/'.$model->image;
WagEnabledHelpers::deleteIfFileExist($deleteFileList);
}
});
}
public function getFormatedCreatedAtAttribute()
{
$data = "";
if(!empty($this->created_at)) {
$data = Carbon::parse($this->created_at)->format('F d, Y');
}
return $data;
}
public function getTestimonialImageFullPathAttribute()
{
if (!empty($this->image)) {
return Storage::url(config("wagenabled.path.url.testimonial_image_path") . $this->image);
}
return '';
}
public function getTestimonialImageThumbFullPathAttribute()
{
if (!empty($this->image)) {
return Storage::url(config("wagenabled.path.url.testimonial_image_path").'thumb/'. $this->image);
}
return '';
}
}
================================================
FILE: app/Models/User.php
================================================
'datetime',
];
protected $appends = [ 'formated_created_at', 'profile_image_full_path', 'profile_image_thumb_full_path'];
public static function boot()
{
parent::boot();
static::deleted(function ($model) {
if (isset($model->profile_image) && $model->profile_image) {
$deleteFileList = array();
$deleteFileList[] = config("wagenabled.path.doc.user_profile_image_path").$model->profile_image;
$deleteFileList[] = config("wagenabled.path.doc.user_profile_image_path").'thumb/'.$model->profile_image;
WagEnabledHelpers::deleteIfFileExist($deleteFileList);
}
});
}
// jwt
public function getJWTIdentifier()
{
return $this->getKey();
}
public function getJWTCustomClaims()
{
return [];
}
//formated_created_at
public function getFormatedCreatedAtAttribute()
{
$data = "";
if(!empty($this->created_at)) {
$data = Carbon::parse($this->created_at)->format('m/d/y');
}
return $data;
}
//profile_image_full_path
public function getProfileImageFullPathAttribute()
{
if (!empty($this->profile_image)) {
return Storage::url(config("wagenabled.path.url.user_profile_image_path") . $this->profile_image);
}
return asset('admin-theme/images/default_user.svg');
}
//profile_image_thumb_full_path
public function getProfileImageThumbFullPathAttribute()
{
if (!empty($this->profile_image)) {
return Storage::url(config("wagenabled.path.url.user_profile_image_path").'thumb/'. $this->profile_image);
}
return asset('admin-theme/images/default_user.svg');
}
public function country()
{
return $this->belongsTo('App\Models\Country');
}
public function state()
{
return $this->belongsTo('App\Models\State');
}
public function city()
{
return $this->belongsTo('App\Models\City');
}
public function pets()
{
return $this->hasMany('App\Models\UserPet', 'user_id', 'id');
}
public function savedVideos()
{
return $this->belongsToMany('App\Models\WatchAndLearn', 'user_saved_videos', 'user_id', 'watch_and_learn_id')->using('App\Models\UserSavedVideo');
}
public function lovedPetPro()
{
return $this->belongsToMany('App\Models\PetPro', 'user_loved_pet_pros', 'user_id', 'pet_pro_id')->using('App\Models\UserLovedPetPro');
}
public function petProReviews()
{
return $this->hasMany('App\Models\PetProReview', 'user_id', 'id');
}
}
================================================
FILE: app/Models/UserLovedPetPro.php
================================================
belongsTo('App\Models\PetPro', 'pet_pro_id', 'id');
}
}
================================================
FILE: app/Models/UserPet.php
================================================
pet_image) && $model->pet_image) {
$deleteFileList = array();
$deleteFileList[] = config("wagenabled.path.doc.users_pet_image_path").$model->pet_image;
$deleteFileList[] = config("wagenabled.path.doc.users_pet_image_path").'thumb/'.$model->pet_image;
WagEnabledHelpers::deleteIfFileExist($deleteFileList);
}
});
}
//pet_image_full_path
public function getPetImageFullPathAttribute()
{
if (!empty($this->pet_image)) {
return Storage::url(config("wagenabled.path.url.users_pet_image_path") . $this->pet_image);
}
return asset('admin-theme/images/default.png');
}
//pet_image_thumb_full_path
public function getPetImageThumbFullPathAttribute()
{
if (!empty($this->pet_image)) {
return Storage::url(config("wagenabled.path.url.users_pet_image_path") .'thumb/'. $this->pet_image);
}
return asset('admin-theme/images/default.png');
}
public function breed()
{
return $this->belongsToMany('App\Models\Breed', 'users_pet_breeds', 'users_pet_id', 'breed_id')->using('App\Models\UsersPetBreed');
}
}
================================================
FILE: app/Models/UserSavedVideo.php
================================================
belongsTo('App\Models\WatchAndLearn', 'watch_and_learn_id', 'id');
}
public function user()
{
return $this->belongsTo('App\Models\Users', 'user_id', 'id');
}
}
================================================
FILE: app/Models/UsersPetBreed.php
================================================
belongsTo('App\Models\Breed', 'breed_id', 'id');
}
public function pet()
{
return $this->belongsTo('App\Models\UserPet', 'user_id', 'id');
}
}
================================================
FILE: app/Models/WatchAndLearn.php
================================================
thumbnail) && $model->thumbnail) {
$deleteFileList[] = config("wagenabled.path.doc.watch_and_learn_thumbnail_path").$model->thumbnail;
$deleteFileList[] = config("wagenabled.path.doc.watch_and_learn_thumbnail_path").'thumb/'.$model->thumbnail;
WagEnabledHelpers::deleteIfFileExist($deleteFileList);
}
if (isset($model->video_type) && $model->video_type == 'video_upload' ) {
$deleteFileList[] = config("wagenabled.path.doc.watch_and_learn_video_path").$model->video_file;
}
WagEnabledHelpers::deleteIfFileExist($deleteFileList);
});
}
//formated_duration
public function getFormatedDurationAttribute()
{
$data = "";
if(!empty($this->duration)) {
$data = Carbon::parse($this->duration)->format('H:i:s');
}
return $data;
}
//formated_created_at
public function getFormatedCreatedAtAttribute()
{
$data = "";
if(!empty($this->created_at)) {
$data = Carbon::parse($this->created_at)->format('F d, Y');
}
return $data;
}
//thumbnail_full_path
public function getThumbnailFullPathAttribute()
{
if (!empty($this->thumbnail)) {
return Storage::url(config("wagenabled.path.url.watch_and_learn_thumbnail_path") . $this->thumbnail);
}
return asset('admin-theme/images/default.png');
}
//thumbnail_thumb_full_path
public function getThumbnailThumbFullPathAttribute()
{
if (!empty($this->thumbnail)) {
return Storage::url(config("wagenabled.path.url.watch_and_learn_thumbnail_path").'thumb/'. $this->thumbnail);
}
return asset('admin-theme/images/default.png');
}
//video_full_path
public function getVideoFullPathAttribute()
{
if( $this->video_type == 'video_upload' ) {
if (!empty($this->video_file)) {
return Storage::url(config("wagenabled.path.url.watch_and_learn_video_path"). $this->video_file);
}
}
else {
return $this->embed_link;
}
return '';
}
public function category()
{
return $this->belongsTo('App\Models\WatchAndLearnCategory', 'category_id', 'id')->withTrashed();
}
public function categories()
{
return $this->hasMany('App\Models\WatchAndLearnSelectedCategory','watch_and_learn_id', 'id');
}
public function author()
{
return $this->belongsTo('App\Models\WatchAndLearnAuthor', 'author_id', 'id')->withTrashed();
}
public function comments()
{
return $this->hasMany('App\Models\WatchAndLearnComment', 'watch_and_learn_id', 'id');
}
public function users()
{
return $this->belongsToMany('App\Models\User', 'user_saved_videos', 'watch_and_learn_id', 'user_id')->using('App\Models\UserSavedVideo')->withTrashed();
}
public function deals()
{
return $this->hasMany('App\Models\WatchAndLearnDeal', 'watch_and_learn_id', 'id')->orderBy('id', 'desc');
}
public function scopeProductReviewCategory($query)
{
$parent_product_review_id = config("wagenabled.product_review_category_id");
if( $parent_product_review_id ) {
return $query->whereHas('category', function($q) use($parent_product_review_id){
$q->where('watch_and_learn_categories.parent_id', $parent_product_review_id);
});
}
return $query;
}
public function scopeGetWatchAndLearnCategory($query)
{
$parent_product_review_id = config("wagenabled.product_review_category_id");
$query = $query->whereHas('category', function($q) use($parent_product_review_id){
if( $parent_product_review_id ) {
$q->where('watch_and_learn_categories.id', '!=', $parent_product_review_id);
}
$q->where('watch_and_learn_categories.parent_id', 0);
});
return $query;
}
}
================================================
FILE: app/Models/WatchAndLearnAuthor.php
================================================
profile_image) && $model->profile_image) {
$deleteFileList = array();
$deleteFileList[] = config("wagenabled.path.doc.watch_and_learn_author_path").$model->profile_image;
$deleteFileList[] = config("wagenabled.path.doc.watch_and_learn_author_path").'thumb/'.$model->profile_image;
WagEnabledHelpers::deleteIfFileExist($deleteFileList);
}
*/
});
}
public function watchAndLearns()
{
return $this->hasMany('App\Models\WatchAndLearn', 'author_id', 'id');
}
//formated_created_at
public function getFormatedCreatedAtAttribute()
{
$data = "";
if(!empty($this->created_at)) {
$data = Carbon::parse($this->created_at)->format('m/d/y');
}
return $data;
}
//image_full_path
public function getImageFullPathAttribute()
{
if (!empty($this->profile_image)) {
return Storage::url(config("wagenabled.path.url.watch_and_learn_author_path") . $this->profile_image);
}
return asset('admin-theme/images/default_user.svg');
}
//image_thumb_full_path
public function getImageThumbFullPathAttribute()
{
if (!empty($this->profile_image)) {
return Storage::url(config("wagenabled.path.url.watch_and_learn_author_path").'thumb/'. $this->profile_image);
}
return asset('admin-theme/images/default_user.svg');
}
}
================================================
FILE: app/Models/WatchAndLearnCategory.php
================================================
created_at)) {
$data = Carbon::parse($this->created_at)->format('m/d/y');
}
return $data;
}
public function watchAndLearn()
{
return $this->hasMany('App\Models\WatchAndLearn', 'category_id', 'id');
}
public function watchAndLearns()
{
return $this->hasMany('App\Models\WatchAndLearnSelectedCategory', 'selected_category_id', 'id');
}
public function scopeProductReviewCategory($query)
{
$parent_product_review_id = config("wagenabled.product_review_category_id");
if( $parent_product_review_id ) {
return $query->where('watch_and_learn_categories.parent_id', $parent_product_review_id);
}
return $query;
}
public function scopeGetWatchAndLearnCategory($query)
{
$parent_product_review_id = config("wagenabled.product_review_category_id");
if( $parent_product_review_id ) {
$query = $query->where('watch_and_learn_categories.id', '!=', $parent_product_review_id);
}
return $query->where('watch_and_learn_categories.parent_id', 0);
}
}
================================================
FILE: app/Models/WatchAndLearnComment.php
================================================
belongsTo('App\Models\WatchAndLearn', 'watch_and_learn_id', 'id');
}
public function user()
{
return $this->belongsTo('App\Models\User', 'user_id', 'id');
}
public function parent()
{
return $this->belongsTo('App\Models\WatchAndLearnComment', 'parent_comment_id');
}
public function children()
{
return $this->hasMany('App\Models\WatchAndLearnComment', 'parent_comment_id');
}
public function allChildren()
{
return $this->hasMany('App\Models\WatchAndLearnComment', 'parent_comment_id')->with('allChildren');
}
//formated_created_at
public function getFormatedCreatedAtAttribute()
{
$data = "";
if(!empty($this->created_at)) {
$data = Carbon::parse($this->created_at)->format('F d, Y');
}
return $data;
}
}
================================================
FILE: app/Models/WatchAndLearnDeal.php
================================================
belongsTo('App\Models\WatchAndLearn', 'watch_and_learn_id', 'id');
}
public function claims()
{
return $this->hasMany('App\Models\WatchAndLearnDealClaim', 'watch_and_learn_deal_id', 'id');
}
public function scopeActive($query)
{
$current_date_time_ob = Carbon::now('UTC');
$current_date = $current_date_time_ob->format('Y-m-d');
return $query->where('watch_and_learn_deals.status', 'active')
->where(function($q) use($current_date) {
$q->where(function($q){
$q->whereNull('start_date')
->whereNull('end_date');
})->orWhere(function($q) use($current_date) {
$q->where('start_date', '<=', $current_date)
->where('end_date', '>=', $current_date);
});
});
}
public function getIsClaimedAttribute()
{
$user = Auth::user();
if ($user) {
if ($user->count() != 0) {
$isClaimed = WatchAndLearnDealClaim::where('watch_and_learn_deal_id', $this->id)
->where('user_id', $user->id)
->first();
if( $isClaimed ) {
return 1;
}
}
}
return 0;
}
//formated_start_date
public function getFormatedStartDateAttribute()
{
$data = "";
if(!empty($this->start_date)) {
$data = Carbon::parse($this->start_date)->format('m/d/y');
}
return $data;
}
//formated_end_date
public function getFormatedEndDateAttribute()
{
$data = "";
if(!empty($this->end_date)) {
$data = Carbon::parse($this->end_date)->format('m/d/y');
}
return $data;
}
}
================================================
FILE: app/Models/WatchAndLearnDealClaim.php
================================================
belongsTo('App\Models\WatchAndLearn', 'watch_and_learn_id', 'id');
}
public function category()
{
return $this->belongsTo('App\Models\WatchAndLearnCategory', 'selected_category_id', 'id');
}
}
================================================
FILE: app/Observers/PetProObserver.php
================================================
store_name );
$model->slug = $slugStr;
}
public function updating(PetPro $model)
{
if ($model->isDirty('store_name')) {
$slugStr = WagEnabledHelpers::generateUniqueSlug( $model, $model->store_name, $model->id );
$model->slug = $slugStr;
}
}
public function created(PetPro $watchAndLearn)
{
//
}
/**
* Handle the watch and learn "updated" event.
*
* @param \App\PetPro $watchAndLearn
* @return void
*/
public function updated(PetPro $watchAndLearn)
{
//
}
/**
* Handle the watch and learn "deleted" event.
*
* @param \App\PetPro $watchAndLearn
* @return void
*/
public function deleted(PetPro $watchAndLearn)
{
//
}
/**
* Handle the watch and learn "restored" event.
*
* @param \App\PetPro $watchAndLearn
* @return void
*/
public function restored(PetPro $watchAndLearn)
{
//
}
/**
* Handle the watch and learn "force deleted" event.
*
* @param \App\PetPro $watchAndLearn
* @return void
*/
public function forceDeleted(PetPro $watchAndLearn)
{
//
}
}
================================================
FILE: app/Observers/ProductReviewObserver.php
================================================
title );
$model->slug = $slugStr;
}
public function updating(ProductReview $model)
{
if ($model->isDirty('title')) {
$slugStr = WagEnabledHelpers::generateUniqueSlug( $model, $model->title, $model->id );
$model->slug = $slugStr;
}
}
public function created(ProductReview $ProductReview)
{
//
}
/**
* Handle the watch and learn "updated" event.
*
* @param \App\ProductReview $ProductReview
* @return void
*/
public function updated(ProductReview $ProductReview)
{
//
}
/**
* Handle the watch and learn "deleted" event.
*
* @param \App\ProductReview $ProductReview
* @return void
*/
public function deleted(ProductReview $ProductReview)
{
//
}
/**
* Handle the watch and learn "restored" event.
*
* @param \App\ProductReview $ProductReview
* @return void
*/
public function restored(ProductReview $ProductReview)
{
//
}
/**
* Handle the watch and learn "force deleted" event.
*
* @param \App\ProductReview $ProductReview
* @return void
*/
public function forceDeleted(ProductReview $ProductReview)
{
//
}
}
================================================
FILE: app/Observers/WatchAndLearnObserver.php
================================================
title );
$model->slug = $slugStr;
}
public function updating(WatchAndLearn $model)
{
if ($model->isDirty('title')) {
$slugStr = WagEnabledHelpers::generateUniqueSlug( $model, $model->title, $model->id );
$model->slug = $slugStr;
}
}
public function created(WatchAndLearn $watchAndLearn)
{
//
}
/**
* Handle the watch and learn "updated" event.
*
* @param \App\WatchAndLearn $watchAndLearn
* @return void
*/
public function updated(WatchAndLearn $watchAndLearn)
{
//
}
/**
* Handle the watch and learn "deleted" event.
*
* @param \App\WatchAndLearn $watchAndLearn
* @return void
*/
public function deleted(WatchAndLearn $watchAndLearn)
{
//
}
/**
* Handle the watch and learn "restored" event.
*
* @param \App\WatchAndLearn $watchAndLearn
* @return void
*/
public function restored(WatchAndLearn $watchAndLearn)
{
//
}
/**
* Handle the watch and learn "force deleted" event.
*
* @param \App\WatchAndLearn $watchAndLearn
* @return void
*/
public function forceDeleted(WatchAndLearn $watchAndLearn)
{
//
}
}
================================================
FILE: app/Providers/AppServiceProvider.php
================================================
'App\Policies\ModelPolicy',
];
/**
* Register any authentication / authorization services.
*
* @return void
*/
public function boot()
{
$this->registerPolicies();
//
}
}
================================================
FILE: app/Providers/BroadcastServiceProvider.php
================================================
[
SendEmailVerificationNotification::class,
],
];
/**
* Register any events for your application.
*
* @return void
*/
public function boot()
{
parent::boot();
//
}
}
================================================
FILE: app/Providers/RouteServiceProvider.php
================================================
mapApiRoutes();
$this->mapWebRoutes();
$this->mapAdminRoutes();
//
}
/**
* 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'));
}
protected function mapAdminRoutes()
{
Route::prefix('admin')
->middleware("web")
->namespace($this->namespace."\Admin")
->group(base_path('routes/admin.php'));
}
}
================================================
FILE: artisan
================================================
#!/usr/bin/env php
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
================================================
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",
"type": "project",
"description": "The Laravel Framework.",
"keywords": [
"framework",
"laravel"
],
"license": "MIT",
"require": {
"php": "^7.2.5",
"barryvdh/laravel-cors": "^1.0",
"dingo/api": "^2",
"doctrine/dbal": "^2.10",
"fideloper/proxy": "^4.2",
"fruitcake/laravel-cors": "^1.0",
"guzzlehttp/guzzle": "^6.3",
"intervention/image": "^2.5",
"laravel/framework": "^7.0",
"laravel/tinker": "^2.0",
"laravel/ui": "^2.0",
"laravelcollective/html": "^6.1",
"league/flysystem-aws-s3-v3": "^1.0",
"maatwebsite/excel": "^3.1",
"tymon/jwt-auth": "dev-develop",
"yajra/laravel-datatables-oracle": "~9.0"
},
"require-dev": {
"facade/ignition": "^2.0",
"fzaninotto/faker": "^1.9.1",
"mockery/mockery": "^1.3.1",
"nunomaduro/collision": "^4.1",
"phpunit/phpunit": "^8.5"
},
"config": {
"optimize-autoloader": true,
"preferred-install": "dist",
"sort-packages": true
},
"extra": {
"laravel": {
"dont-discover": []
}
},
"autoload": {
"psr-4": {
"App\\": "app/"
},
"classmap": [
"database/seeds",
"database/factories"
]
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
}
},
"minimum-stability": "dev",
"prefer-stable": true,
"scripts": {
"post-autoload-dump": [
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
"@php artisan package:discover --ansi"
],
"post-root-package-install": [
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"@php artisan key:generate --ansi"
]
}
}
================================================
FILE: config/api.php
================================================
env('API_STANDARDS_TREE', 'x'),
/*
|--------------------------------------------------------------------------
| API Subtype
|--------------------------------------------------------------------------
|
| Your subtype will follow the standards tree you use when used in the
| "Accept" header to negotiate the content type and version.
|
| For example: Accept: application/x.SUBTYPE.v1+json
|
*/
'subtype' => env('API_SUBTYPE', ''),
/*
|--------------------------------------------------------------------------
| Default API Version
|--------------------------------------------------------------------------
|
| This is the default version when strict mode is disabled and your API
| is accessed via a web browser. It's also used as the default version
| when generating your APIs documentation.
|
*/
'version' => env('API_VERSION', 'v1'),
/*
|--------------------------------------------------------------------------
| Default API Prefix
|--------------------------------------------------------------------------
|
| A default prefix to use for your API routes so you don't have to
| specify it for each group.
|
*/
'prefix' => env('API_PREFIX', null),
/*
|--------------------------------------------------------------------------
| Default API Domain
|--------------------------------------------------------------------------
|
| A default domain to use for your API routes so you don't have to
| specify it for each group.
|
*/
'domain' => env('API_DOMAIN', null),
/*
|--------------------------------------------------------------------------
| Name
|--------------------------------------------------------------------------
|
| When documenting your API using the API Blueprint syntax you can
| configure a default name to avoid having to manually specify
| one when using the command.
|
*/
'name' => env('API_NAME', null),
/*
|--------------------------------------------------------------------------
| Conditional Requests
|--------------------------------------------------------------------------
|
| Globally enable conditional requests so that an ETag header is added to
| any successful response. Subsequent requests will perform a check and
| will return a 304 Not Modified. This can also be enabled or disabled
| on certain groups or routes.
|
*/
'conditionalRequest' => env('API_CONDITIONAL_REQUEST', true),
/*
|--------------------------------------------------------------------------
| Strict Mode
|--------------------------------------------------------------------------
|
| Enabling strict mode will require clients to send a valid Accept header
| with every request. This also voids the default API version, meaning
| your API will not be browsable via a web browser.
|
*/
'strict' => env('API_STRICT', false),
/*
|--------------------------------------------------------------------------
| Debug Mode
|--------------------------------------------------------------------------
|
| Enabling debug mode will result in error responses caused by thrown
| exceptions to have a "debug" key that will be populated with
| more detailed information on the exception.
|
*/
'debug' => env('API_DEBUG', false),
/*
|--------------------------------------------------------------------------
| Generic Error Format
|--------------------------------------------------------------------------
|
| When some HTTP exceptions are not caught and dealt with the API will
| generate a generic error response in the format provided. Any
| keys that aren't replaced with corresponding values will be
| removed from the final response.
|
*/
'errorFormat' => [
'message' => ':message',
'errors' => ':errors',
'code' => ':code',
'status_code' => ':status_code',
'debug' => ':debug',
],
/*
|--------------------------------------------------------------------------
| API Middleware
|--------------------------------------------------------------------------
|
| Middleware that will be applied globally to all API requests.
|
*/
'middleware' => [
],
/*
|--------------------------------------------------------------------------
| Authentication Providers
|--------------------------------------------------------------------------
|
| The authentication providers that should be used when attempting to
| authenticate an incoming API request.
|
*/
'auth' => [
],
/*
|--------------------------------------------------------------------------
| Throttling / Rate Limiting
|--------------------------------------------------------------------------
|
| Consumers of your API can be limited to the amount of requests they can
| make. You can create your own throttles or simply change the default
| throttles.
|
*/
'throttling' => [
],
/*
|--------------------------------------------------------------------------
| Response Transformer
|--------------------------------------------------------------------------
|
| Responses can be transformed so that they are easier to format. By
| default a Fractal transformer will be used to transform any
| responses prior to formatting. You can easily replace
| this with your own transformer.
|
*/
'transformer' => env('API_TRANSFORMER', Dingo\Api\Transformer\Adapter\Fractal::class),
/*
|--------------------------------------------------------------------------
| Response Formats
|--------------------------------------------------------------------------
|
| Responses can be returned in multiple formats by registering different
| response formatters. You can also customize an existing response
| formatter with a number of options to configure its output.
|
*/
'defaultFormat' => env('API_DEFAULT_FORMAT', 'json'),
'formats' => [
'json' => Dingo\Api\Http\Response\Format\Json::class,
],
'formatsOptions' => [
'json' => [
'pretty_print' => env('API_JSON_FORMAT_PRETTY_PRINT_ENABLED', false),
'indent_style' => env('API_JSON_FORMAT_INDENT_STYLE', 'space'),
'indent_size' => env('API_JSON_FORMAT_INDENT_SIZE', 2),
],
],
];
================================================
FILE: config/app.php
================================================
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 the 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' => (bool) 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'),
'asset_url' => env('ASSET_URL', null),
/*
|--------------------------------------------------------------------------
| 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',
/*
|--------------------------------------------------------------------------
| Faker Locale
|--------------------------------------------------------------------------
|
| This locale will be used by the Faker PHP library when generating fake
| data for your database seeds. For example, this will be used to get
| localized telephone numbers, street address information and more.
|
*/
'faker_locale' => 'en_US',
/*
|--------------------------------------------------------------------------
| 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,
Tymon\JWTAuth\Providers\LaravelServiceProvider::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,
'Arr' => Illuminate\Support\Arr::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,
'Http' => Illuminate\Support\Facades\Http::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,
'Str' => Illuminate\Support\Str::class,
'URL' => Illuminate\Support\Facades\URL::class,
'Validator' => Illuminate\Support\Facades\Validator::class,
'View' => Illuminate\Support\Facades\View::class,
'JWTAuth' => Tymon\JWTAuth\Facades\JWTAuth::class,
'JWTFactory' => Tymon\JWTAuth\Facades\JWTFactory::class,
],
];
================================================
FILE: config/auth.php
================================================
[
'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' => 'jwt',
'provider' => 'users',
],
'admin' => [
'driver' => 'session',
'provider' => 'admin_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\Models\User::class,
],
// 'users' => [
// 'driver' => 'database',
// 'table' => 'users',
// ],
'admin_users' => [
'driver' => 'eloquent',
'model' => App\Models\AdminUser::class,
],
],
/*
|--------------------------------------------------------------------------
| 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,
'throttle' => 60,
],
],
/*
|--------------------------------------------------------------------------
| Password Confirmation Timeout
|--------------------------------------------------------------------------
|
| Here you may define the amount of seconds before a password confirmation
| times out and the user is prompted to re-enter their password via the
| confirmation screen. By default, the timeout lasts for three hours.
|
*/
'password_timeout' => 10800,
];
================================================
FILE: config/broadcasting.php
================================================
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'),
'useTLS' => true,
],
],
'redis' => [
'driver' => 'redis',
'connection' => 'default',
],
'log' => [
'driver' => 'log',
],
'null' => [
'driver' => 'null',
],
],
];
================================================
FILE: config/cache.php
================================================
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',
'serialize' => false,
],
'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' => 'cache',
],
'dynamodb' => [
'driver' => 'dynamodb',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
'table' => env('DYNAMODB_CACHE_TABLE', 'cache'),
'endpoint' => env('DYNAMODB_ENDPOINT'),
],
],
/*
|--------------------------------------------------------------------------
| 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/cors.php
================================================
['api/*'],
'allowed_methods' => ['*'],
'allowed_origins' => ['*'],
'allowed_origins_patterns' => [],
'allowed_headers' => ['*'],
'exposed_headers' => [],
'max_age' => 0,
'supports_credentials' => false,
];
================================================
FILE: config/database.php
================================================
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',
'url' => env('DATABASE_URL'),
'database' => env('DB_DATABASE', database_path('database.sqlite')),
'prefix' => '',
'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
],
'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'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' => '',
'prefix_indexes' => true,
'strict' => false,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],
'mysql2' => [
'driver' => env('DB_CONNECTION_SECOND'),
'host' => env('DB_HOST_SECOND'),
'port' => env('DB_PORT_SECOND'),
'database' => env('DB_DATABASE_SECOND'),
'username' => env('DB_USERNAME_SECOND'),
'password' => env('DB_PASSWORD_SECOND'),
],
'pgsql' => [
'driver' => 'pgsql',
'url' => env('DATABASE_URL'),
'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' => '',
'prefix_indexes' => true,
'schema' => 'public',
'sslmode' => 'prefer',
],
'sqlsrv' => [
'driver' => 'sqlsrv',
'url' => env('DATABASE_URL'),
'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' => '',
'prefix_indexes' => true,
],
],
/*
|--------------------------------------------------------------------------
| 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 body of commands than a typical key-value system
| such as APC or Memcached. Laravel makes it easy to dig right in.
|
*/
'redis' => [
'client' => env('REDIS_CLIENT', 'phpredis'),
'options' => [
'cluster' => env('REDIS_CLUSTER', 'redis'),
'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'),
],
'default' => [
'url' => env('REDIS_URL'),
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', '6379'),
'database' => env('REDIS_DB', '0'),
],
'cache' => [
'url' => env('REDIS_URL'),
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', '6379'),
'database' => env('REDIS_CACHE_DB', '1'),
],
],
];
================================================
FILE: config/filesystems.php
================================================
env('FILESYSTEM_DRIVER', 's3'),
/*
|--------------------------------------------------------------------------
| 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"
|
*/
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
],
'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'),
'endpoint' => env('AWS_ENDPOINT'),
],
],
/*
|--------------------------------------------------------------------------
| Symbolic Links
|--------------------------------------------------------------------------
|
| Here you may configure the symbolic links that will be created when the
| `storage:link` Artisan command is executed. The array keys should be
| the locations of the links and the values should be their targets.
|
*/
'links' => [
public_path('storage') => storage_path('app/public'),
],
];
================================================
FILE: config/hashing.php
================================================
'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' => env('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/jwt.php
================================================
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
/*
|--------------------------------------------------------------------------
| JWT Authentication Secret
|--------------------------------------------------------------------------
|
| Don't forget to set this in your .env file, as it will be used to sign
| your tokens. A helper command is provided for this:
| `php artisan jwt:secret`
|
| Note: This will be used for Symmetric algorithms only (HMAC),
| since RSA and ECDSA use a private/public key combo (See below).
|
*/
'secret' => env('JWT_SECRET'),
/*
|--------------------------------------------------------------------------
| JWT Authentication Keys
|--------------------------------------------------------------------------
|
| The algorithm you are using, will determine whether your tokens are
| signed with a random string (defined in `JWT_SECRET`) or using the
| following public & private keys.
|
| Symmetric Algorithms:
| HS256, HS384 & HS512 will use `JWT_SECRET`.
|
| Asymmetric Algorithms:
| RS256, RS384 & RS512 / ES256, ES384 & ES512 will use the keys below.
|
*/
'keys' => [
/*
|--------------------------------------------------------------------------
| Public Key
|--------------------------------------------------------------------------
|
| A path or resource to your public key.
|
| E.g. 'file://path/to/public/key'
|
*/
'public' => env('JWT_PUBLIC_KEY'),
/*
|--------------------------------------------------------------------------
| Private Key
|--------------------------------------------------------------------------
|
| A path or resource to your private key.
|
| E.g. 'file://path/to/private/key'
|
*/
'private' => env('JWT_PRIVATE_KEY'),
/*
|--------------------------------------------------------------------------
| Passphrase
|--------------------------------------------------------------------------
|
| The passphrase for your private key. Can be null if none set.
|
*/
'passphrase' => env('JWT_PASSPHRASE'),
],
/*
|--------------------------------------------------------------------------
| JWT time to live
|--------------------------------------------------------------------------
|
| Specify the length of time (in minutes) that the token will be valid for.
| Defaults to 1 hour.
|
| You can also set this to null, to yield a never expiring token.
| Some people may want this behaviour for e.g. a mobile app.
| This is not particularly recommended, so make sure you have appropriate
| systems in place to revoke the token if necessary.
| Notice: If you set this to null you should remove 'exp' element from 'required_claims' list.
|
*/
'ttl' => null,
/*
|--------------------------------------------------------------------------
| Refresh time to live
|--------------------------------------------------------------------------
|
| Specify the length of time (in minutes) that the token can be refreshed
| within. I.E. The user can refresh their token within a 2 week window of
| the original token being created until they must re-authenticate.
| Defaults to 2 weeks.
|
| You can also set this to null, to yield an infinite refresh time.
| Some may want this instead of never expiring tokens for e.g. a mobile app.
| This is not particularly recommended, so make sure you have appropriate
| systems in place to revoke the token if necessary.
|
*/
'refresh_ttl' => env('JWT_REFRESH_TTL', 20160),
/*
|--------------------------------------------------------------------------
| JWT hashing algorithm
|--------------------------------------------------------------------------
|
| Specify the hashing algorithm that will be used to sign the token.
|
| See here: https://github.com/namshi/jose/tree/master/src/Namshi/JOSE/Signer/OpenSSL
| for possible values.
|
*/
'algo' => env('JWT_ALGO', 'HS256'),
/*
|--------------------------------------------------------------------------
| Required Claims
|--------------------------------------------------------------------------
|
| Specify the required claims that must exist in any token.
| A TokenInvalidException will be thrown if any of these claims are not
| present in the payload.
|
*/
'required_claims' => [
'iss',
'iat',
'nbf',
'sub',
'jti',
],
/*
|--------------------------------------------------------------------------
| Persistent Claims
|--------------------------------------------------------------------------
|
| Specify the claim keys to be persisted when refreshing a token.
| `sub` and `iat` will automatically be persisted, in
| addition to the these claims.
|
| Note: If a claim does not exist then it will be ignored.
|
*/
'persistent_claims' => [
// 'foo',
// 'bar',
],
/*
|--------------------------------------------------------------------------
| Lock Subject
|--------------------------------------------------------------------------
|
| This will determine whether a `prv` claim is automatically added to
| the token. The purpose of this is to ensure that if you have multiple
| authentication models e.g. `App\User` & `App\OtherPerson`, then we
| should prevent one authentication request from impersonating another,
| if 2 tokens happen to have the same id across the 2 different models.
|
| Under specific circumstances, you may want to disable this behaviour
| e.g. if you only have one authentication model, then you would save
| a little on token size.
|
*/
'lock_subject' => true,
/*
|--------------------------------------------------------------------------
| Leeway
|--------------------------------------------------------------------------
|
| This property gives the jwt timestamp claims some "leeway".
| Meaning that if you have any unavoidable slight clock skew on
| any of your servers then this will afford you some level of cushioning.
|
| This applies to the claims `iat`, `nbf` and `exp`.
|
| Specify in seconds - only if you know you need it.
|
*/
'leeway' => env('JWT_LEEWAY', 0),
/*
|--------------------------------------------------------------------------
| Blacklist Enabled
|--------------------------------------------------------------------------
|
| In order to invalidate tokens, you must have the blacklist enabled.
| If you do not want or need this functionality, then set this to false.
|
*/
'blacklist_enabled' => env('JWT_BLACKLIST_ENABLED', true),
/*
| -------------------------------------------------------------------------
| Blacklist Grace Period
| -------------------------------------------------------------------------
|
| When multiple concurrent requests are made with the same JWT,
| it is possible that some of them fail, due to token regeneration
| on every request.
|
| Set grace period in seconds to prevent parallel request failure.
|
*/
'blacklist_grace_period' => env('JWT_BLACKLIST_GRACE_PERIOD', 0),
/*
|--------------------------------------------------------------------------
| Cookies encryption
|--------------------------------------------------------------------------
|
| By default Laravel encrypt cookies for security reason.
| If you decide to not decrypt cookies, you will have to configure Laravel
| to not encrypt your cookie token by adding its name into the $except
| array available in the middleware "EncryptCookies" provided by Laravel.
| see https://laravel.com/docs/master/responses#cookies-and-encryption
| for details.
|
| Set it to true if you want to decrypt cookies.
|
*/
'decrypt_cookies' => false,
/*
|--------------------------------------------------------------------------
| Providers
|--------------------------------------------------------------------------
|
| Specify the various providers used throughout the package.
|
*/
'providers' => [
/*
|--------------------------------------------------------------------------
| JWT Provider
|--------------------------------------------------------------------------
|
| Specify the provider that is used to create and decode the tokens.
|
*/
'jwt' => Tymon\JWTAuth\Providers\JWT\Lcobucci::class,
/*
|--------------------------------------------------------------------------
| Authentication Provider
|--------------------------------------------------------------------------
|
| Specify the provider that is used to authenticate users.
|
*/
'auth' => Tymon\JWTAuth\Providers\Auth\Illuminate::class,
/*
|--------------------------------------------------------------------------
| Storage Provider
|--------------------------------------------------------------------------
|
| Specify the provider that is used to store tokens in the blacklist.
|
*/
'storage' => Tymon\JWTAuth\Providers\Storage\Illuminate::class,
],
];
================================================
FILE: config/logging.php
================================================
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'],
'ignore_exceptions' => false,
],
'single' => [
'driver' => 'single',
'path' => storage_path('logs/laravel.log'),
'level' => 'debug',
],
'daily' => [
'driver' => 'daily',
'path' => storage_path('logs/laravel.log'),
'level' => 'debug',
'days' => 14,
],
'slack' => [
'driver' => 'slack',
'url' => env('LOG_SLACK_WEBHOOK_URL'),
'username' => 'Laravel Log',
'emoji' => ':boom:',
'level' => 'critical',
],
'papertrail' => [
'driver' => 'monolog',
'level' => 'debug',
'handler' => SyslogUdpHandler::class,
'handler_with' => [
'host' => env('PAPERTRAIL_URL'),
'port' => env('PAPERTRAIL_PORT'),
],
],
'stderr' => [
'driver' => 'monolog',
'handler' => StreamHandler::class,
'formatter' => env('LOG_STDERR_FORMATTER'),
'with' => [
'stream' => 'php://stderr',
],
],
'syslog' => [
'driver' => 'syslog',
'level' => 'debug',
],
'errorlog' => [
'driver' => 'errorlog',
'level' => 'debug',
],
'null' => [
'driver' => 'monolog',
'handler' => NullHandler::class,
],
'emergency' => [
'path' => storage_path('logs/laravel.log'),
],
],
];
================================================
FILE: config/mail.php
================================================
env('MAIL_MAILER', 'smtp'),
/*
|--------------------------------------------------------------------------
| Mailer Configurations
|--------------------------------------------------------------------------
|
| Here you may configure all of the mailers used by your application plus
| their respective settings. Several examples have been configured for
| you and you are free to add your own as your application requires.
|
| Laravel supports a variety of mail "transport" drivers to be used while
| sending an e-mail. You will specify which one you are using for your
| mailers below. You are free to add additional mailers as required.
|
| Supported: "smtp", "sendmail", "mailgun", "ses",
| "postmark", "log", "array"
|
*/
'mailers' => [
'smtp' => [
'transport' => 'smtp',
'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
'port' => env('MAIL_PORT', 587),
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'timeout' => null,
],
'ses' => [
'transport' => 'ses',
],
'mailgun' => [
'transport' => 'mailgun',
],
'postmark' => [
'transport' => 'postmark',
],
'sendmail' => [
'transport' => 'sendmail',
'path' => '/usr/sbin/sendmail -bs',
],
'log' => [
'transport' => 'log',
'channel' => env('MAIL_LOG_CHANNEL'),
],
'array' => [
'transport' => 'array',
],
],
/*
|--------------------------------------------------------------------------
| 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'),
],
/*
|--------------------------------------------------------------------------
| 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
================================================
env('QUEUE_CONNECTION', '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,
'block_for' => 0,
],
'sqs' => [
'driver' => 'sqs',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'),
'queue' => env('SQS_QUEUE', 'your-queue-name'),
'suffix' => env('SQS_SUFFIX'),
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
],
'redis' => [
'driver' => 'redis',
'connection' => 'default',
'queue' => env('REDIS_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' => [
'driver' => env('QUEUE_FAILED_DRIVER', 'database'),
'database' => env('DB_CONNECTION', 'mysql'),
'table' => 'failed_jobs',
],
];
================================================
FILE: config/services.php
================================================
[
'domain' => env('MAILGUN_DOMAIN'),
'secret' => env('MAILGUN_SECRET'),
'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'),
],
'postmark' => [
'token' => env('POSTMARK_TOKEN'),
],
'ses' => [
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
],
];
================================================
FILE: config/session.php
================================================
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' => 1 * (60 * 24 * 365),
'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' => env('SESSION_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", "memcached", or "dynamodb" session drivers you may
| list a cache store that should be used for these sessions. This value
| must match with one of the application's configured cache "stores".
|
*/
'store' => env('SESSION_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'),
/*
|--------------------------------------------------------------------------
| 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
| will set this value to "lax" since this is a secure default value.
|
| Supported: "lax", "strict", "none", null
|
*/
'same_site' => 'lax',
];
================================================
FILE: config/view.php
================================================
[
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' => env(
'VIEW_COMPILED_PATH',
realpath(storage_path('framework/views'))
),
];
================================================
FILE: config/wagenabled.php
================================================
env('APP_URL'),
"app_name" => env('APP_NAME', 'Wag Enabled'),
"react_server_base_url" => env('REACT_SERVER_BASE_URL', 'http://localhost:3000'),
"status_codes" => [
"success" => "200",
"success_with_empty" => "201",
"auth_fail" => "401",
"form_validation" => "422",
"normal_error" => "403",
"server_side" => "500",
],
"path" => [
//HTTP URL Paths [Eg. get image]
//http://localhost:8000/storage/app/public/
"url" => [
"user_profile_image_path" => $uploadsUrlPath."profile/",
"users_pet_image_path" => $uploadsUrlPath."users_pet/",
"watch_and_learn_thumbnail_path" => $uploadsUrlPath."watch_and_learn/images/",
"watch_and_learn_author_path" => $uploadsUrlPath."watch_and_learn/author/",
"watch_and_learn_video_path" => $uploadsUrlPath."watch_and_learn/videos/",
"watch_and_learn_media_path" => $uploadsUrlPath."watch_and_learn/media/",
"pet_pro_gallery_image_path" => $uploadsUrlPath."pet_pro/galleries/",
"testimonial_image_path" => $uploadsUrlPath."testimonial/images/",
"product_review_image_path" => $uploadsUrlPath."product_review/images/",
],
//Storage Document Paths [Eg. store image]
// /var/www/html/projectname/storage/
"doc" => [
"user_profile_image_path" => $uploadsDocPath."profile/",
"users_pet_image_path" => $uploadsDocPath."users_pet/",
"watch_and_learn_thumbnail_path" => $uploadsDocPath."watch_and_learn/images/",
"watch_and_learn_author_path" => $uploadsDocPath."watch_and_learn/author/",
"watch_and_learn_video_path" => $uploadsDocPath."watch_and_learn/videos/",
"watch_and_learn_media_path" => $uploadsDocPath."watch_and_learn/media/",
"pet_pro_gallery_image_path" => $uploadsDocPath."pet_pro/galleries/",
"testimonial_image_path" => $uploadsDocPath."testimonial/images/",
"product_review_image_path" => $uploadsDocPath."product_review/images/",
]
],
"days" => [ "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday" ],
"google_map" => [
"api_key" => env("GOOGLE_API_KEY"),
],
"no_of_care_from_best_display" => 6,
"per_page_pet_pro_results" => 6,
"per_page_watch_and_learn_results" => 6,
"per_page_product_review_results" => 6,
"no_of_related_video_display" => 3,
"no_of_review_display" => 3,
"no_of_comment_display" => 3,
"no_of_comment_children_display" => 2,
"comment_depth" => 2,
"no_of_saved_video_display" => 3,
"no_of_loved_pet_pro_display" => 2,
"no_of_user_pet_pro_review_display" => 2,
"no_of_users_pet_display" => 3,
"send_contact_to_email" => env("CONTACT_TO_MAIL", 'ks@hyperspaceventures.com'),
"send_comment_notification_to_email" => env("COMMENT_NOTIFICATION_TO_MAIL", 'ks@hyperspaceventures.com'),
"product_review_category_id" => 26,
];
================================================
FILE: database/.gitignore
================================================
*.sqlite
*.sqlite-journal
================================================
FILE: database/factories/UserFactory.php
================================================
define(User::class, function (Faker $faker) {
return [
'name' => $faker->name,
'email' => $faker->unique()->safeEmail,
'email_verified_at' => now(),
'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password
'remember_token' => Str::random(10),
];
});
================================================
FILE: database/migrations/2014_10_12_000000_create_users_table.php
================================================
id();
$table->string('name')->nullable();
$table->string('email')->unique()->nullable();
$table->string('phone_number')->nullable();
$table->string('profile_image')->nullable();
$table->string('provider')->nullable();
$table->string('provider_id')->nullable();
$table->integer('city_id')->nullable();
$table->integer('state_id')->nullable();
$table->integer('country_id')->nullable();
$table->string('zipcode')->nullable();
$table->string('latitude')->nullable();
$table->string('longitude')->nullable();
$table->string('vet_address')->nullable();
$table->string('vet_phone_number')->nullable();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->softDeletes();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('users');
}
}
================================================
FILE: database/migrations/2014_10_12_100000_create_password_resets_table.php
================================================
id();
$table->string('email')->index();
$table->string('token');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('password_resets');
}
}
================================================
FILE: database/migrations/2019_08_19_000000_create_failed_jobs_table.php
================================================
id();
$table->text('connection');
$table->text('queue');
$table->longText('payload');
$table->longText('exception');
$table->timestamp('failed_at')->useCurrent();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('failed_jobs');
}
}
================================================
FILE: database/migrations/2020_04_23_050448_create_admin_users_table.php
================================================
bigIncrements('id');
$table->string('name')->nullable();
$table->string("email")->unique();
$table->string('password');
$table->string("phone_number")->nullable();
$table->enum('supper_admin', ["1", "0"])->default("0");
$table->timestamps();
});
$insertArr = [
[ "email" => "admin@wagenabled.com", "password" => \Hash::make("123456"), "supper_admin" => "1"],
];
DB::table('admin_users')->insert($insertArr);
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('admin_users');
}
}
================================================
FILE: database/migrations/2020_04_25_052414_create_breeds_table.php
================================================
id();
$table->string('name')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('breeds');
}
}
================================================
FILE: database/migrations/2020_04_25_063535_create_user_pets_table.php
================================================
id();
$table->unsignedBigInteger("user_id")->nullable();
$table->string('name')->nullable();
$table->string('pet_image')->nullable();
$table->timestamps();
$table->foreign('user_id')->references('id')->on('users');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('user_pets');
}
}
================================================
FILE: database/migrations/2020_04_25_083408_create_contacts_table.php
================================================
id();
$table->string('name')->nullable();
$table->string('email')->nullable();
$table->text('message')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('contacts');
}
}
================================================
FILE: database/migrations/2020_04_25_090404_create_business_requests_table.php
================================================
id();
$table->string('first_name')->nullable();
$table->string('last_name')->nullable();
$table->string('business_name')->nullable();
$table->string('contact_email')->unique()->nullable();
$table->text('message')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('business_requests');
}
}
================================================
FILE: database/migrations/2020_04_25_092709_create_newsletters_table.php
================================================
id();
$table->string('email')->unique()->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('newsletters');
}
}
================================================
FILE: database/migrations/2020_04_25_094050_create_watch_and_learn_categories_table.php
================================================
id();
$table->string('name')->nullable();
$table->softDeletes();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('watch_and_learn_categories');
}
}
================================================
FILE: database/migrations/2020_04_25_104210_create_watch_and_learn_authors_table.php
================================================
id();
$table->string('name')->nullable();
$table->string('profile_image')->nullable();
$table->string('website_link')->nullable();
$table->text('about')->nullable();
$table->softDeletes();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('watch_and_learn_author');
}
}
================================================
FILE: database/migrations/2020_04_25_104211_create_watch_and_learn_table.php
================================================
id();
$table->unsignedBigInteger("category_id")->nullable();
$table->unsignedBigInteger('author_id')->nullable();
$table->string('slug')->unique()->nullable();
$table->string('title')->nullable();
$table->text('description')->nullable();
$table->string('blog_meta_description')->nullable();
$table->string('thumbnail')->nullable();
$table->enum('video_type', ['embed_link', 'video_upload'])->nullable();
$table->string('video_file')->nullable();
$table->string('embed_link')->nullable();
$table->string('duration')->nullable();
$table->string('alt_image_text')->nullable();
$table->softDeletes();
$table->timestamps();
$table->foreign('category_id')->references('id')->on('watch_and_learn_categories');
$table->foreign('author_id')->references('id')->on('watch_and_learn_authors');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('watch_and_learn');
}
}
================================================
FILE: database/migrations/2020_04_27_064153_create_watch_and_learn_comments_table.php
================================================
id();
$table->unsignedBigInteger("watch_and_learn_id")->nullable();
$table->integer('parent_comment_id')->default(0);
$table->unsignedBigInteger("user_id")->nullable();
$table->string('name')->nullable();
$table->string('email')->nullable();
$table->text('message')->nullable();
$table->timestamps();
$table->foreign('watch_and_learn_id')->references('id')->on('watch_and_learn');
$table->foreign('user_id')->references('id')->on('users');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('watch_and_learn_comments');
}
}
================================================
FILE: database/migrations/2020_04_27_070449_create_user_saved_videos_table.php
================================================
id();
$table->unsignedBigInteger("watch_and_learn_id")->nullable();
$table->unsignedBigInteger("user_id")->nullable();
$table->timestamps();
$table->foreign('watch_and_learn_id')->references('id')->on('watch_and_learn');
$table->foreign('user_id')->references('id')->on('users');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('user_saved_videos');
}
}
================================================
FILE: database/migrations/2020_04_27_093324_create_countries_table.php
================================================
id();
$table->string('sortname', 5)->default('');
$table->string('name')->default('');
$table->string('phonecode', 11)->default('');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('countries');
}
}
================================================
FILE: database/migrations/2020_04_27_093329_create_states_table.php
================================================
id();
$table->string('name')->default('');
$table->integer('country_id')->default(0);
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('states');
}
}
================================================
FILE: database/migrations/2020_04_27_093333_create_cities_table.php
================================================
id();
$table->string('name')->default('');
$table->integer('state_id')->default(0);
$table->string('zipcode')->nullable();
$table->string('area_code')->default();
$table->string('city_latitude')->default();
$table->string('city_longitude')->default();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('cities');
}
}
================================================
FILE: database/migrations/2020_04_27_093334_create_pet_pro_categories_table.php
================================================
id();
$table->string('name')->nullable();
$table->softDeletes();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('pet_pro_categories');
}
}
================================================
FILE: database/migrations/2020_04_27_093335_create_pet_pros_table.php
================================================
id();
$table->string('slug')->unique()->nullable();
$table->string('store_name')->nullable();
$table->string('email')->nullable();
$table->string('phone_number')->nullable();
$table->string('address_line_1')->nullable();
$table->string('address_line_2')->nullable();
$table->unsignedBigInteger("category_id")->nullable();
$table->integer('state_id')->nullable();
$table->integer('city_id')->nullable();
$table->string('postal_code')->nullable();
$table->string('donation_link')->nullable();
$table->text('description')->nullable();
$table->string('latitude')->nullable();
$table->string('longitude')->nullable();
$table->string('timezone')->nullable();
$table->float('avg_rating', 8,2)->default(0);
$table->integer('total_rated')->default(0);
$table->boolean('is_featured_pet_pro')->default(0);
$table->string('featured_title')->nullable();
$table->text('featured_description')->nullable();
$table->softDeletes();
$table->timestamps();
$table->foreign('category_id')->references('id')->on('pet_pro_categories');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('pet_pros');
}
}
================================================
FILE: database/migrations/2020_04_27_122139_create_pet_pro_timetables_table.php
================================================
id();
$table->unsignedBigInteger("pet_pro_id")->nullable();
$table->string('day')->nullable();
$table->time('open')->nullable();
$table->time('close')->nullable();
$table->timestamps();
$table->foreign('pet_pro_id')->references('id')->on('pet_pros');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('pet_pro_timetable');
}
}
================================================
FILE: database/migrations/2020_04_28_103645_create_user_loved_pet_pros_table.php
================================================
id();
$table->unsignedBigInteger("user_id")->nullable();
$table->unsignedBigInteger("pet_pro_id")->nullable();
$table->timestamps();
$table->foreign('user_id')->references('id')->on('users');
$table->foreign('pet_pro_id')->references('id')->on('pet_pros');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('user_loved_pet_pros');
}
}
================================================
FILE: database/migrations/2020_04_28_103815_create_pet_pro_reviews_table.php
================================================
id();
$table->unsignedBigInteger("pet_pro_id")->nullable();
$table->unsignedBigInteger("user_id")->nullable();
$table->string('name')->nullable();
$table->float('rate', 8,2)->default(0);
$table->text('description')->nullable();
$table->timestamps();
$table->foreign('pet_pro_id')->references('id')->on('pet_pros');
$table->foreign('user_id')->references('id')->on('users');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('pet_pro_reviews');
}
}
================================================
FILE: database/migrations/2020_04_28_103821_create_pet_pro_galleries_table.php
================================================
id();
$table->unsignedBigInteger("pet_pro_id")->nullable();
$table->string("gallery_image")->nullable();
$table->boolean('is_cover_image')->default(0);
$table->timestamps();
$table->foreign('pet_pro_id')->references('id')->on('pet_pros');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('pet_pro_galleries');
}
}
================================================
FILE: database/migrations/2020_04_28_103827_create_pet_pro_deals_table.php
================================================
id();
$table->unsignedBigInteger("pet_pro_id")->nullable();
$table->string('deal')->nullable();
$table->text('fine_print')->nullable();
$table->date('start_date')->nullable();
$table->date('end_date')->nullable();
$table->enum('status', ['active', 'pause'])->default('active');
$table->softDeletes();
$table->timestamps();
$table->foreign('pet_pro_id')->references('id')->on('pet_pros');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('pet_pro_deals');
}
}
================================================
FILE: database/migrations/2020_04_28_103833_create_pet_pro_deal_claims_table.php
================================================
id();
$table->unsignedBigInteger("pet_pro_deal_id")->nullable();
$table->unsignedBigInteger("user_id")->nullable();
$table->timestamps();
$table->foreign('pet_pro_deal_id')->references('id')->on('pet_pro_deals');
$table->foreign('user_id')->references('id')->on('users');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('pet_pro_deal_claims');
}
}
================================================
FILE: database/migrations/2020_04_28_103839_create_pet_pro_events_table.php
================================================
id();
$table->unsignedBigInteger("pet_pro_id")->nullable();
$table->string('name')->nullable();
$table->date('event_date')->nullable();
$table->time('start_time')->nullable();
$table->time('end_time')->nullable();
$table->text('address')->nullable();
$table->string('url')->nullable();
$table->enum('status', ['active', 'pause'])->default('active');
$table->softDeletes();
$table->timestamps();
$table->foreign('pet_pro_id')->references('id')->on('pet_pros');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('pet_pro_events');
}
}
================================================
FILE: database/migrations/2020_05_25_094716_create_users_pet_breed_table.php
================================================
id();
$table->unsignedBigInteger("users_pet_id")->nullable();
$table->unsignedBigInteger("breed_id")->nullable();
$table->timestamps();
$table->foreign('users_pet_id')->references('id')->on('user_pets');
$table->foreign('breed_id')->references('id')->on('breeds');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('users_pet_breeds');
}
}
================================================
FILE: database/migrations/2020_06_08_114705_create_watch_and_learn_medias_table.php
================================================
id();
$table->string('filename')->nullable();
$table->string('original_name')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('watch_and_learn_medias');
}
}
================================================
FILE: database/migrations/2020_06_30_055558_add_extra_fields_to_newsletters_table.php
================================================
string('first_name')->nullable()->after('email');
$table->string('zipcode')->nullable()->after('first_name');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('newsletters', function (Blueprint $table) {
$table->dropColumn('first_name');
$table->dropColumn('zipcode');
});
}
}
================================================
FILE: database/migrations/2020_07_03_051223_add_status_to_watch_and_learn_table.php
================================================
enum('status', ["draft", "published"])->default("draft")->after('alt_image_text');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('watch_and_learn', function (Blueprint $table) {
$table->dropColumn('status');
});
}
}
================================================
FILE: database/migrations/2020_07_03_062408_alter_table_watch_and_learn_change_blog_meta_description.php
================================================
text('blog_meta_description')->nullable()->change();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('watch_and_learn', function (Blueprint $table) {
$table->string('blog_meta_description')->nullable()->change();
});
}
}
================================================
FILE: database/migrations/2020_07_11_100910_create_testimonials_table.php
================================================
id();
$table->string('title');
$table->longText('description');
$table->string('client_name');
$table->string('client_title');
$table->string('image');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('testimonials');
}
}
================================================
FILE: database/migrations/2020_07_13_064659_add_is_valid_column_in_cities_table.php
================================================
enum('is_valid', [1, 0])->default(0)->after('city_longitude');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('cities', function (Blueprint $table) {
$table->dropColumn('is_valid');
});
}
}
================================================
FILE: database/migrations/2020_07_13_085917_create_pet_pro_selected_categories.php
================================================
id();
$table->unsignedBigInteger("pet_pro_id");
$table->unsignedBigInteger("category_id");
$table->timestamps();
$table->foreign('pet_pro_id')->references('id')->on('pet_pros')->onDelete('cascade');
$table->foreign('category_id')->references('id')->on('pet_pro_categories');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('pet_pro_selected_categories');
}
}
================================================
FILE: database/migrations/2020_07_17_064151_add_website_url_to_pet_pros_table.php
================================================
string('website_url')->nullable()->after('email');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('pet_pros', function (Blueprint $table) {
$table->dropColumn('website_url');
});
}
}
================================================
FILE: database/migrations/2020_07_22_115515_add_is_cropped_image_to_pet_pro_galleries_table.php
================================================
boolean('is_cropped_image')->default(1)->after('is_cover_image');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('pet_pro_galleries', function (Blueprint $table) {
$table->dropColumn('is_cropped_image');
});
}
}
================================================
FILE: database/migrations/2020_07_23_052716_create_pet_pro_services_offered_table.php
================================================
id();
$table->unsignedBigInteger("pet_pro_id");
$table->string("service")->nullable();
$table->timestamps();
$table->foreign('pet_pro_id')->references('id')->on('pet_pros')->onDelete('cascade');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('pet_pro_services_offered');
}
}
================================================
FILE: database/migrations/2020_07_30_054457_add_descriptionto_pet_pro_events_table.php
================================================
text('description')->nullable()->after('name');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('pet_pro_events', function (Blueprint $table) {
$table->dropColumn('description');
});
}
}
================================================
FILE: database/migrations/2020_08_04_043353_add_event_end_date_to_pet_pro_events_table.php
================================================
date('event_end_date')->nullable()->after('event_date');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('pet_pro_events', function (Blueprint $table) {
$table->dropColumn('event_end_date');
});
}
}
================================================
FILE: database/migrations/2020_08_05_043704_add_vet_place_name_to_users_table.php
================================================
string('vet_place_name')->nullable()->after('longitude');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('vet_place_name');
});
}
}
================================================
FILE: database/migrations/2020_08_22_042827_change_total_rated_column_type.php
================================================
float('total_rated', 8,2)->default(0)->change();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('pet_pros', function ($table) {
$table->integer('total_rated')->default(0)->change();
});
}
}
================================================
FILE: database/migrations/2020_09_14_042049_create_watch_and_learn_deals_table.php
================================================
id();
$table->unsignedBigInteger("watch_and_learn_id")->nullable();
$table->string('deal')->nullable();
$table->text('fine_print')->nullable();
$table->date('start_date')->nullable();
$table->date('end_date')->nullable();
$table->enum('status', ['active', 'pause'])->default('active');
$table->softDeletes();
$table->timestamps();
$table->foreign('watch_and_learn_id')->references('id')->on('watch_and_learn');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('watch_and_learn_deals');
}
}
================================================
FILE: database/migrations/2020_09_14_042054_create_watch_and_learn_deal_claims_table.php
================================================
id();
$table->unsignedBigInteger("watch_and_learn_deal_id")->nullable();
$table->unsignedBigInteger("user_id")->nullable();
$table->timestamps();
$table->foreign('watch_and_learn_deal_id')->references('id')->on('watch_and_learn_deals');
$table->foreign('user_id')->references('id')->on('users');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('watch_and_learn_deal_claims');
}
}
================================================
FILE: database/migrations/2020_09_14_052137_add_parent_id_to_watch_and_learn_categories_table.php
================================================
integer('parent_id')->default(0)->after('id');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('watch_and_learn_categories', function (Blueprint $table) {
$table->dropColumn('parent_id');
});
}
}
================================================
FILE: database/migrations/2020_10_01_050437_add_short_name_column_to_states_table.php
================================================
string('short_name')->after('name')->nullable();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('states', function (Blueprint $table) {
$table->dropColumn('short_name');
});
}
}
================================================
FILE: database/migrations/2021_01_13_155451_create_pet_country_state_city_table.php
================================================
bigIncrements('id');
$table->unsignedBigInteger('pet_pro_id')->nullable();
$table->unsignedBigInteger('country_id')->nullable();
$table->unsignedBigInteger('state_id')->nullable();
$table->unsignedBigInteger('city_id')->nullable();
$table->string('latitude')->nullable();
$table->string('longitude')->nullable();
$table->foreign('pet_pro_id')
->references('id')
->on('pet_pros')->onDelete('cascade');
$table->foreign('country_id')
->references('id')
->on('countries')->onDelete('cascade');
$table->foreign('state_id')
->references('id')
->on('states')->onDelete('cascade');
$table->foreign('city_id')
->references('id')
->on('cities')->onDelete('cascade');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('pet_country_state_city');
}
}
================================================
FILE: database/migrations/2021_01_26_191038_create_business_natures_table.php
================================================
id();
$table->string('name')->nullable();
$table->softDeletes();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('business_natures');
}
}
================================================
FILE: database/migrations/2021_01_26_191322_create_pet_pro_selected_business_natures_table.php
================================================
id();
$table->unsignedBigInteger("pet_pro_id");
$table->unsignedBigInteger("business_id");
$table->timestamps();
$table->foreign('pet_pro_id')->references('id')->on('pet_pros')->onDelete('cascade');
$table->foreign('business_id')->references('id')->on('business_natures');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('pet_pro_selected_business_natures');
}
}
================================================
FILE: database/migrations/2021_02_02_074857_create_watch_and_learn_selected_categories_table.php
================================================
id();
$table->unsignedBigInteger("watch_and_learn_id");
$table->unsignedBigInteger("selected_category_id");
$table->timestamps();
$table->foreign('watch_and_learn_id')->references('id')->on('watch_and_learn')->onDelete('cascade');
$table->foreign('selected_category_id')->references('id')->on('watch_and_learn_categories');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('watch_and_learn_selected_categories');
}
}
================================================
FILE: database/migrations/2021_02_18_080850_add_column_user_to_table_pet_pros.php
================================================
unsignedBigInteger("user_id")->nullable();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->string("user_type")->nullable();
$table->string("status")->nullable();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::disableForeignKeyConstraints();
Schema::table('pet_pros', function (Blueprint $table) {
$table->dropColumn("user_id");
$table->dropColumn("user_type");
$table->dropColumn("status");
});
Schema::enableForeignKeyConstraints();
}
}
================================================
FILE: database/migrations/2021_03_02_065300_add_column_new_detail_to_table_pet_pros.php
================================================
text('new_detail')->nullable();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('pet_pros', function (Blueprint $table) {
$table->dropColumn('new_detail');
});
}
}
================================================
FILE: database/migrations/2021_06_01_080340_create_pet_types_table.php
================================================
id();
$table->string('name')->nullable();
$table->softDeletes();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('pet_types');
}
}
================================================
FILE: database/migrations/2021_06_01_081012_create_pet_pros_selected_pet_types_table.php
================================================
id();
$table->unsignedBigInteger("pet_pro_id");
$table->unsignedBigInteger("pet_type_id");
$table->timestamps();
$table->foreign('pet_pro_id')->references('id')->on('pet_pros')->onDelete('cascade');
$table->foreign('pet_type_id')->references('id')->on('pet_types');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('pet_pros_selected_pet_types');
}
}
================================================
FILE: database/migrations/2021_08_06_095431_add_column_adoption_date_in_user_pets_table.php
================================================
string('adoption_date')->nullable();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('user_pets', function (Blueprint $table) {
$table->dropColumn("adoption_date");
});
}
}
================================================
FILE: database/migrations/2021_08_06_095832_add_column_address_in_users_table.php
================================================
text('address')->nullable();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn("address");
});
}
}
================================================
FILE: database/seeds/CitiesTableSeeder.php
================================================
call(UserSeeder::class);
$this->call([
CountriesTableSeeder::class,
StatesTableSeeder::class,
CitiesTableSeeder::class,
]);
}
}
================================================
FILE: database/seeds/StatesTableSeeder.php
================================================
./tests/Unit
./tests/Feature
./app
================================================
FILE: public/.htaccess
================================================
Options -MultiViews -Indexes
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]
# Send Requests To Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
================================================
FILE: public/admin-theme/css/admin-style.css
================================================
h1,
h2,
h3,
h4,
h5,
h6,
p,
a {
margin: 0;
padding: 0;
}
.btn-deleted {
background-color: #f44455;
border-radius: 3px;
font-family: 'CircularStd';
font-weight: 400;
font-size: 14px;
min-width: 120px;
padding: 10px;
color: #fff;
border: none;
}
.gc-gray-btn {
background-color: #404040;
border-radius: 3px;
font-weight: 400;
font-size: 14px;
min-width: 120px;
padding: 10px;
color: #fff;
border: none;
}
.gc-light-gray-btn {
background-color: #b6b6b6;
border-radius: 3px;
font-weight: 400;
font-size: 14px;
min-width: 120px;
padding: 10px;
color: #fff;
border: none;
}
.gc-yellow-btn,
a.gc-yellow-btn {
background-color: #f3ca27;
border-radius: 3px;
font-weight: 400;
font-size: 14px;
min-width: 120px;
padding: 10px;
color: #fff !important;
border: none;
}
.gc-green-btn {
background-color: #68c452;
border-radius: 3px;
font-weight: 400;
font-size: 14px;
min-width: 120px;
padding: 10px;
color: #fff;
border: none;
}
.gc-light-green-btn {
background-color: #60da9c;
border-radius: 3px;
font-weight: 400;
font-size: 14px;
min-width: 120px;
padding: 10px;
color: #fff;
border: none;
}
.gc-main {
display: flex;
min-height: 100vh;
flex-direction: column;
}
.gc-content {
flex: 1;
background: #6161FF;
padding: 25px 10px !important;
}
nav.sidebar .sidebar-nav li a i {
font-size: 18px;
margin-right: 10px;
}
.gc-order-title {
font-size: 25px;
font-weight: bold;
}
.gc-admin-table-note {
max-height: 320px;
overflow-y: auto;
overflow-x: auto;
}
.gc-admin-table-note::-webkit-scrollbar {
width: 3px;
height: 3px;
}
.gc-admin-table-note::-webkit-scrollbar-track {
background-color: #f8f8f8
}
.gc-admin-table-note::-webkit-scrollbar-thumb {
background: #bcbcbc;
}
.gc-admin-table-note ul {
padding: 0;
}
.gc-admin-table-note h3 {
border: 1px solid #e7e7e7 !important;
color: #464a53;
font-weight: 400;
font-size: 15px;
min-width: 190px;
padding: 13px;
background-color: #fafafa;
}
.gc-admin-table-note h4 {
color: #464a53;
font-weight: 400;
font-size: 15px;
min-width: 190px;
padding: 12px 0;
margin: 0;
border-bottom: 1px solid #e7e7e7 !important;
}
.gc-admin-table-note li:first-child {
box-shadow: none;
padding: 0;
margin-bottom: 0;
background-color: transparent;
border: none !important;
}
.gc-admin-table-note li {
display: flex;
flex-wrap: nowrap;
margin-bottom: 10px;
display: flex;
flex-wrap: nowrap;
background-color: #fff;
border-radius: 3px;
}
.gc-card {
height: 100%;
}
.gc-order-offer h5 {
margin-bottom: 0;
}
.gc-order-offer .col-sm-6,
.gc-order-offer .col-md-7,
.gc-order-offer .col-md-5 {
margin-bottom: 20px;
}
.form-control:focus {
box-shadow: none;
outline: none
}
select.form-control {
appearance: none;
-moz-appearance: none;
padding: 10px 15px;
-webkit-appearance: none;
height: auto;
background: url(../images/dropdown.png) no-repeat;
background-position: right 15px center;
background-size: 10px;
padding-right: 30px;
min-width: 100px;
}
.dataTables_filter input[type="search"] {
height: auto;
padding: 10px 15px;
}
label b {
font-weight: bold;
font-size: 16px;
}
table.dataTable {
width: 100% !important;
margin-top: 0 !important;
}
button,
a{
transition: all 0.3s linear 0s !important;
-webkit-transition: all 0.3s linear 0s !important;
-moz-transition: all 0.3s linear 0s !important;
-o-transition: all 0.3s linear 0 !important;
}
button:focus,
a:focus{
box-shadow: none !important;
outline: none !important;
}
.hs-admin a{
color: #6161FF;
}
.hs-admin .navbar{
border:none;
padding: 22px;
}
.hs-admin .page-item.active .page-link{
background-color: #6161FF;
border-color: #6161FF;
}
.hs-admin .media svg path,
.hs-admin .media svg circle,
.hs-admin .media svg polyline,
.hs-admin .media svg line{
stroke: #fff;
}
.hs-admin .sidebar{
background-color: #6161FF;
box-shadow: 0px 3px 10px 0px rgba(119, 119, 119, 0.1);
}
.hs-admin .sidebar-content{
background-color: #6161FF;
width: calc(100% - -25px);
}
.hs-admin .sidebar-brand{
padding: 13px 15px;
display: inline-block;
margin-left: 25px;
}
.hs-admin .sidebar-brand img{
width: 100%;
height: 94px;
}
.hs-admin .sidebar-brand span{
color: #39504b;
}
.hs-admin .sidebar-nav a{
background: transparent;
color: rgba(255, 255, 255, 0.6);
font-size: 14px;
font-weight: 500;
border-radius: 8px 0 0 8px;
}
.hs-admin .sidebar-nav li{
border-left: 4px solid transparent;
}
.hs-admin .sidebar-nav .sidebar-header{
text-transform: uppercase;
color: #ffffff;
padding: 25px 30px 15px;
/* font-weight: bold; */
}
.hs-admin .sidebar-nav .active a,
.hs-admin .sidebar-nav a:hover,
.hs-admin .sidebar-nav a:focus{
/* background: rgba(39,193,243,0.1) !important; */
color: #fff !important;
background: #4040AD !important;
}
/* .hs-admin .sidebar-nav li.active{
border-left:4px solid #6161FF;
} */
.hs-admin .card-body.bg-danger{
background-image: -moz-linear-gradient( to right, rgb(227,108,108) 0%, rgb(238,75,75) 100%);
background-image: -webkit-linear-gradient( to right, rgb(227,108,108) 0%, rgb(238,75,75) 100%);
background-image: -ms-linear-gradient( to right, rgb(227,108,108) 0%, rgb(238,75,75) 100%);
background-image: linear-gradient( to right, rgb(227,108,108) 0%, rgb(238,75,75) 100%);
}
.hs-admin .card-body.bg-warning{
background-image: -moz-linear-gradient( to right, rgb(244,182,101) 1%, rgb(253,224,63) 100%);
background-image: -webkit-linear-gradient( to right, rgb(244,182,101) 1%, rgb(253,224,63) 100%);
background-image: -ms-linear-gradient( to right, rgb(244,182,101) 1%, rgb(253,224,63) 100%);
background-image: linear-gradient( to right, rgb(244,182,101) 1%, rgb(253,224,63) 100%);
}
.hs-admin .card-body.bg-success{
background-image: -moz-linear-gradient( to right, rgb(35,189,184) 0%, rgb(67,231,148) 100%);
background-image: -webkit-linear-gradient( to right, rgb(35,189,184) 0%, rgb(67,231,148) 100%);
background-image: -ms-linear-gradient( to right, rgb(35,189,184) 0%, rgb(67,231,148) 100%);
background-image: linear-gradient( to right, rgb(35,189,184) 0%, rgb(67,231,148) 100%);
}
.hs-admin .card-body.bg-info{
background-image: -moz-linear-gradient( to right, rgb(35,144,189) 0%, rgb(67,156,231) 100%);
background-image: -webkit-linear-gradient( to right, rgb(35,144,189) 0%, rgb(67,156,231) 100%);
background-image: -ms-linear-gradient( to right, rgb(35,144,189) 0%, rgb(67,156,231) 100%);
background-image: linear-gradient( to right, rgb(35,144,189) 0%, rgb(67,156,231) 100%);
}
.hs-admin .form-control{
height: auto;
border:1px solid #dddfe1 !important;
padding: 8px !important;
/* background: white; */
border-radius: 6px;
}
.hs-admin form .row.hs-user{
align-items: center;
}
.hs-blue-btn{
background-color: #6161FF;
border-radius: 3px;
font-weight: 400;
font-size: 14px;
min-width: 120px;
padding: 10px;
color: #fff !important;
border: none !important;
}
.hs-blue-btn:focus,
.hs-blue-btn:hover,
.hs-blue-btn:active{
background-color: #6161FF !important;
box-shadow: none !important;
outline: none;
opacity: 0.5;
}
.hs-green-btn{
background-color: #57d371;
border-radius: 3px;
font-weight: 400;
font-size: 14px;
min-width: 120px;
padding: 10px;
color: #fff !important;
border: none !important;
}
.hs-green-btn:focus,
.hs-green-btn:hover,
.hs-green-btn:active{
background-color: #57d371 !important;
box-shadow: none !important;
outline: none;
opacity: 0.5;
}
.hs-gray-btn{
border-radius: 3px;
background-color:#b6b6b6;
min-width: 120px;
font-size: 14px;
color: #fff !important;
padding: 10px;
border: none !important;
}
.hs-gray-btn:focus,
.hs-gray-btn:hover,
.hs-gray-btn:active{
background-color:#b6b6b6 !important;
box-shadow: none !important;
outline: none;
opacity: 0.5;
}
.hs-admin .card{
border: none;
}
.hs-admin .card-body{
border-radius: 3px;
box-shadow: 0px 3px 10px 0px rgba(119, 119, 119, 0.1);
}
.hs-admin .hs-bg-remove{
background-color: transparent;
}
.hs-admin .hs-bg-remove .card-body{
box-shadow: none;
padding: 15px 0;
}
.hs-admin .hs-bg-remove th,
.hs-admin .hs-bg-remove td{
border: none;
padding: 20px 15px;
}
.hs-admin .hs-bg-remove th{
padding: 10px 15px !important;
}
.hs-admin .hs-bg-remove th:before,
.hs-admin .hs-bg-remove th:after{
display: none !important;
bottom: auto !important;
top: 50%;
transform: translateY(-50%);
}
.hs-admin .hs-bg-remove tbody tr{
box-shadow: 0px 3px 10px 0px rgba(119, 119, 119, 0.1);
background-color: #fff;
}
.hs-admin .hs-bg-remove table{
border-spacing: 0 10px;
}
.hs-admin table td button.btn-success,
.hs-admin table td button.btn-danger,
.hs-admin table td button.btn-warning{
line-height: 14px;
border-radius: 5px;
background-color: #71d875;
border:none;
}
button.btn-light{
line-height: 14px;
border-radius: 5px;
background-color: #D3D3D3;
border:none;
color: #fff;
}
button.btn-light:hover{
color: #fff !important;
opacity: 1 !important;
background-color: #D3D3D3 !important;
}
.hs-admin table td button.btn-danger{
background-color: #e9655a;
}
.hs-admin table td button.btn-warning{
background-color: #d8d271;
}
admit design change css
.hs-sub-title-main{
font-weight: 500;
color: #464a53;
font-size: 22px;
display: inline-block;
}
admit design change css
admin-listing design change
.form-group label{
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.error{
color: #f44455 !important;
}
admin-listing design change
.restaurantImage .choice-restaurantimage-box{
height: 150px;
width: 150px;
overflow: hidden;
margin: auto;
}
.restaurantImage .choice-restaurantimage-box img{
width: 100%;
height: 100%;
object-fit: contain;
object-position: center center;
}
.restaurantImage .radio-box-and-restaurant-title {
display: flex;
align-items: center;
justify-content: center;
}
.restaurantImage .radio-box-and-restaurant-title small{
font-size: 12px;
color: #000;
text-align: center;
margin-left: 5px;
}
.restaurantImage .choose-file-box input{
border: 1px solid #e1e1e1;
display: flex;
width: 100%;
outline: none;
box-shadow: none;
cursor: pointer;
padding: 8px;
}
/* admin plan css file main */
.sidebar {
min-width: 200px !important;
max-width: 200px !important;
}
.admin-login-page{
display: flex;
justify-content: center;
align-items: center;
}
.wag-login-page .wag-admin-login-page{
padding: 20px;
border-radius: 4px;
background-image: linear-gradient(180deg, #FFFFFF 0%, #FAFAFA 99%);
box-shadow: 0 71px 137px 0 #5150E4;
}
.wag-login-page h2 {
font-size: 18px;
color: #1F314A;
margin-bottom: 10px;
font-weight: 700;
}
.wag-login-page h3 {
font-size: 18px;
color: #1F314A;
font-weight: 500;
margin-bottom: 15px;
}
.wag-admin-login-details-block p{
font-size: 15px;
color: #1F314A;
font-weight: 400;
margin-bottom: 15px;
}
.wag-admin-btns-sign{
background: #8A288F;
padding: 8px 15px;
height: 45px;
min-width: 160px;
display: inline-flex;
justify-content: center;
align-items: center;
border-radius: 100px;
font-size: 16px;
font-weight: 400;
color: #fff !important;
border: none;
text-transform: uppercase;
width: 100%;
transition: all 0.3s ease-in-out;
}
.wag-admin-btns-sign:hover{
opacity: 0.6;
}
.wag-admin-page-title-main{
font-size: 18px;
font-weight: 500;
color: #1F314A;
}
.wag-go-back-btn-main{
font-size: 16px;
font-weight: 500;
color: #6161FF !important;
text-decoration: none !important;
transition: all 0.3s ease-in-out;
}
.wag-go-back-btn-main:hover{
opacity: 0.7;
}
.wag-admin-btns-main{
font-size: 15px;
font-weight: 500;
color: white !important;
background: #6161FF;
outline: none;
box-shadow: none;
height: 38px;
display: inline-flex;
min-width: 160px;
align-items: center;
justify-content: center;
border-radius: 4px;
text-decoration: none !important;
border: none !important;
transition: all 0.3s ease-in-out;
}
.wag-admin-btns-main img{
width: 13px;
height: 13px;
object-fit: contain;
object-position: center;
margin-left: 10px;
transform: rotate(45deg);
}
.wag-admin-btns-main:hover{
opacity: 0.7;
}
label{
font-size: 14px;
font-weight: 500;
color: #1F314A;
}
.form-control{
font-size: 16px;
font-weight: 500;
color: #1F314A;
}
.wag-admin-plan-main-cover-section{
padding: 50px;
background: #F6F6F6;
border-radius: 10px;
min-height: 94vh;
}
.wag-member-block-main .wag-member-details-block-main{
padding: 20px;
background: white;
border-radius: 8px;
margin-bottom: 20px;
}
.wag-member-block-main .wag-member-details-block-main h2{
font-size: 33px;
font-weight: 500;
color: #1F314A;
}
.wag-member-block-main .wag-member-details-block-main p{
font-size: 15px;
font-weight: 400;
color: #1F314A;
}
.wag-page-main-header-bar {
padding: 20px 0 20px;
display: flex;
align-items: center;
justify-content: space-between;
}
.wag-page-main-header-bar .wag-title-bar-main h1{
/* font-size: 18px;
font-weight: 500;
color: #1F314A; */
}
.wag-page-main-header-bar .wag-title-and-nemu-block-main select{
border:none;
color: #768DFF;
outline: none;
box-shadow: none;
font-size: 16px;
font-weight: 500;
}
.wag-page-main-header-bar .wag-title-and-nemu-block-main input{
padding: 10px 15px;
border-radius: 4px;
border: 1px solid #dddfe1 !important;
background: white;
}
.wag-page-main-header-bar .wag-title-and-nemu-block-main input:focus{
outline: none;
box-shadow: none;
}
.wag-title-and-nemu-block-main .dropdown-menu{
border: 1px solid #6161ff !important;
border-radius: 0px;
top: 5px !important;
padding: 0 !important;
background: white;
text-align: center;
z-index: 3;
}
.wag-title-and-nemu-block-main .dropdown-menu .dropdown-item{
padding: 8px;
font-size: 14px;
font-weight: 500;
color: #6161ff !important;
border-bottom: 1px solid #6161ff;
transition: all 0.3s ease-in-out;
}
.wag-title-and-nemu-block-main .dropdown-menu .dropdown-item:hover{
color: white !important;
background-color: #6161ff;
}
.wag-title-and-nemu-block-main .dropdown-menu .dropdown-item:last-child{
border-bottom: none;
}
.wag-title-and-nemu-block-main .dropdown-toggle::after{
border: solid;
border-width: unset;
display: inline-block;
padding: unset;
-webkit-transform: rotate(45deg);
transform: rotate(-1deg);
margin-left: 0.255em;
vertical-align: 5.255em;
content: "";
border-top: 0.4em solid;
border-right: .4em solid transparent;
border-bottom: 0;
border-left: 0.4em solid transparent;
}
.daterangepicker{
right: 75px !important;
}
.wag-graph-main{
padding: 40px;
background: white;
border-radius: 12px;
}
.dataTables_processing{
background: transparent;
font-size: 16px;
font-weight: 500;
color: #1F314A;
}
.dataTables_info{
font-size: 14px;
font-weight: 500;
color: #1F314A;
}
.dataTables_filter label{
display: flex;
width: 100%;
align-items: center;
font-size: 15px;
font-weight: 500;
color: #1F314A;
}
.dataTables_filter input{
width: 100% !important;
font-size: 15px;
font-weight: 500;
color: #1F314A;
border: none !important;
border-radius: 6px !important;
}
.wag-admin-inner-page-main{
padding: 15px 50px;
z-index: 1;
position: relative;
}
.wag-table-main table thead tr th{
border: none;
font-size: 14px;
color: rgba(31, 49, 74, 0.5);
font-weight: 600;
outline: none;
box-shadow: none;
}
.wag-table-main table{
border-collapse: separate;
border-spacing: 0 1em;
}
.wag-table-main table tbody tr{
background: #f4f4f4;
box-shadow: 0px 1px 10.68px 0.32px rgba(0, 0, 0, 0.06);
transition: all 0.3s ease-in-out;
cursor: pointer;
}
.wag-table-main table tbody tr:hover{
background: #e2e2e2;
}
.wag-table-main table tbody tr td{
border: none;
font-size: 15px;
color: rgba(31, 49, 74, 0.5);
font-weight: 500;
outline: none;
box-shadow: none;
}
.wag-table-main table tbody tr td a i.fa-pause{
color: #FFAA01;
}
.wag-table-main table tbody tr td a i.fa-edit{
color: black;
margin: 0 3px;
}
.wag-table-main table tbody tr td a{
display: inline-block;
margin-right: 5px;
}
.wag-table-main table tbody tr td a i.fa-edit-icon{
background: url(/admin-theme/images/edit-icon.svg) no-repeat;
background-position: center;
background-size: contain;
width: 12px;
height: 14px;
}
.wag-table-main table tbody tr td a i.fa-trash-icon{
background: url(/admin-theme/images/delete-icon.svg) no-repeat;
background-position: center;
background-size: contain;
width: 9px;
height: 16px;
}
.wag-table-main table tbody tr td a i.fa-pause-icon{
background: url(/admin-theme/images/pause-icon.svg) no-repeat;
background-position: center;
background-size: contain;
width: 8px;
height: 12px;
}
.wag-table-main table tbody tr td a i.fa-file-icon{
background: url(/admin-theme/images/combined-file.svg) no-repeat;
background-position: center;
background-size: contain;
width: 12px;
height: 16px;
}
.wag-table-main table tbody tr td a i.fa-trash{
color: #FF6161;
}
.wag-table-main table tbody tr td a i.fa-link{
color: black;
}
.wag-table-main table tbody tr td.user-name-details{
border: none;
font-size: 15px;
color: #1F314A;
font-weight: 500;
outline: none;
box-shadow: none;
}
.dt-buttons{
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
background: #e4e4e4;
padding: 2px;
margin-top: 15px;
}
.wag-published-and-draft-btns{
width: 50%;
font-size: 16px;
padding: 8px;
border: none;
outline: none;
box-shadow: none;
color: #3e3e3e !important;
background: #f6f6f6;
}
.wag-published-and-draft-btns.dtb-active{
background: #e4e4e4;
}
.wag-published-and-draft-btns:hover{
background: transparent !important;
}
/* .wag-published-and-draft-btns{
width: 49%;
font-size: 20px;
padding: 10px;
border: none;
outline: none;
box-shadow: none;
color: #a3a3a3 !important;
background: #f6f6f6;
border: 2px solid #e2e2e2;
text-transform: uppercase;
} */
/* .wag-published-and-draft-btns.active{
color: white !important;
background: #a3a3a3;
border: 2px solid #dbdbdb;
text-transform: uppercase;
box-shadow: 2.121px 2.121px 6.51px 0.49px rgba(0, 0, 0, 0.15);
} */
.wag-inner-page-table-main table tbody tr{
background: #F9F9F9;
border-radius: 8px;
}
.wag-profile-details img{
object-fit: contain;
object-position: center;
}
.wag-profile-details-block-main .wag-profile-details{
display: inline-flex;
background: white;
padding: 20px;
border-radius: 10px;
width: 500px;
max-width: 100%;
}
.wag-profile-details .wag-profile-pic{
width: 100px;
height: 100px;
border-radius: 1000px;
overflow: hidden;
display: inline-block;
margin-right: 20px;
}
.wag-profile-details .wag-profile-pic img{
width: 100%;
height: 100%;
object-fit: cover;
object-position: center;
}
.wag-profile-details .wag-profile-pic-details .wag-profile-name-details{
display: flex;
flex-direction: column;
margin-bottom: 10px;
}
.wag-profile-details .wag-profile-pic-details .wag-profile-name-details label{
font-size: 14px;
font-weight: 400;
color: #7c8795;
margin-bottom: 2px;
}
.wag-profile-details .wag-profile-pic-details .wag-profile-name-details p{
font-size: 16px;
font-weight: bold;
color: #1F314A;
}
.wag-inner-page-main-section {
/* background: white;
padding: 25px;
border-radius: 10px; */
}
.wag-inner-page-main-section h2{
margin-bottom: 20px;
}
.wag-inner-section-block-main{
background: white;
padding: 20px;
border-radius: 10px;
margin-bottom: 20px;
}
.wag-inner-section-block-main .wag-donation-link-header-bar{
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 20px;
}
.wag-inner-section-block-main .wag-donation-link-header-bar h2{
margin-bottom: 0px;
}
.wag-inner-section-block-main .editorbox .form-control{
margin-top: 15px;
}
.wag-gallery-add-images-block-main .wag-gallery-add-block {
margin-bottom: 15px;
text-align: center;
}
.wag-gallery-add-images-block-main .wag-gallery-add-block .wag-gallery-img{
width: 150px;
height: 150px;
overflow: hidden;
border-radius: 8px;
margin: auto;
}
.wag-gallery-add-images-block-main .wag-gallery-add-block .wag-gallery-img img{
width: 100%;
height: 100%;
object-fit: contain;
object-position: center;
}
.wag-gallery-btns-block {
margin: auto;
text-align: center;
}
.wag-gallery-btns-block .wag-admin-btns-main{
min-width: 80px;
font-size: 14px;
height: 30px;
margin-top: 15px;
margin-bottom: 15px;
}
.wag-gallery-btns-block .deleteGalleryImageRecord{
background: red;
}
.tc-crop-img-section{
display: flex;
flex-direction: column;
width: 100%;
height: 100%;
}
.note-toolbar button:after{
display: none;
}
.note-editor .note-editable {
height: 250px;
}
.note-editor {
height: 300px;
border: 1px solid #dddfe1;
border-radius: 4px;
}
.note-editor .note-toolbar {
padding-bottom: 5px;
padding-left: 10px;
padding-top: 5px;
margin: 0;
background-color: #f5f5f5;
border-bottom: 1px solid #E7EAEC;
border-radius: 4px 4px 0 0;
}
.wag-medias-list-block-main .dropzone{
background: white !important;
padding: 20px !important;
border-radius: 10px !important;
border: 1px solid #d2d2d2 !important;
display: flex;
margin-bottom: 30px;
}
.wag-medias-list-block-main .dropzone .dz-message{
display: flex;
justify-content: center;
align-items: center;
margin: auto;
width: 100%;
}
.wag-medias-list-block-main .message{
font-size: 18px;
font-weight: 500;
color: #1F314A;
border: 1px solid #d5d5d5;
padding: 12px;
width: 100%;
border-radius: 4px;
}
.wag-medias-list-block-main .wag-images-medias-list-page{
display: flex;
width: calc(100% - -30px);
}
.wag-medias-list-block-main .wag-images-medias-list-page .row{
width: 100%;
margin: auto;
}
.wag-images-medias-list-page .file{
border-radius: 4px;
border: 1px solid #e8e8e8;
background: white;
margin-bottom: 20px;
}
.wag-images-medias-list-page .file .image{
width: 100%;
height: 150px;
overflow: hidden;
}
.wag-images-medias-list-page .file .image img{
width: 100%;
height: 100%;
object-fit: contain;
object-position: top;
}
.wag-images-medias-list-page .file .file-name{
display: flex;
justify-content: space-between;
width: 100%;
align-items: center;
padding: 10px;
background: #f2f2f2;
border: 1px solid #e8e8e8;
}
.wag-images-medias-list-page .wag-admin-btns-main i{
margin-right: 10px;
}
.wag-inner-section-block-main .upload-img-btn{
border: 1px solid;
border-color: #6161FF;
padding: 10px 35px;
color: #6161FF;
border-radius: 8px;
cursor: pointer;
}
.wag-inner-section-block-main .delete-img-btn{
border: 1px solid;
border-color: #ff0000;
padding: 10px 35px;
color: #ff0000;
border-radius: 8px;
cursor: pointer;
}
body::-webkit-scrollbar {
width: 12px;
}
body::-webkit-scrollbar-track {
background: rgba(255, 255, 255, 0.49);
border-radius: 10px;
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
}
body::-webkit-scrollbar-thumb {
border-radius: 20px;
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.5);
}
.wag-down-arrow-icon{
position: relative;
}
.wag-down-arrow-icon::before{
position: absolute;
content: '';
background: url(/admin-theme/images/down-arrow-icon.svg) no-repeat;
background-position: center;
background-size: contain;
width: 25px;
height: 12px;
}
/* admin plan css file main */
/* header css file */
.wagdt-main-page{
background: white;
margin-bottom: 25px;
}
.wagdt-main-page .wagdt-inner-banner-section {
background: #6161FF;
padding: 30px 0 50px;
}
.wagdt-inner-page-title {
font-size: 62px;
line-height: normal;
font-family: 'Nunito Sans';
color: white;
}
.wagdt-main-page .wagdt-inner-banner-section .wagdt-inner-details-section .wagdt-pages-link-block {
padding-top: 20px;
}
.wagdt-main-page .wagdt-inner-banner-section .wagdt-inner-details-section .wagdt-pages-link-block li {
font-size: 16px;
font-family: 'Nunito Sans';
color: white;
display: inline-block;
}
.wagdt-main-page .wagdt-inner-banner-section .wagdt-inner-details-section .wagdt-pages-link-block li a {
color: white;
opacity: 1;
}
.wagdt-main-page .wagdt-inner-banner-section .wagdt-inner-details-section .wagdt-pages-link-block li .wagdt-link {
display: inline-block;
color: white;
position: relative;
padding-left: 40px;
}
.wagdt-main-page .wagdt-inner-banner-section .wagdt-inner-details-section .wagdt-pages-link-block li .wagdt-link::after {
position: absolute;
content: '';
background: url(/images/back-icon.svg) no-repeat;
background-position: center;
background-size: contain;
width: 10px;
height: 16px;
left: 15px;
top: 0;
bottom: 0;
margin: auto;
}
/* wagdt-watch-video-inner-page-main */
.wagdt-watch-video-inner-page-main{
padding: 60px 0 30px;
}
.wagdt-watch-video-block {
margin-bottom: 20px;
}
.wagdt-main-page .wagdt-watch-video-inner-page-main .watch-video-block {
width: 100%;
height: 500px;
overflow: hidden;
display: flex;
position: relative;
border-radius: 4px;
}
.wagdt-main-page .wagdt-watch-video-inner-page-main .watch-video-block::before {
width: 100%;
height: 100%;
position: absolute;
content: '';
right: 0;
left: 0;
top: 0;
bottom: 0;
background: rgba(40, 51, 64, 0.2);
}
.wagdt-main-page .wagdt-watch-video-inner-page-main .watch-video-block img {
height: 100%;
width: 100%;
object-fit: cover;
object-position: center center;
}
.duration-box {
display: inline-block;
position: absolute;
left: 20px;
top: 20px;
z-index: 1;
background-color: rgba(0, 0, 0, 0.6);
color: white;
padding: 8px;
transparent: 10%;
}
.wagdt-main-page .wagdt-watch-video-inner-page-main .watch-video-block .play-icon {
display: inline-block;
width: 130px;
height: 130px;
position: absolute;
cursor: pointer;
right: 0;
left: 0;
bottom: 0;
margin: auto;
top: 0;
z-index: 1;
}
/* wagdt-watch-details-block-main */
.wagdt-main-page .wagdt-watch-video-inner-page-main .wagdt-watch-details-block-main {
padding: 15px 0 70px;
}
.wagdt-main-page .wagdt-watch-video-inner-page-main .wagdt-watch-details-block-main .wagdt-inner-page-title {
color: #333333;
position: relative;
display: initial;
}
.wagdt-main-page .wagdt-watch-video-inner-page-main .wagdt-watch-details-block-main .watch-andlearn-details {
font-size: 18px;
font-family: 'Nunito Sans';
color: rgba(51, 51, 51, 0.5);
display: block;
margin-top: 10px;
}
.wagdt-main-page .wagdt-watch-video-inner-page-main .wagdt-watch-details-block-main .wagdt-social-icons {
display: flex;
align-items: center;
justify-content: start;
margin-top: 20px;
padding: 0;
}
.wagdt-main-page .wagdt-watch-video-inner-page-main .wagdt-watch-details-block-main .wagdt-social-icons span {
color: #6161FF;
font-weight: 600;
margin-right: 15px;
margin-top: 0;
}
.wagdt-main-page .wagdt-watch-video-inner-page-main .wagdt-watch-details-block-main .wagdt-social-icons li {
display: inline-block;
}
.wagdt-main-page .wagdt-watch-video-inner-page-main .wagdt-watch-details-block-main .wagdt-social-icons li .wagdt-social {
display: flex;
margin-left: 20px;
width: auto;
height: 16px;
}
.wagdt-main-page .wagdt-watch-video-inner-page-main .wagdt-watch-details-block-main .wagdt-social-icons li .wagdt-social img {
width: 100%;
height: 100%;
object-fit: contain;
object-position: center;
}
/* wagdt-author-block-main */
.wagdt-main-page .wagdt-watch-video-inner-page-main .wagdt-watch-details-block-main .wagdt-author-block-main {
background:#F7F7F7;
padding: 30px;
border-radius: 8px;
display: flex;
width: calc(100% + 30px);
margin-left: -15px;
}
.wagdt-main-page .wagdt-watch-video-inner-page-main .wagdt-watch-details-block-main .wagdt-author-block-main .wagdt-author-img-block {
width: 100px;
height: 100px;
overflow: hidden;
border-radius: 1000px;
}
.wagdt-main-page .wagdt-watch-video-inner-page-main .wagdt-watch-details-block-main .wagdt-author-block-main .wagdt-author-img-block img {
width: 100%;
height: 100%;
object-fit: cover;
object-position: center;
}
.wagdt-main-page .wagdt-watch-video-inner-page-main .wagdt-watch-details-block-main .wagdt-author-block-main .wagdt-author-details-block {
margin-left: 20px;
}
.wagdt-main-page .wagdt-watch-video-inner-page-main .wagdt-watch-details-block-main .wagdt-author-block-main .wagdt-author-details-block h5 {
font-weight: bold;
margin-bottom: 5px;
}
.wagdt-main-page h5 {
font-size: 22px;
color: #333333;
font-family: 'Nunito Sans';
line-height: 32px;
font-weight: normal;
}
.wagdt-main-page .wagdt-watch-video-inner-page-main .wagdt-watch-details-block-main .wagdt-author-block-main .wagdt-author-details-block h6 {
font-size: 22px;
font-weight: normal;
letter-spacing: -1px;
align-items: center;
display: flex;
margin-bottom: 10px;
font-family: 'Nunito Sans';
}
.wagdt-main-page .wagdt-watch-video-inner-page-main .wagdt-watch-details-block-main .wagdt-author-block-main .wagdt-author-details-block h6 .personal-website-btns {
display: inline-flex;
align-items: center;
justify-content: center;
font-size: 12px;
font-weight: 500;
letter-spacing: 1px;
border: 1px solid #6161FF;
color: #6161FF;
padding: 2px 15px;
min-width: 160px;
border-radius: 4px;
margin-left: 15px;
font-family: 'Nunito Sans';
text-decoration: none;
}
.wagdt-main-page .wagdt-watch-video-inner-page-main .wagdt-watch-details-block-main .wagdt-author-block-main .wagdt-author-details-block h6 .personal-website-btns img {
width: 10px;
margin-left: 10px;
object-fit: contain;
object-position: center;
}
.wagdt-main-page .wagdt-watch-video-inner-page-main .wagdt-watch-details-block-main .wagdt-author-block-main .wagdt-author-details-block p {
font-family: 'Nunito Sans';
font-size: 16px;
font-weight: 400;
line-height: 27px;
}
.wagdt-main-page .wagdt-watch-video-inner-page-main .wagdt-watch-details-block-main .wagdt-social-block-main {
/* border-bottom: 1px solid #E2E2E2; */
padding: 30px 0;
width: calc(100% + 30px);
margin-left: -15px;
}
.wagdt-main-page .wagdt-watch-video-inner-page-main .wagdt-watch-details-block-main .wagdt-social-block-main span {
margin: 0;
}
.wagdt-main-page .wagdt-watch-video-inner-page-main .wagdt-watch-details-block-main .watch-andlearn-details {
font-size: 18px;
font-family: 'Nunito Sans';
color: rgba(51, 51, 51, 0.5);
display: block;
margin-top: 10px;
}
.wag-watch-and-learn{
border: 1px solid #e4e4e4;
margin: 0 !important;
border-top: 0;
}
#DataTables_Table_0_filter {
display: flex;
justify-content: flex-end;
}
#DataTables_Table_0_filter label{
width: 353px;
max-width: 100%;
}
/* */
.disabled-delete{
cursor: not-allowed;
}
.upvideoblk.hs-blog-img-preview{
height: 100% !important;
}
.wag-table-main{
position: relative;
}
.wag-select-main{
margin-bottom: 15px;
width: 253px;
position: absolute;
z-index: 1;
max-width: 100%;
right: 380px;
}
.wag-select-main .select2 .select2-selection{
height: 42px;
display: flex;
align-items: center;
border: 1px solid #dddfe1 !important;
width: 100% !important;
}
.wag-select-main .select2{
width: 100% !important;
}
.wag-select-main .select2-selection__rendered{
font-size: 15px;
font-weight: 500;
color: #1F314A;
}
.select2-dropdown{
border: 1px solid #dddfe1 !important;
}
.select2-container--bootstrap4 .select2-results__option--highlighted[aria-selected] {
background-color: #8A288F !important;
color: #fff !important;
}
.wag-inner-section-block-main .select2 .select2-selection{
height: 42px;
display: flex;
align-items: center;
border: 1px solid #dddfe1 !important;
}
.wag-inner-section-block-main .select2-selection__rendered{
font-size: 15px;
font-weight: 500;
color: #1F314A;
}
.wag-hours-block .row{
align-items: center;
}
.wag-hours-block .row .col-md-2{
margin-top: 10px;
}
.wag-categories-box-main .select2-search .select2-search__field{
padding: 0 10px !important;
margin-bottom: 8px;
}
.wag-categories-box-main .select2-selection__rendered{
padding: 15px 10px 6px !important;
}
.wag-categories-box-main .select2{
width: 100%;
}
.wag-categories-box-main .selection .select2-selection{
height: auto !important;
min-height: 42px;
}
/* commments section */
.wagdt-main-page .wagdt-watch-video-inner-page-main .wagdt-comments-section-main .wagdt-inner-page-title {
color: #333333;
}
.wagdt-main-page .wagdt-watch-video-inner-page-main .wagdt-comments-section-main .wagdt-comments-block-main .wagdt-comments-list {
display: flex;
padding: 35px 0px;
border-bottom: 1px solid #E4E4E4;
}
.wagdt-main-page .wagdt-watch-video-inner-page-main .wagdt-comments-section-main .wagdt-comments-block-main .wagdt-comments-list .wagdt-user-img {
width: 70px;
height: 70px;
overflow: hidden;
background: #f2f2f2;
border-radius: 100px;
}
.wagdt-main-page .wagdt-watch-video-inner-page-main .wagdt-comments-section-main .wagdt-comments-block-main .wagdt-comments-list .wagdt-user-img img {
width: 100%;
height: 100%;
object-fit: cover;
object-position: center;
}
.wagdt-main-page .wagdt-watch-video-inner-page-main .wagdt-comments-section-main .wagdt-comments-block-main .wagdt-comments-list .wagdt-comments-details {
margin-left: 25px;
display: flex;
flex-direction: column;
width: 100%;
}
.wagdt-main-page .wagdt-watch-video-inner-page-main .wagdt-comments-section-main .wagdt-comments-block-main .wagdt-comments-list .wagdt-comments-details .wagdt-use-details {
display: flex;
justify-content: space-between;
align-items: end;
margin: 8px 0 0px;
}
.wagdt-main-page h5 {
font-size: 22px;
color: #333333;
font-family: "Nunito Sans";
line-height: 32px;
font-weight: normal;
}
.wagdt-main-page .wagdt-watch-video-inner-page-main .wagdt-comments-section-main .wagdt-comments-block-main .wagdt-comments-list .wagdt-comments-details .wagdt-use-details .wagdt-comments-nema p {
font-size: 16px;
font-family: "Nunito Sans";
color: rgba(51,51,51,0.5);
font-weight: normal;
}
.wagdt-main-page .wagdt-watch-video-inner-page-main .wagdt-comments-section-main .wagdt-comments-block-main .wagdt-comments-list .wagdt-comments-details .wagdt-use-details .wag-reply-and-delete-section {
display: flex;
align-items: center;
}
.wagdt-main-page .wagdt-watch-video-inner-page-main .wagdt-comments-section-main .wagdt-comments-block-main .wagdt-comments-list .wagdt-comments-details .wagdt-use-details .wag-reply-and-delete-section .delete-comment i.fa-trash-icon {
background: url(/admin-theme/images/delete-icon.svg) no-repeat;
background-position: center;
background-size: contain;
width: 9px;
height: 16px;
cursor: pointer;
}
.wagdt-main-page .wagdt-watch-video-inner-page-main .wagdt-comments-section-main .wagdt-comments-block-main .wagdt-comments-list .wagdt-comments-details p {
font-size: 16px;
font-family: "Nunito Sans";
color: #333333;
line-height: 30px;
margin-bottom: 0;
}
================================================
FILE: public/admin-theme/css/classic.css
================================================
/* @import url(https://fonts.googleapis.com/css?family=Nunito+Sans:400,600); */
/*!
* Bootstrap v4.3.1 (https://getbootstrap.com/)
* Copyright 2011-2019 The Bootstrap Authors
* Copyright 2011-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/:root{--blue:#5b7dff;--indigo:#6610f2;--purple:#6f42c1;--pink:#a180da;--red:#f44455;--orange:#fd7e14;--yellow:#fcc100;--green:#5fc27e;--teal:#20c997;--cyan:#47bac1;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#47bac1;--secondary:#a180da;--success:#5fc27e;--info:#5b7dff;--warning:#fcc100;--danger:#f44455;--light:#f8f9fa;--dark:#354052;--tertiary:#5fc27e;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--breakpoint-xxl:1440px;--font-family-sans-serif:"Nunito Sans",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue",Arial,sans-serif;--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,:after,:before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:Nunito Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,Arial,sans-serif;font-size:.875rem;font-weight:400;line-height:1.5;color:#495057;text-align:left;background-color:#6161FF}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{font-style:normal;line-height:inherit}address,dl,ol,ul{margin-bottom:1rem}dl,ol,ul{margin-top:0}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:600}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}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:#47bac1;text-decoration:none;background-color:transparent}a:hover{color:#2f878c;text-decoration:underline}a:not([href]):not([tabindex]),a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{border-style:none}img,svg{vertical-align:middle}svg{overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.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}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-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-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:.5rem;font-weight:400;line-height:1.2;color:#000}.h1,h1{font-size:1.75rem}.h2,h2{font-size:1.53125rem}.h3,h3{font-size:1.3125rem}.h4,h4{font-size:1.09375rem}.h5,.h6,h5,h6{font-size:.875rem}.lead{font-size:1.09375rem;font-weight:300}.display-1{font-size:6rem}.display-1,.display-2{font-weight:300;line-height:1.2}.display-2{font-size:5.5rem}.display-3{font-size:4.5rem}.display-3,.display-4{font-weight:300;line-height:1.2}.display-4{font-size:3.5rem}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-inline,.list-unstyled{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.09375rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer:before{content:"\2014\00A0"}.img-fluid,.img-thumbnail{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#f5f9fc;border:1px solid #dee2e6;border-radius:.2rem}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#a180da;word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.1rem}kbd kbd{padding:0;font-size:100%;font-weight:600}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:1280px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:-webkit-flex;display:flex;-webkit-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,.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-auto,.col-lg,.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-auto,.col-md,.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-auto,.col-sm,.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-auto,.col-xl,.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-auto,.col-xxl,.col-xxl-1,.col-xxl-2,.col-xxl-3,.col-xxl-4,.col-xxl-5,.col-xxl-6,.col-xxl-7,.col-xxl-8,.col-xxl-9,.col-xxl-10,.col-xxl-11,.col-xxl-12,.col-xxl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{-webkit-flex-basis:0;flex-basis:0;-webkit-flex-grow:1;flex-grow:1;max-width:100%}.col-auto{-webkit-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-1{-webkit-flex:0 0 8.33333%;flex:0 0 8.33333%;max-width:8.33333%}.col-2{-webkit-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.col-3{-webkit-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-webkit-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.col-5{-webkit-flex:0 0 41.66667%;flex:0 0 41.66667%;max-width:41.66667%}.col-6{-webkit-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-webkit-flex:0 0 58.33333%;flex:0 0 58.33333%;max-width:58.33333%}.col-8{-webkit-flex:0 0 66.66667%;flex:0 0 66.66667%;max-width:66.66667%}.col-9{-webkit-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-webkit-flex:0 0 83.33333%;flex:0 0 83.33333%;max-width:83.33333%}.col-11{-webkit-flex:0 0 91.66667%;flex:0 0 91.66667%;max-width:91.66667%}.col-12{-webkit-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-webkit-order:-1;order:-1}.order-last{-webkit-order:13;order:13}.order-0{-webkit-order:0;order:0}.order-1{-webkit-order:1;order:1}.order-2{-webkit-order:2;order:2}.order-3{-webkit-order:3;order:3}.order-4{-webkit-order:4;order:4}.order-5{-webkit-order:5;order:5}.order-6{-webkit-order:6;order:6}.order-7{-webkit-order:7;order:7}.order-8{-webkit-order:8;order:8}.order-9{-webkit-order:9;order:9}.order-10{-webkit-order:10;order:10}.order-11{-webkit-order:11;order:11}.order-12{-webkit-order:12;order:12}.offset-1{margin-left:8.33333%}.offset-2{margin-left:16.66667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333%}.offset-5{margin-left:41.66667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333%}.offset-8{margin-left:66.66667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333%}.offset-11{margin-left:91.66667%}@media (min-width:576px){.col-sm{-webkit-flex-basis:0;flex-basis:0;-webkit-flex-grow:1;flex-grow:1;max-width:100%}.col-sm-auto{-webkit-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{-webkit-flex:0 0 8.33333%;flex:0 0 8.33333%;max-width:8.33333%}.col-sm-2{-webkit-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.col-sm-3{-webkit-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-webkit-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.col-sm-5{-webkit-flex:0 0 41.66667%;flex:0 0 41.66667%;max-width:41.66667%}.col-sm-6{-webkit-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-webkit-flex:0 0 58.33333%;flex:0 0 58.33333%;max-width:58.33333%}.col-sm-8{-webkit-flex:0 0 66.66667%;flex:0 0 66.66667%;max-width:66.66667%}.col-sm-9{-webkit-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-webkit-flex:0 0 83.33333%;flex:0 0 83.33333%;max-width:83.33333%}.col-sm-11{-webkit-flex:0 0 91.66667%;flex:0 0 91.66667%;max-width:91.66667%}.col-sm-12{-webkit-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-webkit-order:-1;order:-1}.order-sm-last{-webkit-order:13;order:13}.order-sm-0{-webkit-order:0;order:0}.order-sm-1{-webkit-order:1;order:1}.order-sm-2{-webkit-order:2;order:2}.order-sm-3{-webkit-order:3;order:3}.order-sm-4{-webkit-order:4;order:4}.order-sm-5{-webkit-order:5;order:5}.order-sm-6{-webkit-order:6;order:6}.order-sm-7{-webkit-order:7;order:7}.order-sm-8{-webkit-order:8;order:8}.order-sm-9{-webkit-order:9;order:9}.order-sm-10{-webkit-order:10;order:10}.order-sm-11{-webkit-order:11;order:11}.order-sm-12{-webkit-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.66667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333%}.offset-sm-5{margin-left:41.66667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333%}.offset-sm-8{margin-left:66.66667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333%}.offset-sm-11{margin-left:91.66667%}}@media (min-width:768px){.col-md{-webkit-flex-basis:0;flex-basis:0;-webkit-flex-grow:1;flex-grow:1;max-width:100%}.col-md-auto{-webkit-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-md-1{-webkit-flex:0 0 8.33333%;flex:0 0 8.33333%;max-width:8.33333%}.col-md-2{-webkit-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.col-md-3{-webkit-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-webkit-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.col-md-5{-webkit-flex:0 0 41.66667%;flex:0 0 41.66667%;max-width:41.66667%}.col-md-6{-webkit-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-webkit-flex:0 0 58.33333%;flex:0 0 58.33333%;max-width:58.33333%}.col-md-8{-webkit-flex:0 0 66.66667%;flex:0 0 66.66667%;max-width:66.66667%}.col-md-9{-webkit-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-webkit-flex:0 0 83.33333%;flex:0 0 83.33333%;max-width:83.33333%}.col-md-11{-webkit-flex:0 0 91.66667%;flex:0 0 91.66667%;max-width:91.66667%}.col-md-12{-webkit-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-webkit-order:-1;order:-1}.order-md-last{-webkit-order:13;order:13}.order-md-0{-webkit-order:0;order:0}.order-md-1{-webkit-order:1;order:1}.order-md-2{-webkit-order:2;order:2}.order-md-3{-webkit-order:3;order:3}.order-md-4{-webkit-order:4;order:4}.order-md-5{-webkit-order:5;order:5}.order-md-6{-webkit-order:6;order:6}.order-md-7{-webkit-order:7;order:7}.order-md-8{-webkit-order:8;order:8}.order-md-9{-webkit-order:9;order:9}.order-md-10{-webkit-order:10;order:10}.order-md-11{-webkit-order:11;order:11}.order-md-12{-webkit-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.66667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333%}.offset-md-5{margin-left:41.66667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333%}.offset-md-8{margin-left:66.66667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333%}.offset-md-11{margin-left:91.66667%}}@media (min-width:992px){.col-lg{-webkit-flex-basis:0;flex-basis:0;-webkit-flex-grow:1;flex-grow:1;max-width:100%}.col-lg-auto{-webkit-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{-webkit-flex:0 0 8.33333%;flex:0 0 8.33333%;max-width:8.33333%}.col-lg-2{-webkit-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.col-lg-3{-webkit-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-webkit-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.col-lg-5{-webkit-flex:0 0 41.66667%;flex:0 0 41.66667%;max-width:41.66667%}.col-lg-6{-webkit-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-webkit-flex:0 0 58.33333%;flex:0 0 58.33333%;max-width:58.33333%}.col-lg-8{-webkit-flex:0 0 66.66667%;flex:0 0 66.66667%;max-width:66.66667%}.col-lg-9{-webkit-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-webkit-flex:0 0 83.33333%;flex:0 0 83.33333%;max-width:83.33333%}.col-lg-11{-webkit-flex:0 0 91.66667%;flex:0 0 91.66667%;max-width:91.66667%}.col-lg-12{-webkit-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-webkit-order:-1;order:-1}.order-lg-last{-webkit-order:13;order:13}.order-lg-0{-webkit-order:0;order:0}.order-lg-1{-webkit-order:1;order:1}.order-lg-2{-webkit-order:2;order:2}.order-lg-3{-webkit-order:3;order:3}.order-lg-4{-webkit-order:4;order:4}.order-lg-5{-webkit-order:5;order:5}.order-lg-6{-webkit-order:6;order:6}.order-lg-7{-webkit-order:7;order:7}.order-lg-8{-webkit-order:8;order:8}.order-lg-9{-webkit-order:9;order:9}.order-lg-10{-webkit-order:10;order:10}.order-lg-11{-webkit-order:11;order:11}.order-lg-12{-webkit-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.66667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333%}.offset-lg-5{margin-left:41.66667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333%}.offset-lg-8{margin-left:66.66667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333%}.offset-lg-11{margin-left:91.66667%}}@media (min-width:1200px){.col-xl{-webkit-flex-basis:0;flex-basis:0;-webkit-flex-grow:1;flex-grow:1;max-width:100%}.col-xl-auto{-webkit-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{-webkit-flex:0 0 8.33333%;flex:0 0 8.33333%;max-width:8.33333%}.col-xl-2{-webkit-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.col-xl-3{-webkit-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-webkit-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.col-xl-5{-webkit-flex:0 0 41.66667%;flex:0 0 41.66667%;max-width:41.66667%}.col-xl-6{-webkit-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-webkit-flex:0 0 58.33333%;flex:0 0 58.33333%;max-width:58.33333%}.col-xl-8{-webkit-flex:0 0 66.66667%;flex:0 0 66.66667%;max-width:66.66667%}.col-xl-9{-webkit-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-webkit-flex:0 0 83.33333%;flex:0 0 83.33333%;max-width:83.33333%}.col-xl-11{-webkit-flex:0 0 91.66667%;flex:0 0 91.66667%;max-width:91.66667%}.col-xl-12{-webkit-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-webkit-order:-1;order:-1}.order-xl-last{-webkit-order:13;order:13}.order-xl-0{-webkit-order:0;order:0}.order-xl-1{-webkit-order:1;order:1}.order-xl-2{-webkit-order:2;order:2}.order-xl-3{-webkit-order:3;order:3}.order-xl-4{-webkit-order:4;order:4}.order-xl-5{-webkit-order:5;order:5}.order-xl-6{-webkit-order:6;order:6}.order-xl-7{-webkit-order:7;order:7}.order-xl-8{-webkit-order:8;order:8}.order-xl-9{-webkit-order:9;order:9}.order-xl-10{-webkit-order:10;order:10}.order-xl-11{-webkit-order:11;order:11}.order-xl-12{-webkit-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.66667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333%}.offset-xl-5{margin-left:41.66667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333%}.offset-xl-8{margin-left:66.66667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333%}.offset-xl-11{margin-left:91.66667%}}@media (min-width:1440px){.col-xxl{-webkit-flex-basis:0;flex-basis:0;-webkit-flex-grow:1;flex-grow:1;max-width:100%}.col-xxl-auto{-webkit-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xxl-1{-webkit-flex:0 0 8.33333%;flex:0 0 8.33333%;max-width:8.33333%}.col-xxl-2{-webkit-flex:0 0 16.66667%;flex:0 0 16.66667%;max-width:16.66667%}.col-xxl-3{-webkit-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xxl-4{-webkit-flex:0 0 33.33333%;flex:0 0 33.33333%;max-width:33.33333%}.col-xxl-5{-webkit-flex:0 0 41.66667%;flex:0 0 41.66667%;max-width:41.66667%}.col-xxl-6{-webkit-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xxl-7{-webkit-flex:0 0 58.33333%;flex:0 0 58.33333%;max-width:58.33333%}.col-xxl-8{-webkit-flex:0 0 66.66667%;flex:0 0 66.66667%;max-width:66.66667%}.col-xxl-9{-webkit-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xxl-10{-webkit-flex:0 0 83.33333%;flex:0 0 83.33333%;max-width:83.33333%}.col-xxl-11{-webkit-flex:0 0 91.66667%;flex:0 0 91.66667%;max-width:91.66667%}.col-xxl-12{-webkit-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xxl-first{-webkit-order:-1;order:-1}.order-xxl-last{-webkit-order:13;order:13}.order-xxl-0{-webkit-order:0;order:0}.order-xxl-1{-webkit-order:1;order:1}.order-xxl-2{-webkit-order:2;order:2}.order-xxl-3{-webkit-order:3;order:3}.order-xxl-4{-webkit-order:4;order:4}.order-xxl-5{-webkit-order:5;order:5}.order-xxl-6{-webkit-order:6;order:6}.order-xxl-7{-webkit-order:7;order:7}.order-xxl-8{-webkit-order:8;order:8}.order-xxl-9{-webkit-order:9;order:9}.order-xxl-10{-webkit-order:10;order:10}.order-xxl-11{-webkit-order:11;order:11}.order-xxl-12{-webkit-order:12;order:12}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333%}.offset-xxl-2{margin-left:16.66667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333%}.offset-xxl-5{margin-left:41.66667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333%}.offset-xxl-8{margin-left:66.66667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333%}.offset-xxl-11{margin-left:91.66667%}}.table{width:100%;margin-bottom:1rem;color:#495057}.table td,.table th{padding:.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-sm td,.table-sm th{padding:.3rem}.table-bordered,.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:#f8f9fa}.table-hover tbody tr:hover{color:#495057;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#cbecee}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#9fdbdf}.table-hover .table-primary:hover,.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#b8e5e8}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#e5dbf5}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#cebdec}.table-hover .table-secondary:hover,.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#d7c7ef}.table-success,.table-success>td,.table-success>th{background-color:#d2eedb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#acdfbc}.table-hover .table-success:hover,.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#bfe7cc}.table-info,.table-info>td,.table-info>th{background-color:#d1dbff}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#abf}.table-hover .table-info:hover,.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#b8c7ff}.table-warning,.table-warning>td,.table-warning>th{background-color:#feeeb8}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#fddf7a}.table-hover .table-warning:hover,.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#fee89f}.table-danger,.table-danger>td,.table-danger>th{background-color:#fccbcf}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#f99ea7}.table-hover .table-danger:hover,.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#fbb3b9}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover,.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6cacf}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#969ca5}.table-hover .table-dark:hover,.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b8bdc3}.table-tertiary,.table-tertiary>td,.table-tertiary>th{background-color:#d2eedb}.table-tertiary tbody+tbody,.table-tertiary td,.table-tertiary th,.table-tertiary thead th{border-color:#acdfbc}.table-hover .table-tertiary:hover,.table-hover .table-tertiary:hover>td,.table-hover .table-tertiary:hover>th{background-color:#bfe7cc}.table-active,.table-active>td,.table-active>th,.table-hover .table-active:hover,.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:hsla(0,0%,100%,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:hsla(0,0%,100%,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.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}.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}.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}.table-responsive-xl>.table-bordered{border:0}}@media (max-width:1439.98px){.table-responsive-xxl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xxl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.8125rem + 2px);padding:.25rem .7rem;font-size:.875rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.2rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#a6dee1;outline:0;box-shadow:0 0 0 .2rem rgba(71,186,193,.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:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.35rem + 1px);padding-bottom:calc(.35rem + 1px);font-size:1rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.15rem + 1px);padding-bottom:calc(.15rem + 1px);font-size:.75rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.25rem;padding-bottom:.25rem;margin-bottom:0;line-height:1.5;color:#495057;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.425rem + 2px);padding:.15rem .5rem;font-size:.75rem;line-height:1.5;border-radius:.1rem}.form-control-lg{height:calc(2.2rem + 2px);padding:.35rem 1rem;font-size:1rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size],textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-webkit-flex;display:flex;-webkit-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:.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-flex;display:inline-flex;-webkit-align-items:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#5fc27e}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.75rem;line-height:1.5;color:#212529;background-color:rgba(95,194,126,.9);border-radius:.2rem}.form-control.is-valid,.was-validated .form-control:valid{border-color:#5fc27e;padding-right:1.8125rem;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%235fc27e' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:100% calc(.375em + .125rem);background-size:calc(.75em + .25rem) calc(.75em + .25rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#5fc27e;box-shadow:0 0 0 .2rem rgba(95,194,126,.25)}.form-control.is-valid~.valid-feedback,.form-control.is-valid~.valid-tooltip,.was-validated .form-control:valid~.valid-feedback,.was-validated .form-control:valid~.valid-tooltip{display:block}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:1.8125rem;background-position:top calc(.375em + .125rem) right calc(.375em + .125rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#5fc27e;padding-right:calc((3em + 1.5rem)/4 + 1.7rem);background:url("data:image/svg+xml;charset=utf-8,%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 .7rem center/8px 10px,url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%235fc27e' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E") #fff no-repeat center right 1.7rem/calc(.75em + .25rem) calc(.75em + .25rem)}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#5fc27e;box-shadow:0 0 0 .2rem rgba(95,194,126,.25)}.custom-select.is-valid~.valid-feedback,.custom-select.is-valid~.valid-tooltip,.form-control-file.is-valid~.valid-feedback,.form-control-file.is-valid~.valid-tooltip,.was-validated .custom-select:valid~.valid-feedback,.was-validated .custom-select:valid~.valid-tooltip,.was-validated .form-control-file:valid~.valid-feedback,.was-validated .form-control-file:valid~.valid-tooltip{display:block}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#5fc27e}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#5fc27e}.custom-control-input.is-valid~.custom-control-label:before,.was-validated .custom-control-input:valid~.custom-control-label:before{border-color:#5fc27e}.custom-control-input.is-valid~.valid-feedback,.custom-control-input.is-valid~.valid-tooltip,.was-validated .custom-control-input:valid~.valid-feedback,.was-validated .custom-control-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid:checked~.custom-control-label:before,.was-validated .custom-control-input:valid:checked~.custom-control-label:before{border-color:#84d09c;background-color:#84d09c}.custom-control-input.is-valid:focus~.custom-control-label:before,.was-validated .custom-control-input:valid:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem rgba(95,194,126,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label:before,.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#5fc27e}.custom-file-input.is-valid~.valid-feedback,.custom-file-input.is-valid~.valid-tooltip,.was-validated .custom-file-input:valid~.valid-feedback,.was-validated .custom-file-input:valid~.valid-tooltip{display:block}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#5fc27e;box-shadow:0 0 0 .2rem rgba(95,194,126,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#f44455}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.75rem;line-height:1.5;color:#fff;background-color:rgba(244,68,85,.9);border-radius:.2rem}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#f44455;padding-right:1.8125rem;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23f44455' viewBox='-2 -2 7 7'%3E%3Cpath stroke='%23f44455' d='M0 0l3 3m0-3L0 3'/%3E%3Ccircle r='.5'/%3E%3Ccircle cx='3' r='.5'/%3E%3Ccircle cy='3' r='.5'/%3E%3Ccircle cx='3' cy='3' r='.5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:100% calc(.375em + .125rem);background-size:calc(.75em + .25rem) calc(.75em + .25rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#f44455;box-shadow:0 0 0 .2rem rgba(244,68,85,.25)}.form-control.is-invalid~.invalid-feedback,.form-control.is-invalid~.invalid-tooltip,.was-validated .form-control:invalid~.invalid-feedback,.was-validated .form-control:invalid~.invalid-tooltip{display:block}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:1.8125rem;background-position:top calc(.375em + .125rem) right calc(.375em + .125rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#f44455;padding-right:calc((3em + 1.5rem)/4 + 1.7rem);background:url("data:image/svg+xml;charset=utf-8,%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 .7rem center/8px 10px,url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23f44455' viewBox='-2 -2 7 7'%3E%3Cpath stroke='%23f44455' d='M0 0l3 3m0-3L0 3'/%3E%3Ccircle r='.5'/%3E%3Ccircle cx='3' r='.5'/%3E%3Ccircle cy='3' r='.5'/%3E%3Ccircle cx='3' cy='3' r='.5'/%3E%3C/svg%3E") #fff no-repeat center right 1.7rem/calc(.75em + .25rem) calc(.75em + .25rem)}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#f44455;box-shadow:0 0 0 .2rem rgba(244,68,85,.25)}.custom-select.is-invalid~.invalid-feedback,.custom-select.is-invalid~.invalid-tooltip,.form-control-file.is-invalid~.invalid-feedback,.form-control-file.is-invalid~.invalid-tooltip,.was-validated .custom-select:invalid~.invalid-feedback,.was-validated .custom-select:invalid~.invalid-tooltip,.was-validated .form-control-file:invalid~.invalid-feedback,.was-validated .form-control-file:invalid~.invalid-tooltip{display:block}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#f44455}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#f44455}.custom-control-input.is-invalid~.custom-control-label:before,.was-validated .custom-control-input:invalid~.custom-control-label:before{border-color:#f44455}.custom-control-input.is-invalid~.invalid-feedback,.custom-control-input.is-invalid~.invalid-tooltip,.was-validated .custom-control-input:invalid~.invalid-feedback,.was-validated .custom-control-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid:checked~.custom-control-label:before,.was-validated .custom-control-input:invalid:checked~.custom-control-label:before{border-color:#f77481;background-color:#f77481}.custom-control-input.is-invalid:focus~.custom-control-label:before,.was-validated .custom-control-input:invalid:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem rgba(244,68,85,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label:before,.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#f44455}.custom-file-input.is-invalid~.invalid-feedback,.custom-file-input.is-invalid~.invalid-tooltip,.was-validated .custom-file-input:invalid~.invalid-feedback,.was-validated .custom-file-input:invalid~.invalid-tooltip{display:block}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#f44455;box-shadow:0 0 0 .2rem rgba(244,68,85,.25)}.form-inline{display:-webkit-flex;display:flex;-webkit-flex-flow:row wrap;flex-flow:row wrap;-webkit-align-items:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{-webkit-justify-content:center;justify-content:center}.form-inline .form-group,.form-inline label{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;margin-bottom:0}.form-inline .form-group{-webkit-flex:0 0 auto;flex:0 0 auto;-webkit-flex-flow:row wrap;flex-flow:row wrap}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;-webkit-flex-shrink:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn,.fc-unthemed .fc-button{display:inline-block;font-weight:400;color:#495057;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.25rem .7rem;font-size:.875rem;line-height:1.5;border-radius:.2rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn,.fc-unthemed .fc-button{transition:none}}.btn:hover,.fc-unthemed .fc-button:hover{color:#495057;text-decoration:none}.btn.focus,.btn:focus,.fc-unthemed .fc-button:focus,.fc-unthemed .focus.fc-button{outline:0;box-shadow:0 0 0 .2rem rgba(71,186,193,.25)}.btn.disabled,.btn:disabled,.fc-unthemed .disabled.fc-button,.fc-unthemed .fc-button:disabled{opacity:.65}.fc-unthemed a.disabled.fc-button,.fc-unthemed fieldset:disabled a.fc-button,a.btn.disabled,fieldset:disabled .fc-unthemed a.fc-button,fieldset:disabled a.btn{pointer-events:none}.btn-primary,.fc-unthemed .fc-button{color:#212529;background-color:#47bac1;border-color:#47bac1}.btn-primary:hover,.fc-unthemed .fc-button:hover{color:#fff;background-color:#39a2a9;border-color:#36999f}.btn-primary.focus,.btn-primary:focus,.fc-unthemed .fc-button:focus,.fc-unthemed .focus.fc-button{box-shadow:0 0 0 .2rem rgba(65,164,170,.5)}.btn-primary.disabled,.btn-primary:disabled,.fc-unthemed .disabled.fc-button,.fc-unthemed .fc-button:disabled{color:#212529;background-color:#47bac1;border-color:#47bac1}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.fc-unthemed .fc-button:not(:disabled):not(.disabled).active,.fc-unthemed .fc-button:not(:disabled):not(.disabled):active,.fc-unthemed .show>.dropdown-toggle.fc-button,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#36999f;border-color:#329096}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.fc-unthemed .fc-button:not(:disabled):not(.disabled).active:focus,.fc-unthemed .fc-button:not(:disabled):not(.disabled):active:focus,.fc-unthemed .show>.dropdown-toggle.fc-button:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(65,164,170,.5)}.btn-secondary{color:#fff;background-color:#a180da;border-color:#a180da}.btn-secondary:hover{color:#fff;background-color:#8b62d1;border-color:#8459ce}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(175,147,224,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#a180da;border-color:#a180da}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#8459ce;border-color:#7c4fcc}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(175,147,224,.5)}.btn-success{color:#212529;background-color:#5fc27e;border-color:#5fc27e}.btn-success:hover{color:#fff;background-color:#45b668;border-color:#42ac63}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(86,170,113,.5)}.btn-success.disabled,.btn-success:disabled{color:#212529;background-color:#5fc27e;border-color:#5fc27e}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#42ac63;border-color:#3ea35e}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(86,170,113,.5)}.btn-info{color:#fff;background-color:#5b7dff;border-color:#5b7dff}.btn-info:hover{color:#fff;background-color:#355fff;border-color:#2855ff}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(116,145,255,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#5b7dff;border-color:#5b7dff}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#2855ff;border-color:#1b4aff}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(116,145,255,.5)}.btn-warning{color:#212529;background-color:#fcc100;border-color:#fcc100}.btn-warning:hover{color:#212529;background-color:#d6a400;border-color:#c99a00}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(219,170,6,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#fcc100;border-color:#fcc100}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#c99a00;border-color:#bc9000}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(219,170,6,.5)}.btn-danger{color:#fff;background-color:#f44455;border-color:#f44455}.btn-danger:hover{color:#fff;background-color:#f22034;border-color:#f11429}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(246,96,111,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#f44455;border-color:#f44455}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#f11429;border-color:#ea0e23}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(246,96,111,.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{box-shadow:0 0 0 .2rem rgba(216,217,219,.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{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#354052;border-color:#354052}.btn-dark:hover{color:#fff;background-color:#262e3b;border-color:#212833}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(83,93,108,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#354052;border-color:#354052}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#212833;border-color:#1c222b}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(83,93,108,.5)}.btn-tertiary{color:#212529;background-color:#5fc27e;border-color:#5fc27e}.btn-tertiary:hover{color:#fff;background-color:#45b668;border-color:#42ac63}.btn-tertiary.focus,.btn-tertiary:focus{box-shadow:0 0 0 .2rem rgba(86,170,113,.5)}.btn-tertiary.disabled,.btn-tertiary:disabled{color:#212529;background-color:#5fc27e;border-color:#5fc27e}.btn-tertiary:not(:disabled):not(.disabled).active,.btn-tertiary:not(:disabled):not(.disabled):active,.show>.btn-tertiary.dropdown-toggle{color:#fff;background-color:#42ac63;border-color:#3ea35e}.btn-tertiary:not(:disabled):not(.disabled).active:focus,.btn-tertiary:not(:disabled):not(.disabled):active:focus,.show>.btn-tertiary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(86,170,113,.5)}.btn-outline-primary{color:#47bac1;border-color:#47bac1}.btn-outline-primary:hover{color:#212529;background-color:#47bac1;border-color:#47bac1}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(71,186,193,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#47bac1;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:#212529;background-color:#47bac1;border-color:#47bac1}.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{box-shadow:0 0 0 .2rem rgba(71,186,193,.5)}.btn-outline-secondary{color:#a180da;border-color:#a180da}.btn-outline-secondary:hover{color:#fff;background-color:#a180da;border-color:#a180da}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(161,128,218,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#a180da;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:#a180da;border-color:#a180da}.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{box-shadow:0 0 0 .2rem rgba(161,128,218,.5)}.btn-outline-success{color:#5fc27e;border-color:#5fc27e}.btn-outline-success:hover{color:#212529;background-color:#5fc27e;border-color:#5fc27e}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(95,194,126,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#5fc27e;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:#212529;background-color:#5fc27e;border-color:#5fc27e}.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{box-shadow:0 0 0 .2rem rgba(95,194,126,.5)}.btn-outline-info{color:#5b7dff;border-color:#5b7dff}.btn-outline-info:hover{color:#fff;background-color:#5b7dff;border-color:#5b7dff}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(91,125,255,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#5b7dff;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:#5b7dff;border-color:#5b7dff}.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{box-shadow:0 0 0 .2rem rgba(91,125,255,.5)}.btn-outline-warning{color:#fcc100;border-color:#fcc100}.btn-outline-warning:hover{color:#212529;background-color:#fcc100;border-color:#fcc100}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(252,193,0,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#fcc100;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:#fcc100;border-color:#fcc100}.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{box-shadow:0 0 0 .2rem rgba(252,193,0,.5)}.btn-outline-danger{color:#f44455;border-color:#f44455}.btn-outline-danger:hover{color:#fff;background-color:#f44455;border-color:#f44455}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(244,68,85,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#f44455;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:#f44455;border-color:#f44455}.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{box-shadow:0 0 0 .2rem rgba(244,68,85,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.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{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#354052;border-color:#354052}.btn-outline-dark:hover{color:#fff;background-color:#354052;border-color:#354052}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(53,64,82,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#354052;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:#354052;border-color:#354052}.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{box-shadow:0 0 0 .2rem rgba(53,64,82,.5)}.btn-outline-tertiary{color:#5fc27e;border-color:#5fc27e}.btn-outline-tertiary:hover{color:#212529;background-color:#5fc27e;border-color:#5fc27e}.btn-outline-tertiary.focus,.btn-outline-tertiary:focus{box-shadow:0 0 0 .2rem rgba(95,194,126,.5)}.btn-outline-tertiary.disabled,.btn-outline-tertiary:disabled{color:#5fc27e;background-color:transparent}.btn-outline-tertiary:not(:disabled):not(.disabled).active,.btn-outline-tertiary:not(:disabled):not(.disabled):active,.show>.btn-outline-tertiary.dropdown-toggle{color:#212529;background-color:#5fc27e;border-color:#5fc27e}.btn-outline-tertiary:not(:disabled):not(.disabled).active:focus,.btn-outline-tertiary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-tertiary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(95,194,126,.5)}.btn-link{font-weight:400;color:#47bac1;text-decoration:none}.btn-link:hover{color:#2f878c;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg,.fc-unthemed .btn-group-lg>.fc-button{padding:.35rem 1rem;font-size:1rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm,.fc-unthemed .btn-group-sm>.fc-button{padding:.15rem .5rem;font-size:.75rem;line-height:1.5;border-radius:.1rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.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:.5rem 0;margin:.125rem 0 0;font-size:.875rem;color:#495057;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.2rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}@media (min-width:1440px){.dropdown-menu-xxl-left{right:auto;left:0}.dropdown-menu-xxl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-toggle:after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";display:none}.dropleft .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty:after{margin-left:0}.dropleft .dropdown-toggle:before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.35rem 1.5rem;clear:both;font-weight:400;color:#495057;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#47bac1}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.75rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.35rem 1.5rem;color:#495057}.btn-group,.btn-group-vertical,.fc-unthemed .fc-button-group{position:relative;display:-webkit-inline-flex;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn,.fc-unthemed .btn-group-vertical>.fc-button,.fc-unthemed .btn-group>.fc-button,.fc-unthemed .fc-button-group>.btn,.fc-unthemed .fc-button-group>.fc-button{position:relative;-webkit-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover,.fc-unthemed .btn-group-vertical>.active.fc-button,.fc-unthemed .btn-group-vertical>.fc-button:active,.fc-unthemed .btn-group-vertical>.fc-button:focus,.fc-unthemed .btn-group-vertical>.fc-button:hover,.fc-unthemed .btn-group>.active.fc-button,.fc-unthemed .btn-group>.fc-button:active,.fc-unthemed .btn-group>.fc-button:focus,.fc-unthemed .btn-group>.fc-button:hover,.fc-unthemed .fc-button-group>.active.fc-button,.fc-unthemed .fc-button-group>.btn.active,.fc-unthemed .fc-button-group>.btn:active,.fc-unthemed .fc-button-group>.btn:focus,.fc-unthemed .fc-button-group>.btn:hover,.fc-unthemed .fc-button-group>.fc-button:active,.fc-unthemed .fc-button-group>.fc-button:focus,.fc-unthemed .fc-button-group>.fc-button:hover{z-index:1}.btn-toolbar{display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-webkit-justify-content:flex-start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child),.fc-unthemed .btn-group>.fc-button-group:not(:first-child),.fc-unthemed .btn-group>.fc-button:not(:first-child),.fc-unthemed .fc-button-group>.btn-group:not(:first-child),.fc-unthemed .fc-button-group>.btn:not(:first-child),.fc-unthemed .fc-button-group>.fc-button-group:not(:first-child),.fc-unthemed .fc-button-group>.fc-button:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.fc-unthemed .btn-group>.btn-group:not(:last-child)>.fc-button,.fc-unthemed .btn-group>.fc-button-group:not(:last-child)>.btn,.fc-unthemed .btn-group>.fc-button-group:not(:last-child)>.fc-button,.fc-unthemed .btn-group>.fc-button:not(:last-child):not(.dropdown-toggle),.fc-unthemed .fc-button-group>.btn-group:not(:last-child)>.btn,.fc-unthemed .fc-button-group>.btn-group:not(:last-child)>.fc-button,.fc-unthemed .fc-button-group>.btn:not(:last-child):not(.dropdown-toggle),.fc-unthemed .fc-button-group>.fc-button-group:not(:last-child)>.btn,.fc-unthemed .fc-button-group>.fc-button-group:not(:last-child)>.fc-button,.fc-unthemed .fc-button-group>.fc-button:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child),.fc-unthemed .btn-group>.btn-group:not(:first-child)>.fc-button,.fc-unthemed .btn-group>.fc-button-group:not(:first-child)>.btn,.fc-unthemed .btn-group>.fc-button-group:not(:first-child)>.fc-button,.fc-unthemed .btn-group>.fc-button:not(:first-child),.fc-unthemed .fc-button-group>.btn-group:not(:first-child)>.btn,.fc-unthemed .fc-button-group>.btn-group:not(:first-child)>.fc-button,.fc-unthemed .fc-button-group>.btn:not(:first-child),.fc-unthemed .fc-button-group>.fc-button-group:not(:first-child)>.btn,.fc-unthemed .fc-button-group>.fc-button-group:not(:first-child)>.fc-button,.fc-unthemed .fc-button-group>.fc-button:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.525rem;padding-left:.525rem}.dropdown-toggle-split:after,.dropright .dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after{margin-left:0}.dropleft .dropdown-toggle-split:before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split,.fc-unthemed .btn-group-sm>.fc-button+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split,.fc-unthemed .btn-group-lg>.fc-button+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-webkit-flex-direction:column;flex-direction:column;-webkit-align-items:flex-start;align-items:flex-start;-webkit-justify-content:center;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.fc-unthemed .btn-group-vertical>.fc-button,.fc-unthemed .btn-group-vertical>.fc-button-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child),.fc-unthemed .btn-group-vertical>.fc-button-group:not(:first-child),.fc-unthemed .btn-group-vertical>.fc-button:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.fc-unthemed .btn-group-vertical>.btn-group:not(:last-child)>.fc-button,.fc-unthemed .btn-group-vertical>.fc-button-group:not(:last-child)>.btn,.fc-unthemed .btn-group-vertical>.fc-button-group:not(:last-child)>.fc-button,.fc-unthemed .btn-group-vertical>.fc-button:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child),.fc-unthemed .btn-group-vertical>.btn-group:not(:first-child)>.fc-button,.fc-unthemed .btn-group-vertical>.fc-button-group:not(:first-child)>.btn,.fc-unthemed .btn-group-vertical>.fc-button-group:not(:first-child)>.fc-button,.fc-unthemed .btn-group-vertical>.fc-button:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn,.fc-unthemed .btn-group-toggle>.btn-group>.fc-button,.fc-unthemed .btn-group-toggle>.fc-button,.fc-unthemed .btn-group-toggle>.fc-button-group>.btn,.fc-unthemed .btn-group-toggle>.fc-button-group>.fc-button{margin-bottom:0}.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio],.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.fc-unthemed .btn-group-toggle>.btn-group>.fc-button input[type=checkbox],.fc-unthemed .btn-group-toggle>.btn-group>.fc-button input[type=radio],.fc-unthemed .btn-group-toggle>.fc-button-group>.btn input[type=checkbox],.fc-unthemed .btn-group-toggle>.fc-button-group>.btn input[type=radio],.fc-unthemed .btn-group-toggle>.fc-button-group>.fc-button input[type=checkbox],.fc-unthemed .btn-group-toggle>.fc-button-group>.fc-button input[type=radio],.fc-unthemed .btn-group-toggle>.fc-button input[type=checkbox],.fc-unthemed .btn-group-toggle>.fc-button input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-webkit-align-items:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;-webkit-flex:1 1 auto;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label:after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:-webkit-flex;display:flex}.fc-unthemed .input-group-append .fc-button,.fc-unthemed .input-group-prepend .fc-button,.input-group-append .btn,.input-group-append .fc-unthemed .fc-button,.input-group-prepend .btn,.input-group-prepend .fc-unthemed .fc-button{position:relative;z-index:2}.fc-unthemed .input-group-append .fc-button:focus,.fc-unthemed .input-group-prepend .fc-button:focus,.input-group-append .btn:focus,.input-group-append .fc-unthemed .fc-button:focus,.input-group-prepend .btn:focus,.input-group-prepend .fc-unthemed .fc-button:focus{z-index:3}.fc-unthemed .input-group-append .btn+.fc-button,.fc-unthemed .input-group-append .fc-button+.btn,.fc-unthemed .input-group-append .fc-button+.fc-button,.fc-unthemed .input-group-append .fc-button+.input-group-text,.fc-unthemed .input-group-append .input-group-text+.fc-button,.fc-unthemed .input-group-prepend .btn+.fc-button,.fc-unthemed .input-group-prepend .fc-button+.btn,.fc-unthemed .input-group-prepend .fc-button+.fc-button,.fc-unthemed .input-group-prepend .fc-button+.input-group-text,.fc-unthemed .input-group-prepend .input-group-text+.fc-button,.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .fc-unthemed .btn+.fc-button,.input-group-append .fc-unthemed .fc-button+.btn,.input-group-append .fc-unthemed .fc-button+.fc-button,.input-group-append .fc-unthemed .fc-button+.input-group-text,.input-group-append .fc-unthemed .input-group-text+.fc-button,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .fc-unthemed .btn+.fc-button,.input-group-prepend .fc-unthemed .fc-button+.btn,.input-group-prepend .fc-unthemed .fc-button+.fc-button,.input-group-prepend .fc-unthemed .fc-button+.input-group-text,.input-group-prepend .fc-unthemed .input-group-text+.fc-button,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;padding:.25rem .7rem;margin-bottom:0;font-size:.875rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.2rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(2.2rem + 2px)}.fc-unthemed .input-group-lg>.input-group-append>.fc-button,.fc-unthemed .input-group-lg>.input-group-prepend>.fc-button,.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.35rem 1rem;font-size:1rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.425rem + 2px)}.fc-unthemed .input-group-sm>.input-group-append>.fc-button,.fc-unthemed .input-group-sm>.input-group-prepend>.fc-button,.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.15rem .5rem;font-size:.75rem;line-height:1.5;border-radius:.1rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.7rem}.fc-unthemed .input-group>.input-group-append:last-child>.fc-button:not(:last-child):not(.dropdown-toggle),.fc-unthemed .input-group>.input-group-append:not(:last-child)>.fc-button,.fc-unthemed .input-group>.input-group-prepend>.fc-button,.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),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.fc-unthemed .input-group>.input-group-append>.fc-button,.fc-unthemed .input-group>.input-group-prepend:first-child>.fc-button:not(:first-child),.fc-unthemed .input-group>.input-group-prepend:not(:first-child)>.fc-button,.input-group>.input-group-append>.btn,.input-group>.input-group-append>.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),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.3125rem;padding-left:1.5rem}.custom-control-inline{display:-webkit-inline-flex;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;border-color:#47bac1;background-color:#47bac1}.custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem rgba(71,186,193,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label:before{border-color:#a6dee1}.custom-control-input:not(:disabled):active~.custom-control-label:before{color:#fff;background-color:#cdecee;border-color:#cdecee}.custom-control-input:disabled~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label:before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label:before{pointer-events:none;background-color:#dee2e6;border:1px solid #adb5bd}.custom-control-label:after,.custom-control-label:before{position:absolute;top:.15625rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:""}.custom-control-label:after{background:no-repeat 50%/50% 50%}.custom-checkbox .custom-control-label:before{border-radius:.2rem}.custom-checkbox .custom-control-input:checked~.custom-control-label:after{background-image:url("data:image/svg+xml;charset=utf-8,%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.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:before{border-color:#47bac1;background-color:#47bac1}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:after{background-image:url("data:image/svg+xml;charset=utf-8,%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(71,186,193,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label:before{background-color:rgba(71,186,193,.5)}.custom-radio .custom-control-label:before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label:after{background-image:url("data:image/svg+xml;charset=utf-8,%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(71,186,193,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label:before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label:after{top:calc(.15625rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label:after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label:after{background-color:#dee2e6;-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(71,186,193,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.8125rem + 2px);padding:.25rem 1.7rem .25rem .7rem;font-size:.875rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:url("data:image/svg+xml;charset=utf-8,%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 .7rem center/8px 10px;background-color:#fff;border:1px solid #ced4da;border-radius:.2rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#a6dee1;outline:0;box-shadow:0 0 0 .2rem rgba(71,186,193,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.7rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select-sm{height:calc(1.425rem + 2px);padding-top:.15rem;padding-bottom:.15rem;padding-left:.5rem;font-size:.75rem}.custom-select-lg{height:calc(2.2rem + 2px);padding-top:.35rem;padding-bottom:.35rem;padding-left:1rem;font-size:1rem}.custom-file{display:inline-block;margin-bottom:0}.custom-file,.custom-file-input{position:relative;width:100%;height:calc(1.8125rem + 2px)}.custom-file-input{z-index:2;margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#a6dee1;box-shadow:0 0 0 .2rem rgba(71,186,193,.25)}.custom-file-input:disabled~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label:after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]:after{content:attr(data-browse)}.custom-file-label{left:0;z-index:1;height:calc(1.8125rem + 2px);font-weight:400;background-color:#fff;border:1px solid #ced4da;border-radius:.2rem}.custom-file-label,.custom-file-label:after{position:absolute;top:0;right:0;padding:.25rem .7rem;line-height:1.5;color:#495057}.custom-file-label:after{bottom:0;z-index:3;display:block;height:1.8125rem;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .2rem .2rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:none}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #f5f9fc,0 0 0 .2rem rgba(71,186,193,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #f5f9fc,0 0 0 .2rem rgba(71,186,193,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #f5f9fc,0 0 0 .2rem rgba(71,186,193,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#47bac1;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#cdecee}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#47bac1;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{transition:none}}.custom-range::-moz-range-thumb:active{background-color:#cdecee}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#47bac1;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{transition:none}}.custom-range::-ms-thumb:active{background-color:#cdecee}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower,.custom-range::-ms-fill-upper{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label:before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label:before,.custom-file-label,.custom-select{transition:none}}.nav{display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.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:.2rem;border-top-right-radius:.2rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#f5f9fc;border-color:#dee2e6 #dee2e6 #f5f9fc}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.2rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#47bac1}.nav-fill .nav-item{-webkit-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-webkit-flex-basis:0;flex-basis:0;-webkit-flex-grow:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;padding:.875rem 1.25rem}.navbar,.navbar>.container,.navbar>.container-fluid{display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.33125rem;padding-bottom:.33125rem;margin-right:1.25rem;font-size:1.1rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-webkit-flex;display:flex;-webkit-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:.5rem;padding-bottom:.5rem}.navbar-collapse{-webkit-flex-basis:100%;flex-basis:100%;-webkit-flex-grow:1;flex-grow:1;-webkit-align-items:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.2rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat 50%;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-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-justify-content:flex-start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-webkit-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-webkit-flex!important;display:flex!important;-webkit-flex-basis:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@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-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-justify-content:flex-start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-webkit-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-webkit-flex!important;display:flex!important;-webkit-flex-basis:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@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-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-justify-content:flex-start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-webkit-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-webkit-flex!important;display:flex!important;-webkit-flex-basis:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@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-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-justify-content:flex-start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-webkit-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-webkit-flex!important;display:flex!important;-webkit-flex-basis:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}@media (max-width:1439.98px){.navbar-expand-xxl>.container,.navbar-expand-xxl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:1440px){.navbar-expand-xxl{-webkit-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-justify-content:flex-start;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{-webkit-flex-direction:row;flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xxl>.container,.navbar-expand-xxl>.container-fluid{-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xxl .navbar-collapse{display:-webkit-flex!important;display:flex!important;-webkit-flex-basis:auto;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}}.navbar-expand{-webkit-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-justify-content:flex-start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-webkit-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{-webkit-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-webkit-flex!important;display:flex!important;-webkit-flex-basis:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand,.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf-8,%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,.5)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand,.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:hsla(0,0%,100%,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:hsla(0,0%,100%,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:hsla(0,0%,100%,.5);border-color:hsla(0,0%,100%,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf-8,%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:hsla(0,0%,100%,.5)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid #e5e9f2;border-radius:.2rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.2rem;border-top-right-radius:.2rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.2rem;border-bottom-left-radius:.2rem}.card-body{-webkit-flex:1 1 auto;flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem}.card-subtitle,.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:#fff;border-bottom:1px solid #e5e9f2}.card-header:first-child{border-radius:calc(.2rem - 1px) calc(.2rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:#fff;border-top:1px solid #e5e9f2}.card-footer:last-child{border-radius:0 0 calc(.2rem - 1px) calc(.2rem - 1px)}.card-header-tabs{margin-bottom:-.75rem;border-bottom:0}.card-header-pills,.card-header-tabs{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.2rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.2rem - 1px);border-top-right-radius:calc(.2rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.2rem - 1px);border-bottom-left-radius:calc(.2rem - 1px)}.card-deck{display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{-webkit-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:-webkit-flex;display:flex;-webkit-flex:1 0 0%;flex:1 0 0%;-webkit-flex-direction:column;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{-webkit-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-webkit-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;column-count:3;-webkit-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion>.card{overflow:hidden}.accordion>.card:not(:first-of-type) .card-header:first-child{border-radius:0}.accordion>.card:not(:first-of-type):not(:last-of-type){border-bottom:0;border-radius:0}.accordion>.card:first-of-type{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:last-of-type{border-top-left-radius:0;border-top-right-radius:0}.accordion>.card .card-header{margin-bottom:-1px}.breadcrumb{display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.2rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item:before{display:inline-block;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover:before{text-decoration:underline;text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-webkit-flex;display:flex;padding-left:0;list-style:none;border-radius:.2rem}.page-link{position:relative;display:block;padding:.3rem .75rem;margin-left:-1px;line-height:1.25;color:#6c757d;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#343a40;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(71,186,193,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#47bac1;border-color:#47bac1}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.35rem 1rem;font-size:1rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.15rem .5rem;font-size:.75rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.1rem;border-bottom-left-radius:.1rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.1rem;border-bottom-right-radius:.1rem}.badge{display:inline-block;padding:.3em .45em;font-size:80%;font-weight:600;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.2rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge,.fc-unthemed .fc-button .badge{position:relative;top:-1px}.badge-pill{padding-right:.65em;padding-left:.65em;border-radius:10rem}.badge-primary{color:#212529;background-color:#47bac1}a.badge-primary:focus,a.badge-primary:hover{color:#212529;background-color:#36999f}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(71,186,193,.5)}.badge-secondary{color:#fff;background-color:#a180da}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#8459ce}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(161,128,218,.5)}.badge-success{color:#212529;background-color:#5fc27e}a.badge-success:focus,a.badge-success:hover{color:#212529;background-color:#42ac63}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(95,194,126,.5)}.badge-info{color:#fff;background-color:#5b7dff}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#2855ff}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(91,125,255,.5)}.badge-warning{color:#212529;background-color:#fcc100}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#c99a00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(252,193,0,.5)}.badge-danger{color:#fff;background-color:#f44455}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#f11429}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(244,68,85,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#354052}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#212833}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(53,64,82,.5)}.badge-tertiary{color:#212529;background-color:#5fc27e}a.badge-tertiary:focus,a.badge-tertiary:hover{color:#212529;background-color:#42ac63}a.badge-tertiary.focus,a.badge-tertiary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(95,194,126,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.95rem;margin-bottom:1rem;border:0 solid transparent;border-radius:.2rem}.alert-heading{color:inherit}.alert-link{font-weight:600}.alert-dismissible{padding-right:3.2125rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.95rem;color:inherit}.alert-primary{color:#256164;background-color:#47bac1;border-color:#cbecee}.alert-primary hr{border-top-color:#b8e5e8}.alert-primary .alert-link{color:#173d3f}.alert-secondary{color:#544371;background-color:#a180da;border-color:#e5dbf5}.alert-secondary hr{border-top-color:#d7c7ef}.alert-secondary .alert-link{color:#3c3051}.alert-success{color:#316542;background-color:#5fc27e;border-color:#d2eedb}.alert-success hr{border-top-color:#bfe7cc}.alert-success .alert-link{color:#20432c}.alert-info{color:#2f4185;background-color:#5b7dff;border-color:#d1dbff}.alert-info hr{border-top-color:#b8c7ff}.alert-info .alert-link{color:#222f5f}.alert-warning{color:#836400;background-color:#fcc100;border-color:#feeeb8}.alert-warning hr{border-top-color:#fee89f}.alert-warning .alert-link{color:#503d00}.alert-danger{color:#7f232c;background-color:#f44455;border-color:#fccbcf}.alert-danger hr{border-top-color:#fbb3b9}.alert-danger .alert-link{color:#57181e}.alert-light{color:#818182;background-color:#f8f9fa;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1c212b;background-color:#354052;border-color:#c6cacf}.alert-dark hr{border-top-color:#b8bdc3}.alert-dark .alert-link{color:#08090c}.alert-tertiary{color:#316542;background-color:#5fc27e;border-color:#d2eedb}.alert-tertiary hr{border-top-color:#bfe7cc}.alert-tertiary .alert-link{color:#20432c}@-webkit-keyframes progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}.progress{height:1rem;overflow:hidden;font-size:.65625rem;background-color:#e9ecef;border-radius:.2rem}.progress,.progress-bar{display:-webkit-flex;display:flex}.progress-bar{-webkit-flex-direction:column;flex-direction:column;-webkit-justify-content:center;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#47bac1;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:-webkit-flex;display:flex;-webkit-align-items:flex-start;align-items:flex-start}.media-body{-webkit-flex:1;flex:1}.list-group{display:-webkit-flex;display:flex;-webkit-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:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#495057;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.2rem;border-top-right-radius:.2rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.2rem;border-bottom-left-radius:.2rem}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#47bac1;border-color:#47bac1}.list-group-horizontal{-webkit-flex-direction:row;flex-direction:row}.list-group-horizontal .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal .list-group-item:first-child{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem;border-top-right-radius:0}.list-group-horizontal .list-group-item:last-child{margin-right:0;border-top-right-radius:.2rem;border-bottom-right-radius:.2rem;border-bottom-left-radius:0}@media (min-width:576px){.list-group-horizontal-sm{-webkit-flex-direction:row;flex-direction:row}.list-group-horizontal-sm .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-sm .list-group-item:first-child{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem;border-top-right-radius:0}.list-group-horizontal-sm .list-group-item:last-child{margin-right:0;border-top-right-radius:.2rem;border-bottom-right-radius:.2rem;border-bottom-left-radius:0}}@media (min-width:768px){.list-group-horizontal-md{-webkit-flex-direction:row;flex-direction:row}.list-group-horizontal-md .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-md .list-group-item:first-child{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem;border-top-right-radius:0}.list-group-horizontal-md .list-group-item:last-child{margin-right:0;border-top-right-radius:.2rem;border-bottom-right-radius:.2rem;border-bottom-left-radius:0}}@media (min-width:992px){.list-group-horizontal-lg{-webkit-flex-direction:row;flex-direction:row}.list-group-horizontal-lg .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-lg .list-group-item:first-child{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem;border-top-right-radius:0}.list-group-horizontal-lg .list-group-item:last-child{margin-right:0;border-top-right-radius:.2rem;border-bottom-right-radius:.2rem;border-bottom-left-radius:0}}@media (min-width:1200px){.list-group-horizontal-xl{-webkit-flex-direction:row;flex-direction:row}.list-group-horizontal-xl .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-xl .list-group-item:first-child{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem;border-top-right-radius:0}.list-group-horizontal-xl .list-group-item:last-child{margin-right:0;border-top-right-radius:.2rem;border-bottom-right-radius:.2rem;border-bottom-left-radius:0}}@media (min-width:1440px){.list-group-horizontal-xxl{-webkit-flex-direction:row;flex-direction:row}.list-group-horizontal-xxl .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-xxl .list-group-item:first-child{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem;border-top-right-radius:0}.list-group-horizontal-xxl .list-group-item:last-child{margin-right:0;border-top-right-radius:.2rem;border-bottom-right-radius:.2rem;border-bottom-left-radius:0}}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush .list-group-item:last-child{margin-bottom:-1px}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{margin-bottom:0;border-bottom:0}.list-group-item-primary{color:#256164;background-color:#cbecee}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#256164;background-color:#b8e5e8}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#256164;border-color:#256164}.list-group-item-secondary{color:#544371;background-color:#e5dbf5}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#544371;background-color:#d7c7ef}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#544371;border-color:#544371}.list-group-item-success{color:#316542;background-color:#d2eedb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#316542;background-color:#bfe7cc}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#316542;border-color:#316542}.list-group-item-info{color:#2f4185;background-color:#d1dbff}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#2f4185;background-color:#b8c7ff}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#2f4185;border-color:#2f4185}.list-group-item-warning{color:#836400;background-color:#feeeb8}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#836400;background-color:#fee89f}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#836400;border-color:#836400}.list-group-item-danger{color:#7f232c;background-color:#fccbcf}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#7f232c;background-color:#fbb3b9}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#7f232c;border-color:#7f232c}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1c212b;background-color:#c6cacf}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1c212b;background-color:#b8bdc3}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1c212b;border-color:#1c212b}.list-group-item-tertiary{color:#316542;background-color:#d2eedb}.list-group-item-tertiary.list-group-item-action:focus,.list-group-item-tertiary.list-group-item-action:hover{color:#316542;background-color:#bfe7cc}.list-group-item-tertiary.list-group-item-action.active{color:#fff;background-color:#316542;border-color:#316542}.close{float:right;font-size:1.3125rem;font-weight:600;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}a.close.disabled{pointer-events:none}.toast{max-width:350px;overflow:hidden;font-size:.875rem;background-color:hsla(0,0%,100%,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:hsla(0,0%,100%,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .25s ease-out;transition:transform .25s ease-out;transition:transform .25s ease-out,-webkit-transform .25s ease-out;-webkit-transform:translateY(-50px);transform:translateY(-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal-dialog-scrollable{display:-webkit-flex;display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{-webkit-flex-shrink:0;flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered:before{display:block;height:calc(100vh - 1rem);content:""}.modal-dialog-centered.modal-dialog-scrollable{-webkit-flex-direction:column;flex-direction:column;-webkit-justify-content:center;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable:before{content:none}.modal-content{position:relative;display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:0 solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-webkit-flex;display:flex;-webkit-align-items:flex-start;align-items:flex-start;-webkit-justify-content:space-between;justify-content:space-between;padding:1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-webkit-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-end;justify-content:flex-end;padding:1rem;border-top:1px solid #dee2e6;border-bottom-right-radius:.3rem;border-bottom-left-radius:.3rem}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:600px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered:before{height:calc(100vh - 3.5rem)}.modal-sm{max-width:400px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:900px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:Nunito Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.75rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow:before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow:before,.bs-tooltip-top .arrow:before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow:before,.bs-tooltip-right .arrow:before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow:before,.bs-tooltip-bottom .arrow:before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow:before,.bs-tooltip-left .arrow:before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.2rem}.popover{top:0;left:0;z-index:1060;max-width:276px;font-family:Nunito Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.75rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover,.popover .arrow{position:absolute;display:block}.popover .arrow{width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow:after,.popover .arrow:before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem + -1px)}.bs-popover-auto[x-placement^=top]>.arrow:before,.bs-popover-top>.arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow:after,.bs-popover-top>.arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem + -1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow:before,.bs-popover-right>.arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow:after,.bs-popover-right>.arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem + -1px)}.bs-popover-auto[x-placement^=bottom]>.arrow:before,.bs-popover-bottom>.arrow:before{top:0;border-width:0 .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow:after,.bs-popover-bottom>.arrow:after{top:1px;border-width:0 .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem + -1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow:before,.bs-popover-left>.arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow:after,.bs-popover-left>.arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:.875rem;color:#000;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#495057}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner:after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:no-repeat 50%/100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-webkit-flex;display:flex;-webkit-justify-content:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;-webkit-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spinner-border{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid;border-right:.25em solid transparent;border-radius:50%;-webkit-animation:spinner-border .75s linear infinite;animation:spinner-border .75s linear infinite}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:spinner-grow .75s linear infinite;animation:spinner-grow .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#47bac1!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#36999f!important}.bg-secondary{background-color:#a180da!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#8459ce!important}.bg-success{background-color:#5fc27e!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#42ac63!important}.bg-info{background-color:#5b7dff!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#2855ff!important}.bg-warning{background-color:#fcc100!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#c99a00!important}.bg-danger{background-color:#f44455!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#f11429!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#354052!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#212833!important}.bg-tertiary{background-color:#5fc27e!important}a.bg-tertiary:focus,a.bg-tertiary:hover,button.bg-tertiary:focus,button.bg-tertiary:hover{background-color:#42ac63!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#47bac1!important}.border-secondary{border-color:#a180da!important}.border-success{border-color:#5fc27e!important}.border-info{border-color:#5b7dff!important}.border-warning{border-color:#fcc100!important}.border-danger{border-color:#f44455!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#354052!important}.border-tertiary{border-color:#5fc27e!important}.border-white{border-color:#fff!important}.rounded{border-radius:.2rem!important}.rounded-top{border-top-left-radius:.2rem!important}.rounded-right,.rounded-top{border-top-right-radius:.2rem!important}.rounded-bottom,.rounded-right{border-bottom-right-radius:.2rem!important}.rounded-bottom,.rounded-left{border-bottom-left-radius:.2rem!important}.rounded-left{border-top-left-radius:.2rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix:after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-webkit-flex!important;display:flex!important}.d-inline-flex{display:-webkit-inline-flex!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-webkit-flex!important;display:flex!important}.d-sm-inline-flex{display:-webkit-inline-flex!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-webkit-flex!important;display:flex!important}.d-md-inline-flex{display:-webkit-inline-flex!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-webkit-flex!important;display:flex!important}.d-lg-inline-flex{display:-webkit-inline-flex!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-webkit-flex!important;display:flex!important}.d-xl-inline-flex{display:-webkit-inline-flex!important;display:inline-flex!important}}@media (min-width:1440px){.d-xxl-none{display:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:-webkit-flex!important;display:flex!important}.d-xxl-inline-flex{display:-webkit-inline-flex!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-webkit-flex!important;display:flex!important}.d-print-inline-flex{display:-webkit-inline-flex!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive:before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9:before{padding-top:42.85714%}.embed-responsive-16by9:before{padding-top:56.25%}.embed-responsive-4by3:before{padding-top:75%}.embed-responsive-1by1:before{padding-top:100%}.flex-row{-webkit-flex-direction:row!important;flex-direction:row!important}.flex-column{-webkit-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-webkit-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-webkit-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-webkit-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-webkit-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-webkit-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-webkit-flex-grow:0!important;flex-grow:0!important}.flex-grow-1{-webkit-flex-grow:1!important;flex-grow:1!important}.flex-shrink-0{-webkit-flex-shrink:0!important;flex-shrink:0!important}.flex-shrink-1{-webkit-flex-shrink:1!important;flex-shrink:1!important}.justify-content-start{-webkit-justify-content:flex-start!important;justify-content:flex-start!important}.justify-content-end{-webkit-justify-content:flex-end!important;justify-content:flex-end!important}.justify-content-center{-webkit-justify-content:center!important;justify-content:center!important}.justify-content-between{-webkit-justify-content:space-between!important;justify-content:space-between!important}.justify-content-around{-webkit-justify-content:space-around!important;justify-content:space-around!important}.align-items-start{-webkit-align-items:flex-start!important;align-items:flex-start!important}.align-items-end{-webkit-align-items:flex-end!important;align-items:flex-end!important}.align-items-center{-webkit-align-items:center!important;align-items:center!important}.align-items-baseline{-webkit-align-items:baseline!important;align-items:baseline!important}.align-items-stretch{-webkit-align-items:stretch!important;align-items:stretch!important}.align-content-start{-webkit-align-content:flex-start!important;align-content:flex-start!important}.align-content-end{-webkit-align-content:flex-end!important;align-content:flex-end!important}.align-content-center{-webkit-align-content:center!important;align-content:center!important}.align-content-between{-webkit-align-content:space-between!important;align-content:space-between!important}.align-content-around{-webkit-align-content:space-around!important;align-content:space-around!important}.align-content-stretch{-webkit-align-content:stretch!important;align-content:stretch!important}.align-self-auto{-webkit-align-self:auto!important;align-self:auto!important}.align-self-start{-webkit-align-self:flex-start!important;align-self:flex-start!important}.align-self-end{-webkit-align-self:flex-end!important;align-self:flex-end!important}.align-self-center{-webkit-align-self:center!important;align-self:center!important}.align-self-baseline{-webkit-align-self:baseline!important;align-self:baseline!important}.align-self-stretch{-webkit-align-self:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-webkit-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-webkit-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-webkit-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-webkit-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-webkit-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-webkit-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-webkit-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-webkit-flex-grow:0!important;flex-grow:0!important}.flex-sm-grow-1{-webkit-flex-grow:1!important;flex-grow:1!important}.flex-sm-shrink-0{-webkit-flex-shrink:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-webkit-flex-shrink:1!important;flex-shrink:1!important}.justify-content-sm-start{-webkit-justify-content:flex-start!important;justify-content:flex-start!important}.justify-content-sm-end{-webkit-justify-content:flex-end!important;justify-content:flex-end!important}.justify-content-sm-center{-webkit-justify-content:center!important;justify-content:center!important}.justify-content-sm-between{-webkit-justify-content:space-between!important;justify-content:space-between!important}.justify-content-sm-around{-webkit-justify-content:space-around!important;justify-content:space-around!important}.align-items-sm-start{-webkit-align-items:flex-start!important;align-items:flex-start!important}.align-items-sm-end{-webkit-align-items:flex-end!important;align-items:flex-end!important}.align-items-sm-center{-webkit-align-items:center!important;align-items:center!important}.align-items-sm-baseline{-webkit-align-items:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-webkit-align-items:stretch!important;align-items:stretch!important}.align-content-sm-start{-webkit-align-content:flex-start!important;align-content:flex-start!important}.align-content-sm-end{-webkit-align-content:flex-end!important;align-content:flex-end!important}.align-content-sm-center{-webkit-align-content:center!important;align-content:center!important}.align-content-sm-between{-webkit-align-content:space-between!important;align-content:space-between!important}.align-content-sm-around{-webkit-align-content:space-around!important;align-content:space-around!important}.align-content-sm-stretch{-webkit-align-content:stretch!important;align-content:stretch!important}.align-self-sm-auto{-webkit-align-self:auto!important;align-self:auto!important}.align-self-sm-start{-webkit-align-self:flex-start!important;align-self:flex-start!important}.align-self-sm-end{-webkit-align-self:flex-end!important;align-self:flex-end!important}.align-self-sm-center{-webkit-align-self:center!important;align-self:center!important}.align-self-sm-baseline{-webkit-align-self:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-webkit-align-self:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-webkit-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-webkit-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-webkit-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-webkit-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-webkit-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-webkit-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-webkit-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-webkit-flex-grow:0!important;flex-grow:0!important}.flex-md-grow-1{-webkit-flex-grow:1!important;flex-grow:1!important}.flex-md-shrink-0{-webkit-flex-shrink:0!important;flex-shrink:0!important}.flex-md-shrink-1{-webkit-flex-shrink:1!important;flex-shrink:1!important}.justify-content-md-start{-webkit-justify-content:flex-start!important;justify-content:flex-start!important}.justify-content-md-end{-webkit-justify-content:flex-end!important;justify-content:flex-end!important}.justify-content-md-center{-webkit-justify-content:center!important;justify-content:center!important}.justify-content-md-between{-webkit-justify-content:space-between!important;justify-content:space-between!important}.justify-content-md-around{-webkit-justify-content:space-around!important;justify-content:space-around!important}.align-items-md-start{-webkit-align-items:flex-start!important;align-items:flex-start!important}.align-items-md-end{-webkit-align-items:flex-end!important;align-items:flex-end!important}.align-items-md-center{-webkit-align-items:center!important;align-items:center!important}.align-items-md-baseline{-webkit-align-items:baseline!important;align-items:baseline!important}.align-items-md-stretch{-webkit-align-items:stretch!important;align-items:stretch!important}.align-content-md-start{-webkit-align-content:flex-start!important;align-content:flex-start!important}.align-content-md-end{-webkit-align-content:flex-end!important;align-content:flex-end!important}.align-content-md-center{-webkit-align-content:center!important;align-content:center!important}.align-content-md-between{-webkit-align-content:space-between!important;align-content:space-between!important}.align-content-md-around{-webkit-align-content:space-around!important;align-content:space-around!important}.align-content-md-stretch{-webkit-align-content:stretch!important;align-content:stretch!important}.align-self-md-auto{-webkit-align-self:auto!important;align-self:auto!important}.align-self-md-start{-webkit-align-self:flex-start!important;align-self:flex-start!important}.align-self-md-end{-webkit-align-self:flex-end!important;align-self:flex-end!important}.align-self-md-center{-webkit-align-self:center!important;align-self:center!important}.align-self-md-baseline{-webkit-align-self:baseline!important;align-self:baseline!important}.align-self-md-stretch{-webkit-align-self:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-webkit-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-webkit-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-webkit-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-webkit-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-webkit-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-webkit-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-webkit-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-webkit-flex-grow:0!important;flex-grow:0!important}.flex-lg-grow-1{-webkit-flex-grow:1!important;flex-grow:1!important}.flex-lg-shrink-0{-webkit-flex-shrink:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-webkit-flex-shrink:1!important;flex-shrink:1!important}.justify-content-lg-start{-webkit-justify-content:flex-start!important;justify-content:flex-start!important}.justify-content-lg-end{-webkit-justify-content:flex-end!important;justify-content:flex-end!important}.justify-content-lg-center{-webkit-justify-content:center!important;justify-content:center!important}.justify-content-lg-between{-webkit-justify-content:space-between!important;justify-content:space-between!important}.justify-content-lg-around{-webkit-justify-content:space-around!important;justify-content:space-around!important}.align-items-lg-start{-webkit-align-items:flex-start!important;align-items:flex-start!important}.align-items-lg-end{-webkit-align-items:flex-end!important;align-items:flex-end!important}.align-items-lg-center{-webkit-align-items:center!important;align-items:center!important}.align-items-lg-baseline{-webkit-align-items:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-webkit-align-items:stretch!important;align-items:stretch!important}.align-content-lg-start{-webkit-align-content:flex-start!important;align-content:flex-start!important}.align-content-lg-end{-webkit-align-content:flex-end!important;align-content:flex-end!important}.align-content-lg-center{-webkit-align-content:center!important;align-content:center!important}.align-content-lg-between{-webkit-align-content:space-between!important;align-content:space-between!important}.align-content-lg-around{-webkit-align-content:space-around!important;align-content:space-around!important}.align-content-lg-stretch{-webkit-align-content:stretch!important;align-content:stretch!important}.align-self-lg-auto{-webkit-align-self:auto!important;align-self:auto!important}.align-self-lg-start{-webkit-align-self:flex-start!important;align-self:flex-start!important}.align-self-lg-end{-webkit-align-self:flex-end!important;align-self:flex-end!important}.align-self-lg-center{-webkit-align-self:center!important;align-self:center!important}.align-self-lg-baseline{-webkit-align-self:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-webkit-align-self:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-webkit-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-webkit-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-webkit-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-webkit-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-webkit-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-webkit-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-webkit-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-webkit-flex-grow:0!important;flex-grow:0!important}.flex-xl-grow-1{-webkit-flex-grow:1!important;flex-grow:1!important}.flex-xl-shrink-0{-webkit-flex-shrink:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-webkit-flex-shrink:1!important;flex-shrink:1!important}.justify-content-xl-start{-webkit-justify-content:flex-start!important;justify-content:flex-start!important}.justify-content-xl-end{-webkit-justify-content:flex-end!important;justify-content:flex-end!important}.justify-content-xl-center{-webkit-justify-content:center!important;justify-content:center!important}.justify-content-xl-between{-webkit-justify-content:space-between!important;justify-content:space-between!important}.justify-content-xl-around{-webkit-justify-content:space-around!important;justify-content:space-around!important}.align-items-xl-start{-webkit-align-items:flex-start!important;align-items:flex-start!important}.align-items-xl-end{-webkit-align-items:flex-end!important;align-items:flex-end!important}.align-items-xl-center{-webkit-align-items:center!important;align-items:center!important}.align-items-xl-baseline{-webkit-align-items:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-webkit-align-items:stretch!important;align-items:stretch!important}.align-content-xl-start{-webkit-align-content:flex-start!important;align-content:flex-start!important}.align-content-xl-end{-webkit-align-content:flex-end!important;align-content:flex-end!important}.align-content-xl-center{-webkit-align-content:center!important;align-content:center!important}.align-content-xl-between{-webkit-align-content:space-between!important;align-content:space-between!important}.align-content-xl-around{-webkit-align-content:space-around!important;align-content:space-around!important}.align-content-xl-stretch{-webkit-align-content:stretch!important;align-content:stretch!important}.align-self-xl-auto{-webkit-align-self:auto!important;align-self:auto!important}.align-self-xl-start{-webkit-align-self:flex-start!important;align-self:flex-start!important}.align-self-xl-end{-webkit-align-self:flex-end!important;align-self:flex-end!important}.align-self-xl-center{-webkit-align-self:center!important;align-self:center!important}.align-self-xl-baseline{-webkit-align-self:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-webkit-align-self:stretch!important;align-self:stretch!important}}@media (min-width:1440px){.flex-xxl-row{-webkit-flex-direction:row!important;flex-direction:row!important}.flex-xxl-column{-webkit-flex-direction:column!important;flex-direction:column!important}.flex-xxl-row-reverse{-webkit-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xxl-column-reverse{-webkit-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xxl-wrap{-webkit-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xxl-nowrap{-webkit-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{-webkit-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xxl-fill{-webkit-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xxl-grow-0{-webkit-flex-grow:0!important;flex-grow:0!important}.flex-xxl-grow-1{-webkit-flex-grow:1!important;flex-grow:1!important}.flex-xxl-shrink-0{-webkit-flex-shrink:0!important;flex-shrink:0!important}.flex-xxl-shrink-1{-webkit-flex-shrink:1!important;flex-shrink:1!important}.justify-content-xxl-start{-webkit-justify-content:flex-start!important;justify-content:flex-start!important}.justify-content-xxl-end{-webkit-justify-content:flex-end!important;justify-content:flex-end!important}.justify-content-xxl-center{-webkit-justify-content:center!important;justify-content:center!important}.justify-content-xxl-between{-webkit-justify-content:space-between!important;justify-content:space-between!important}.justify-content-xxl-around{-webkit-justify-content:space-around!important;justify-content:space-around!important}.align-items-xxl-start{-webkit-align-items:flex-start!important;align-items:flex-start!important}.align-items-xxl-end{-webkit-align-items:flex-end!important;align-items:flex-end!important}.align-items-xxl-center{-webkit-align-items:center!important;align-items:center!important}.align-items-xxl-baseline{-webkit-align-items:baseline!important;align-items:baseline!important}.align-items-xxl-stretch{-webkit-align-items:stretch!important;align-items:stretch!important}.align-content-xxl-start{-webkit-align-content:flex-start!important;align-content:flex-start!important}.align-content-xxl-end{-webkit-align-content:flex-end!important;align-content:flex-end!important}.align-content-xxl-center{-webkit-align-content:center!important;align-content:center!important}.align-content-xxl-between{-webkit-align-content:space-between!important;align-content:space-between!important}.align-content-xxl-around{-webkit-align-content:space-around!important;align-content:space-around!important}.align-content-xxl-stretch{-webkit-align-content:stretch!important;align-content:stretch!important}.align-self-xxl-auto{-webkit-align-self:auto!important;align-self:auto!important}.align-self-xxl-start{-webkit-align-self:flex-start!important;align-self:flex-start!important}.align-self-xxl-end{-webkit-align-self:flex-end!important;align-self:flex-end!important}.align-self-xxl-center{-webkit-align-self:center!important;align-self:center!important}.align-self-xxl-baseline{-webkit-align-self:baseline!important;align-self:baseline!important}.align-self-xxl-stretch{-webkit-align-self:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}@media (min-width:1440px){.float-xxl-left{float:left!important}.float-xxl-right{float:right!important}.float-xxl-none{float:none!important}}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{top:0}.fixed-bottom,.fixed-top{position:fixed;right:0;left:0;z-index:1030}.fixed-bottom{bottom:0}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.bootstrap-datetimepicker-widget .btn[data-action=clear]:after,.bootstrap-datetimepicker-widget .btn[data-action=decrementHours]:after,.bootstrap-datetimepicker-widget .btn[data-action=decrementMinutes]:after,.bootstrap-datetimepicker-widget .btn[data-action=incrementHours]:after,.bootstrap-datetimepicker-widget .btn[data-action=incrementMinutes]:after,.bootstrap-datetimepicker-widget .btn[data-action=showHours]:after,.bootstrap-datetimepicker-widget .btn[data-action=showMinutes]:after,.bootstrap-datetimepicker-widget .btn[data-action=today]:after,.bootstrap-datetimepicker-widget .btn[data-action=togglePeriod]:after,.bootstrap-datetimepicker-widget .fc-unthemed .fc-button[data-action=clear]:after,.bootstrap-datetimepicker-widget .fc-unthemed .fc-button[data-action=decrementHours]:after,.bootstrap-datetimepicker-widget .fc-unthemed .fc-button[data-action=decrementMinutes]:after,.bootstrap-datetimepicker-widget .fc-unthemed .fc-button[data-action=incrementHours]:after,.bootstrap-datetimepicker-widget .fc-unthemed .fc-button[data-action=incrementMinutes]:after,.bootstrap-datetimepicker-widget .fc-unthemed .fc-button[data-action=showHours]:after,.bootstrap-datetimepicker-widget .fc-unthemed .fc-button[data-action=showMinutes]:after,.bootstrap-datetimepicker-widget .fc-unthemed .fc-button[data-action=today]:after,.bootstrap-datetimepicker-widget .fc-unthemed .fc-button[data-action=togglePeriod]:after,.bootstrap-datetimepicker-widget .picker-switch:after,.bootstrap-datetimepicker-widget table th.next:after,.bootstrap-datetimepicker-widget table th.prev:after,.fc-unthemed .bootstrap-datetimepicker-widget .fc-button[data-action=clear]:after,.fc-unthemed .bootstrap-datetimepicker-widget .fc-button[data-action=decrementHours]:after,.fc-unthemed .bootstrap-datetimepicker-widget .fc-button[data-action=decrementMinutes]:after,.fc-unthemed .bootstrap-datetimepicker-widget .fc-button[data-action=incrementHours]:after,.fc-unthemed .bootstrap-datetimepicker-widget .fc-button[data-action=incrementMinutes]:after,.fc-unthemed .bootstrap-datetimepicker-widget .fc-button[data-action=showHours]:after,.fc-unthemed .bootstrap-datetimepicker-widget .fc-button[data-action=showMinutes]:after,.fc-unthemed .bootstrap-datetimepicker-widget .fc-button[data-action=today]:after,.fc-unthemed .bootstrap-datetimepicker-widget .fc-button[data-action=togglePeriod]:after,.sr-only{white-space:nowrap}.sr-only-focusable:active,.sr-only-focusable:focus{white-space:normal}.shadow-sm{box-shadow:0 .05rem .2rem rgba(0,0,0,.05)!important}.shadow{box-shadow:0 .1rem .2rem rgba(0,0,0,.05)!important}.shadow-lg{box-shadow:0 .2rem .2rem rgba(0,0,0,.05)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.stretched-link:after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:transparent}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.m-6{margin:4.5rem!important}.mt-6,.my-6{margin-top:4.5rem!important}.mr-6,.mx-6{margin-right:4.5rem!important}.mb-6,.my-6{margin-bottom:4.5rem!important}.ml-6,.mx-6{margin-left:4.5rem!important}.m-7{margin:6rem!important}.mt-7,.my-7{margin-top:6rem!important}.mr-7,.mx-7{margin-right:6rem!important}.mb-7,.my-7{margin-bottom:6rem!important}.ml-7,.mx-7{margin-left:6rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.p-6{padding:4.5rem!important}.pt-6,.py-6{padding-top:4.5rem!important}.pr-6,.px-6{padding-right:4.5rem!important}.pb-6,.py-6{padding-bottom:4.5rem!important}.pl-6,.px-6{padding-left:4.5rem!important}.p-7{padding:6rem!important}.pt-7,.py-7{padding-top:6rem!important}.pr-7,.px-7{padding-right:6rem!important}.pb-7,.py-7{padding-bottom:6rem!important}.pl-7,.px-7{padding-left:6rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-n6{margin:-4.5rem!important}.mt-n6,.my-n6{margin-top:-4.5rem!important}.mr-n6,.mx-n6{margin-right:-4.5rem!important}.mb-n6,.my-n6{margin-bottom:-4.5rem!important}.ml-n6,.mx-n6{margin-left:-4.5rem!important}.m-n7{margin:-6rem!important}.mt-n7,.my-n7{margin-top:-6rem!important}.mr-n7,.mx-n7{margin-right:-6rem!important}.mb-n7,.my-n7{margin-bottom:-6rem!important}.ml-n7,.mx-n7{margin-left:-6rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.m-sm-6{margin:4.5rem!important}.mt-sm-6,.my-sm-6{margin-top:4.5rem!important}.mr-sm-6,.mx-sm-6{margin-right:4.5rem!important}.mb-sm-6,.my-sm-6{margin-bottom:4.5rem!important}.ml-sm-6,.mx-sm-6{margin-left:4.5rem!important}.m-sm-7{margin:6rem!important}.mt-sm-7,.my-sm-7{margin-top:6rem!important}.mr-sm-7,.mx-sm-7{margin-right:6rem!important}.mb-sm-7,.my-sm-7{margin-bottom:6rem!important}.ml-sm-7,.mx-sm-7{margin-left:6rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.p-sm-6{padding:4.5rem!important}.pt-sm-6,.py-sm-6{padding-top:4.5rem!important}.pr-sm-6,.px-sm-6{padding-right:4.5rem!important}.pb-sm-6,.py-sm-6{padding-bottom:4.5rem!important}.pl-sm-6,.px-sm-6{padding-left:4.5rem!important}.p-sm-7{padding:6rem!important}.pt-sm-7,.py-sm-7{padding-top:6rem!important}.pr-sm-7,.px-sm-7{padding-right:6rem!important}.pb-sm-7,.py-sm-7{padding-bottom:6rem!important}.pl-sm-7,.px-sm-7{padding-left:6rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-n6{margin:-4.5rem!important}.mt-sm-n6,.my-sm-n6{margin-top:-4.5rem!important}.mr-sm-n6,.mx-sm-n6{margin-right:-4.5rem!important}.mb-sm-n6,.my-sm-n6{margin-bottom:-4.5rem!important}.ml-sm-n6,.mx-sm-n6{margin-left:-4.5rem!important}.m-sm-n7{margin:-6rem!important}.mt-sm-n7,.my-sm-n7{margin-top:-6rem!important}.mr-sm-n7,.mx-sm-n7{margin-right:-6rem!important}.mb-sm-n7,.my-sm-n7{margin-bottom:-6rem!important}.ml-sm-n7,.mx-sm-n7{margin-left:-6rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.m-md-6{margin:4.5rem!important}.mt-md-6,.my-md-6{margin-top:4.5rem!important}.mr-md-6,.mx-md-6{margin-right:4.5rem!important}.mb-md-6,.my-md-6{margin-bottom:4.5rem!important}.ml-md-6,.mx-md-6{margin-left:4.5rem!important}.m-md-7{margin:6rem!important}.mt-md-7,.my-md-7{margin-top:6rem!important}.mr-md-7,.mx-md-7{margin-right:6rem!important}.mb-md-7,.my-md-7{margin-bottom:6rem!important}.ml-md-7,.mx-md-7{margin-left:6rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.p-md-6{padding:4.5rem!important}.pt-md-6,.py-md-6{padding-top:4.5rem!important}.pr-md-6,.px-md-6{padding-right:4.5rem!important}.pb-md-6,.py-md-6{padding-bottom:4.5rem!important}.pl-md-6,.px-md-6{padding-left:4.5rem!important}.p-md-7{padding:6rem!important}.pt-md-7,.py-md-7{padding-top:6rem!important}.pr-md-7,.px-md-7{padding-right:6rem!important}.pb-md-7,.py-md-7{padding-bottom:6rem!important}.pl-md-7,.px-md-7{padding-left:6rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-n6{margin:-4.5rem!important}.mt-md-n6,.my-md-n6{margin-top:-4.5rem!important}.mr-md-n6,.mx-md-n6{margin-right:-4.5rem!important}.mb-md-n6,.my-md-n6{margin-bottom:-4.5rem!important}.ml-md-n6,.mx-md-n6{margin-left:-4.5rem!important}.m-md-n7{margin:-6rem!important}.mt-md-n7,.my-md-n7{margin-top:-6rem!important}.mr-md-n7,.mx-md-n7{margin-right:-6rem!important}.mb-md-n7,.my-md-n7{margin-bottom:-6rem!important}.ml-md-n7,.mx-md-n7{margin-left:-6rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.m-lg-6{margin:4.5rem!important}.mt-lg-6,.my-lg-6{margin-top:4.5rem!important}.mr-lg-6,.mx-lg-6{margin-right:4.5rem!important}.mb-lg-6,.my-lg-6{margin-bottom:4.5rem!important}.ml-lg-6,.mx-lg-6{margin-left:4.5rem!important}.m-lg-7{margin:6rem!important}.mt-lg-7,.my-lg-7{margin-top:6rem!important}.mr-lg-7,.mx-lg-7{margin-right:6rem!important}.mb-lg-7,.my-lg-7{margin-bottom:6rem!important}.ml-lg-7,.mx-lg-7{margin-left:6rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.p-lg-6{padding:4.5rem!important}.pt-lg-6,.py-lg-6{padding-top:4.5rem!important}.pr-lg-6,.px-lg-6{padding-right:4.5rem!important}.pb-lg-6,.py-lg-6{padding-bottom:4.5rem!important}.pl-lg-6,.px-lg-6{padding-left:4.5rem!important}.p-lg-7{padding:6rem!important}.pt-lg-7,.py-lg-7{padding-top:6rem!important}.pr-lg-7,.px-lg-7{padding-right:6rem!important}.pb-lg-7,.py-lg-7{padding-bottom:6rem!important}.pl-lg-7,.px-lg-7{padding-left:6rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-n6{margin:-4.5rem!important}.mt-lg-n6,.my-lg-n6{margin-top:-4.5rem!important}.mr-lg-n6,.mx-lg-n6{margin-right:-4.5rem!important}.mb-lg-n6,.my-lg-n6{margin-bottom:-4.5rem!important}.ml-lg-n6,.mx-lg-n6{margin-left:-4.5rem!important}.m-lg-n7{margin:-6rem!important}.mt-lg-n7,.my-lg-n7{margin-top:-6rem!important}.mr-lg-n7,.mx-lg-n7{margin-right:-6rem!important}.mb-lg-n7,.my-lg-n7{margin-bottom:-6rem!important}.ml-lg-n7,.mx-lg-n7{margin-left:-6rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.m-xl-6{margin:4.5rem!important}.mt-xl-6,.my-xl-6{margin-top:4.5rem!important}.mr-xl-6,.mx-xl-6{margin-right:4.5rem!important}.mb-xl-6,.my-xl-6{margin-bottom:4.5rem!important}.ml-xl-6,.mx-xl-6{margin-left:4.5rem!important}.m-xl-7{margin:6rem!important}.mt-xl-7,.my-xl-7{margin-top:6rem!important}.mr-xl-7,.mx-xl-7{margin-right:6rem!important}.mb-xl-7,.my-xl-7{margin-bottom:6rem!important}.ml-xl-7,.mx-xl-7{margin-left:6rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.p-xl-6{padding:4.5rem!important}.pt-xl-6,.py-xl-6{padding-top:4.5rem!important}.pr-xl-6,.px-xl-6{padding-right:4.5rem!important}.pb-xl-6,.py-xl-6{padding-bottom:4.5rem!important}.pl-xl-6,.px-xl-6{padding-left:4.5rem!important}.p-xl-7{padding:6rem!important}.pt-xl-7,.py-xl-7{padding-top:6rem!important}.pr-xl-7,.px-xl-7{padding-right:6rem!important}.pb-xl-7,.py-xl-7{padding-bottom:6rem!important}.pl-xl-7,.px-xl-7{padding-left:6rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-n6{margin:-4.5rem!important}.mt-xl-n6,.my-xl-n6{margin-top:-4.5rem!important}.mr-xl-n6,.mx-xl-n6{margin-right:-4.5rem!important}.mb-xl-n6,.my-xl-n6{margin-bottom:-4.5rem!important}.ml-xl-n6,.mx-xl-n6{margin-left:-4.5rem!important}.m-xl-n7{margin:-6rem!important}.mt-xl-n7,.my-xl-n7{margin-top:-6rem!important}.mr-xl-n7,.mx-xl-n7{margin-right:-6rem!important}.mb-xl-n7,.my-xl-n7{margin-bottom:-6rem!important}.ml-xl-n7,.mx-xl-n7{margin-left:-6rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}@media (min-width:1440px){.m-xxl-0{margin:0!important}.mt-xxl-0,.my-xxl-0{margin-top:0!important}.mr-xxl-0,.mx-xxl-0{margin-right:0!important}.mb-xxl-0,.my-xxl-0{margin-bottom:0!important}.ml-xxl-0,.mx-xxl-0{margin-left:0!important}.m-xxl-1{margin:.25rem!important}.mt-xxl-1,.my-xxl-1{margin-top:.25rem!important}.mr-xxl-1,.mx-xxl-1{margin-right:.25rem!important}.mb-xxl-1,.my-xxl-1{margin-bottom:.25rem!important}.ml-xxl-1,.mx-xxl-1{margin-left:.25rem!important}.m-xxl-2{margin:.5rem!important}.mt-xxl-2,.my-xxl-2{margin-top:.5rem!important}.mr-xxl-2,.mx-xxl-2{margin-right:.5rem!important}.mb-xxl-2,.my-xxl-2{margin-bottom:.5rem!important}.ml-xxl-2,.mx-xxl-2{margin-left:.5rem!important}.m-xxl-3{margin:1rem!important}.mt-xxl-3,.my-xxl-3{margin-top:1rem!important}.mr-xxl-3,.mx-xxl-3{margin-right:1rem!important}.mb-xxl-3,.my-xxl-3{margin-bottom:1rem!important}.ml-xxl-3,.mx-xxl-3{margin-left:1rem!important}.m-xxl-4{margin:1.5rem!important}.mt-xxl-4,.my-xxl-4{margin-top:1.5rem!important}.mr-xxl-4,.mx-xxl-4{margin-right:1.5rem!important}.mb-xxl-4,.my-xxl-4{margin-bottom:1.5rem!important}.ml-xxl-4,.mx-xxl-4{margin-left:1.5rem!important}.m-xxl-5{margin:3rem!important}.mt-xxl-5,.my-xxl-5{margin-top:3rem!important}.mr-xxl-5,.mx-xxl-5{margin-right:3rem!important}.mb-xxl-5,.my-xxl-5{margin-bottom:3rem!important}.ml-xxl-5,.mx-xxl-5{margin-left:3rem!important}.m-xxl-6{margin:4.5rem!important}.mt-xxl-6,.my-xxl-6{margin-top:4.5rem!important}.mr-xxl-6,.mx-xxl-6{margin-right:4.5rem!important}.mb-xxl-6,.my-xxl-6{margin-bottom:4.5rem!important}.ml-xxl-6,.mx-xxl-6{margin-left:4.5rem!important}.m-xxl-7{margin:6rem!important}.mt-xxl-7,.my-xxl-7{margin-top:6rem!important}.mr-xxl-7,.mx-xxl-7{margin-right:6rem!important}.mb-xxl-7,.my-xxl-7{margin-bottom:6rem!important}.ml-xxl-7,.mx-xxl-7{margin-left:6rem!important}.p-xxl-0{padding:0!important}.pt-xxl-0,.py-xxl-0{padding-top:0!important}.pr-xxl-0,.px-xxl-0{padding-right:0!important}.pb-xxl-0,.py-xxl-0{padding-bottom:0!important}.pl-xxl-0,.px-xxl-0{padding-left:0!important}.p-xxl-1{padding:.25rem!important}.pt-xxl-1,.py-xxl-1{padding-top:.25rem!important}.pr-xxl-1,.px-xxl-1{padding-right:.25rem!important}.pb-xxl-1,.py-xxl-1{padding-bottom:.25rem!important}.pl-xxl-1,.px-xxl-1{padding-left:.25rem!important}.p-xxl-2{padding:.5rem!important}.pt-xxl-2,.py-xxl-2{padding-top:.5rem!important}.pr-xxl-2,.px-xxl-2{padding-right:.5rem!important}.pb-xxl-2,.py-xxl-2{padding-bottom:.5rem!important}.pl-xxl-2,.px-xxl-2{padding-left:.5rem!important}.p-xxl-3{padding:1rem!important}.pt-xxl-3,.py-xxl-3{padding-top:1rem!important}.pr-xxl-3,.px-xxl-3{padding-right:1rem!important}.pb-xxl-3,.py-xxl-3{padding-bottom:1rem!important}.pl-xxl-3,.px-xxl-3{padding-left:1rem!important}.p-xxl-4{padding:1.5rem!important}.pt-xxl-4,.py-xxl-4{padding-top:1.5rem!important}.pr-xxl-4,.px-xxl-4{padding-right:1.5rem!important}.pb-xxl-4,.py-xxl-4{padding-bottom:1.5rem!important}.pl-xxl-4,.px-xxl-4{padding-left:1.5rem!important}.p-xxl-5{padding:3rem!important}.pt-xxl-5,.py-xxl-5{padding-top:3rem!important}.pr-xxl-5,.px-xxl-5{padding-right:3rem!important}.pb-xxl-5,.py-xxl-5{padding-bottom:3rem!important}.pl-xxl-5,.px-xxl-5{padding-left:3rem!important}.p-xxl-6{padding:4.5rem!important}.pt-xxl-6,.py-xxl-6{padding-top:4.5rem!important}.pr-xxl-6,.px-xxl-6{padding-right:4.5rem!important}.pb-xxl-6,.py-xxl-6{padding-bottom:4.5rem!important}.pl-xxl-6,.px-xxl-6{padding-left:4.5rem!important}.p-xxl-7{padding:6rem!important}.pt-xxl-7,.py-xxl-7{padding-top:6rem!important}.pr-xxl-7,.px-xxl-7{padding-right:6rem!important}.pb-xxl-7,.py-xxl-7{padding-bottom:6rem!important}.pl-xxl-7,.px-xxl-7{padding-left:6rem!important}.m-xxl-n1{margin:-.25rem!important}.mt-xxl-n1,.my-xxl-n1{margin-top:-.25rem!important}.mr-xxl-n1,.mx-xxl-n1{margin-right:-.25rem!important}.mb-xxl-n1,.my-xxl-n1{margin-bottom:-.25rem!important}.ml-xxl-n1,.mx-xxl-n1{margin-left:-.25rem!important}.m-xxl-n2{margin:-.5rem!important}.mt-xxl-n2,.my-xxl-n2{margin-top:-.5rem!important}.mr-xxl-n2,.mx-xxl-n2{margin-right:-.5rem!important}.mb-xxl-n2,.my-xxl-n2{margin-bottom:-.5rem!important}.ml-xxl-n2,.mx-xxl-n2{margin-left:-.5rem!important}.m-xxl-n3{margin:-1rem!important}.mt-xxl-n3,.my-xxl-n3{margin-top:-1rem!important}.mr-xxl-n3,.mx-xxl-n3{margin-right:-1rem!important}.mb-xxl-n3,.my-xxl-n3{margin-bottom:-1rem!important}.ml-xxl-n3,.mx-xxl-n3{margin-left:-1rem!important}.m-xxl-n4{margin:-1.5rem!important}.mt-xxl-n4,.my-xxl-n4{margin-top:-1.5rem!important}.mr-xxl-n4,.mx-xxl-n4{margin-right:-1.5rem!important}.mb-xxl-n4,.my-xxl-n4{margin-bottom:-1.5rem!important}.ml-xxl-n4,.mx-xxl-n4{margin-left:-1.5rem!important}.m-xxl-n5{margin:-3rem!important}.mt-xxl-n5,.my-xxl-n5{margin-top:-3rem!important}.mr-xxl-n5,.mx-xxl-n5{margin-right:-3rem!important}.mb-xxl-n5,.my-xxl-n5{margin-bottom:-3rem!important}.ml-xxl-n5,.mx-xxl-n5{margin-left:-3rem!important}.m-xxl-n6{margin:-4.5rem!important}.mt-xxl-n6,.my-xxl-n6{margin-top:-4.5rem!important}.mr-xxl-n6,.mx-xxl-n6{margin-right:-4.5rem!important}.mb-xxl-n6,.my-xxl-n6{margin-bottom:-4.5rem!important}.ml-xxl-n6,.mx-xxl-n6{margin-left:-4.5rem!important}.m-xxl-n7{margin:-6rem!important}.mt-xxl-n7,.my-xxl-n7{margin-top:-6rem!important}.mr-xxl-n7,.mx-xxl-n7{margin-right:-6rem!important}.mb-xxl-n7,.my-xxl-n7{margin-bottom:-6rem!important}.ml-xxl-n7,.mx-xxl-n7{margin-left:-6rem!important}.m-xxl-auto{margin:auto!important}.mt-xxl-auto,.my-xxl-auto{margin-top:auto!important}.mr-xxl-auto,.mx-xxl-auto{margin-right:auto!important}.mb-xxl-auto,.my-xxl-auto{margin-bottom:auto!important}.ml-xxl-auto,.mx-xxl-auto{margin-left:auto!important}}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1440px){.text-xxl-left{text-align:left!important}.text-xxl-right{text-align:right!important}.text-xxl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:600!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#47bac1!important}a.text-primary:focus,a.text-primary:hover{color:#2f878c!important}.text-secondary{color:#a180da!important}a.text-secondary:focus,a.text-secondary:hover{color:#7545c9!important}.text-success{color:#5fc27e!important}a.text-success:focus,a.text-success:hover{color:#3b9a58!important}.text-info{color:#5b7dff!important}a.text-info:focus,a.text-info:hover{color:#0f40ff!important}.text-warning{color:#fcc100!important}a.text-warning:focus,a.text-warning:hover{color:#b08600!important}.text-danger{color:#f44455!important}a.text-danger:focus,a.text-danger:hover{color:#de0d21!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#354052!important}a.text-dark:focus,a.text-dark:hover{color:#171c24!important}.text-tertiary{color:#5fc27e!important}a.text-tertiary:focus,a.text-tertiary:hover{color:#3b9a58!important}.text-body{color:#495057!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:hsla(0,0%,100%,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;overflow-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,:after,:before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]:after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}.container,body{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}}.accordion .card:not(:last-child){margin-bottom:0}.accordion .card-header{border-bottom:0}.accordion .card-body{border-top:1px solid #e5e9f2}.accordion .card-title a{color:#495057}.alert{padding:0;display:-webkit-flex;display:flex;color:#fff}.alert .close:focus,.alert .close:hover{color:#fff;opacity:1}.alert-outline,.alert-outline-coloured{color:#495057;background:#fff}.alert-outline-coloured hr,.alert-outline hr{border-top-color:#ced4da}.alert-outline-coloured .close:focus,.alert-outline-coloured .close:hover,.alert-outline .close:focus,.alert-outline .close:hover{color:#343a40}.alert-outline-coloured .alert-message,.alert-outline .alert-message{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem;border-top-left-radius:.2rem;border-bottom-left-radius:.2rem;border:1px solid #ced4da}.alert-outline-coloured .alert-message:not(:nth-child(2)),.alert-outline .alert-message:not(:nth-child(2)){border-top-left-radius:0;border-bottom-left-radius:0;border-left:0}.alert-outline-coloured .alert-icon,.alert-outline .alert-icon{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem;color:#fff}.alert-outline-coloured.alert-primary .alert-icon,.alert-outline.alert-primary .alert-icon{background-color:#47bac1}.alert-outline-coloured.alert-secondary .alert-icon,.alert-outline.alert-secondary .alert-icon{background-color:#a180da}.alert-outline-coloured.alert-success .alert-icon,.alert-outline.alert-success .alert-icon{background-color:#5fc27e}.alert-outline-coloured.alert-info .alert-icon,.alert-outline.alert-info .alert-icon{background-color:#5b7dff}.alert-outline-coloured.alert-warning .alert-icon,.alert-outline.alert-warning .alert-icon{background-color:#fcc100}.alert-outline-coloured.alert-danger .alert-icon,.alert-outline.alert-danger .alert-icon{background-color:#f44455}.alert-outline-coloured.alert-light .alert-icon,.alert-outline.alert-light .alert-icon{background-color:#f8f9fa}.alert-outline-coloured.alert-dark .alert-icon,.alert-outline.alert-dark .alert-icon{background-color:#354052}.alert-outline-coloured.alert-tertiary .alert-icon,.alert-outline.alert-tertiary .alert-icon{background-color:#5fc27e}.alert-outline-coloured.alert-primary .alert-message{border-color:#47bac1}.alert-outline-coloured.alert-secondary .alert-message{border-color:#a180da}.alert-outline-coloured.alert-success .alert-message{border-color:#5fc27e}.alert-outline-coloured.alert-info .alert-message{border-color:#5b7dff}.alert-outline-coloured.alert-warning .alert-message{border-color:#fcc100}.alert-outline-coloured.alert-danger .alert-message{border-color:#f44455}.alert-outline-coloured.alert-light .alert-message{border-color:#f8f9fa}.alert-outline-coloured.alert-dark .alert-message{border-color:#354052}.alert-outline-coloured.alert-tertiary .alert-message{border-color:#5fc27e}.alert-icon{padding:.95rem;background:hsla(0,0%,100%,.1)}.alert-message{padding:.95rem;width:100%;box-sizing:border-box}.avatar{margin-top:-15px;margin-bottom:-15px;width:40px;height:40px}.badge{color:#fff}.btn-pill{border-radius:10rem}.btn-square{border-radius:0}.btn .feather,.fc-unthemed .fc-button .feather{width:14px;height:14px}.btn-danger,.btn-danger.disabled,.btn-danger.focus,.btn-danger.hover:not(:disabled):not(.disabled),.btn-danger:disabled,.btn-danger:focus,.btn-danger:hover:not(:disabled):not(.disabled),.btn-dark,.btn-dark.disabled,.btn-dark.focus,.btn-dark.hover:not(:disabled):not(.disabled),.btn-dark:disabled,.btn-dark:focus,.btn-dark:hover:not(:disabled):not(.disabled),.btn-info,.btn-info.disabled,.btn-info.focus,.btn-info.hover:not(:disabled):not(.disabled),.btn-info:disabled,.btn-info:focus,.btn-info:hover:not(:disabled):not(.disabled),.btn-light,.btn-light.disabled,.btn-light.focus,.btn-light.hover:not(:disabled):not(.disabled),.btn-light:disabled,.btn-light:focus,.btn-light:hover:not(:disabled):not(.disabled),.btn-outline-danger.hover:not(:disabled):not(.disabled),.btn-outline-danger:hover:not(:disabled):not(.disabled),.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.btn-outline-dark.hover:not(:disabled):not(.disabled),.btn-outline-dark:hover:not(:disabled):not(.disabled),.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.btn-outline-info.hover:not(:disabled):not(.disabled),.btn-outline-info:hover:not(:disabled):not(.disabled),.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.btn-outline-light.hover:not(:disabled):not(.disabled),.btn-outline-light:hover:not(:disabled):not(.disabled),.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.btn-outline-primary.hover:not(:disabled):not(.disabled),.btn-outline-primary:hover:not(:disabled):not(.disabled),.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.btn-outline-secondary.hover:not(:disabled):not(.disabled),.btn-outline-secondary:hover:not(:disabled):not(.disabled),.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.btn-outline-success.hover:not(:disabled):not(.disabled),.btn-outline-success:hover:not(:disabled):not(.disabled),.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.btn-outline-tertiary.hover:not(:disabled):not(.disabled),.btn-outline-tertiary:hover:not(:disabled):not(.disabled),.btn-outline-tertiary:not(:disabled):not(.disabled).active,.btn-outline-tertiary:not(:disabled):not(.disabled):active,.btn-outline-warning.hover:not(:disabled):not(.disabled),.btn-outline-warning:hover:not(:disabled):not(.disabled),.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.btn-primary,.btn-primary.disabled,.btn-primary.focus,.btn-primary.hover:not(:disabled):not(.disabled),.btn-primary:disabled,.btn-primary:focus,.btn-primary:hover:not(:disabled):not(.disabled),.btn-secondary,.btn-secondary.disabled,.btn-secondary.focus,.btn-secondary.hover:not(:disabled):not(.disabled),.btn-secondary:disabled,.btn-secondary:focus,.btn-secondary:hover:not(:disabled):not(.disabled),.btn-success,.btn-success.disabled,.btn-success.focus,.btn-success.hover:not(:disabled):not(.disabled),.btn-success:disabled,.btn-success:focus,.btn-success:hover:not(:disabled):not(.disabled),.btn-tertiary,.btn-tertiary.disabled,.btn-tertiary.focus,.btn-tertiary.hover:not(:disabled):not(.disabled),.btn-tertiary:disabled,.btn-tertiary:focus,.btn-tertiary:hover:not(:disabled):not(.disabled),.btn-warning,.btn-warning.disabled,.btn-warning.focus,.btn-warning.hover:not(:disabled):not(.disabled),.btn-warning:disabled,.btn-warning:focus,.btn-warning:hover:not(:disabled):not(.disabled),.fc-unthemed .disabled.fc-button,.fc-unthemed .fc-button,.fc-unthemed .fc-button:disabled,.fc-unthemed .fc-button:focus,.fc-unthemed .fc-button:hover:not(:disabled):not(.disabled),.fc-unthemed .focus.fc-button,.fc-unthemed .hover.fc-button:not(:disabled):not(.disabled),.fc-unthemed .show>.dropdown-toggle.fc-button,.show>.btn-danger.dropdown-toggle,.show>.btn-dark.dropdown-toggle,.show>.btn-info.dropdown-toggle,.show>.btn-light.dropdown-toggle,.show>.btn-primary.dropdown-toggle,.show>.btn-secondary.dropdown-toggle,.show>.btn-success.dropdown-toggle,.show>.btn-tertiary.dropdown-toggle,.show>.btn-warning.dropdown-toggle{color:#fff}.btn-facebook{color:#fff;background-color:#3b5998;border-color:#3b5998}.btn-facebook:hover{color:#fff;background-color:#30497c;border-color:#2d4373}.btn-facebook.focus,.btn-facebook:focus{box-shadow:0 0 0 .2rem rgba(88,114,167,.5)}.btn-facebook.disabled,.btn-facebook:disabled{color:#fff;background-color:#3b5998;border-color:#3b5998}.btn-facebook:not(:disabled):not(.disabled).active,.btn-facebook:not(:disabled):not(.disabled):active,.show>.btn-facebook.dropdown-toggle{color:#fff;background-color:#2d4373;border-color:#293e6a}.btn-facebook:not(:disabled):not(.disabled).active:focus,.btn-facebook:not(:disabled):not(.disabled):active:focus,.show>.btn-facebook.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(88,114,167,.5)}.btn-facebook,.btn-facebook.disabled,.btn-facebook.focus,.btn-facebook.hover:not(:disabled):not(.disabled),.btn-facebook:disabled,.btn-facebook:focus,.btn-facebook:hover:not(:disabled):not(.disabled),.show>.btn-facebook.dropdown-toggle{color:#fff}.btn-twitter{color:#fff;background-color:#1da1f2;border-color:#1da1f2}.btn-twitter:hover{color:#fff;background-color:#0d8ddc;border-color:#0c85d0}.btn-twitter.focus,.btn-twitter:focus{box-shadow:0 0 0 .2rem rgba(63,175,244,.5)}.btn-twitter.disabled,.btn-twitter:disabled{color:#fff;background-color:#1da1f2;border-color:#1da1f2}.btn-twitter:not(:disabled):not(.disabled).active,.btn-twitter:not(:disabled):not(.disabled):active,.show>.btn-twitter.dropdown-toggle{color:#fff;background-color:#0c85d0;border-color:#0b7ec4}.btn-twitter:not(:disabled):not(.disabled).active:focus,.btn-twitter:not(:disabled):not(.disabled):active:focus,.show>.btn-twitter.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(63,175,244,.5)}.btn-twitter,.btn-twitter.disabled,.btn-twitter.focus,.btn-twitter.hover:not(:disabled):not(.disabled),.btn-twitter:disabled,.btn-twitter:focus,.btn-twitter:hover:not(:disabled):not(.disabled),.show>.btn-twitter.dropdown-toggle{color:#fff}.btn-google{color:#fff;background-color:#dc4e41;border-color:#dc4e41}.btn-google:hover{color:#fff;background-color:#d03526;border-color:#c63224}.btn-google.focus,.btn-google:focus{box-shadow:0 0 0 .2rem rgba(225,105,94,.5)}.btn-google.disabled,.btn-google:disabled{color:#fff;background-color:#dc4e41;border-color:#dc4e41}.btn-google:not(:disabled):not(.disabled).active,.btn-google:not(:disabled):not(.disabled):active,.show>.btn-google.dropdown-toggle{color:#fff;background-color:#c63224;border-color:#bb2f22}.btn-google:not(:disabled):not(.disabled).active:focus,.btn-google:not(:disabled):not(.disabled):active:focus,.show>.btn-google.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,105,94,.5)}.btn-google,.btn-google.disabled,.btn-google.focus,.btn-google.hover:not(:disabled):not(.disabled),.btn-google:disabled,.btn-google:focus,.btn-google:hover:not(:disabled):not(.disabled),.show>.btn-google.dropdown-toggle{color:#fff}.btn-youtube{color:#fff;background-color:red;border-color:red}.btn-youtube:hover{color:#fff;background-color:#d90000;border-color:#c00}.btn-youtube.focus,.btn-youtube:focus{box-shadow:0 0 0 .2rem rgba(255,38,38,.5)}.btn-youtube.disabled,.btn-youtube:disabled{color:#fff;background-color:red;border-color:red}.btn-youtube:not(:disabled):not(.disabled).active,.btn-youtube:not(:disabled):not(.disabled):active,.show>.btn-youtube.dropdown-toggle{color:#fff;background-color:#c00;border-color:#bf0000}.btn-youtube:not(:disabled):not(.disabled).active:focus,.btn-youtube:not(:disabled):not(.disabled):active:focus,.show>.btn-youtube.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,38,38,.5)}.btn-youtube,.btn-youtube.disabled,.btn-youtube.focus,.btn-youtube.hover:not(:disabled):not(.disabled),.btn-youtube:disabled,.btn-youtube:focus,.btn-youtube:hover:not(:disabled):not(.disabled),.show>.btn-youtube.dropdown-toggle{color:#fff}.btn-vimeo{color:#fff;background-color:#1ab7ea;border-color:#1ab7ea}.btn-vimeo:hover{color:#fff;background-color:#139ecb;border-color:#1295bf}.btn-vimeo.focus,.btn-vimeo:focus{box-shadow:0 0 0 .2rem rgba(60,194,237,.5)}.btn-vimeo.disabled,.btn-vimeo:disabled{color:#fff;background-color:#1ab7ea;border-color:#1ab7ea}.btn-vimeo:not(:disabled):not(.disabled).active,.btn-vimeo:not(:disabled):not(.disabled):active,.show>.btn-vimeo.dropdown-toggle{color:#fff;background-color:#1295bf;border-color:#108cb4}.btn-vimeo:not(:disabled):not(.disabled).active:focus,.btn-vimeo:not(:disabled):not(.disabled):active:focus,.show>.btn-vimeo.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(60,194,237,.5)}.btn-vimeo,.btn-vimeo.disabled,.btn-vimeo.focus,.btn-vimeo.hover:not(:disabled):not(.disabled),.btn-vimeo:disabled,.btn-vimeo:focus,.btn-vimeo:hover:not(:disabled):not(.disabled),.show>.btn-vimeo.dropdown-toggle{color:#fff}.btn-dribbble{color:#fff;background-color:#ea4c89;border-color:#ea4c89}.btn-dribbble:hover{color:#fff;background-color:#e62a72;border-color:#e51e6b}.btn-dribbble.focus,.btn-dribbble:focus{box-shadow:0 0 0 .2rem rgba(237,103,155,.5)}.btn-dribbble.disabled,.btn-dribbble:disabled{color:#fff;background-color:#ea4c89;border-color:#ea4c89}.btn-dribbble:not(:disabled):not(.disabled).active,.btn-dribbble:not(:disabled):not(.disabled):active,.show>.btn-dribbble.dropdown-toggle{color:#fff;background-color:#e51e6b;border-color:#dc1a65}.btn-dribbble:not(:disabled):not(.disabled).active:focus,.btn-dribbble:not(:disabled):not(.disabled):active:focus,.show>.btn-dribbble.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(237,103,155,.5)}.btn-dribbble,.btn-dribbble.disabled,.btn-dribbble.focus,.btn-dribbble.hover:not(:disabled):not(.disabled),.btn-dribbble:disabled,.btn-dribbble:focus,.btn-dribbble:hover:not(:disabled):not(.disabled),.show>.btn-dribbble.dropdown-toggle{color:#fff}.btn-github{color:#fff;background-color:#181717;border-color:#181717}.btn-github:hover{color:#fff;background-color:#040404;border-color:#000}.btn-github.focus,.btn-github:focus{box-shadow:0 0 0 .2rem rgba(59,58,58,.5)}.btn-github.disabled,.btn-github:disabled{color:#fff;background-color:#181717;border-color:#181717}.btn-github:not(:disabled):not(.disabled).active,.btn-github:not(:disabled):not(.disabled):active,.show>.btn-github.dropdown-toggle{color:#fff;background-color:#000;border-color:#000}.btn-github:not(:disabled):not(.disabled).active:focus,.btn-github:not(:disabled):not(.disabled):active:focus,.show>.btn-github.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(59,58,58,.5)}.btn-github,.btn-github.disabled,.btn-github.focus,.btn-github.hover:not(:disabled):not(.disabled),.btn-github:disabled,.btn-github:focus,.btn-github:hover:not(:disabled):not(.disabled),.show>.btn-github.dropdown-toggle{color:#fff}.btn-instagram{color:#fff;background-color:#e4405f;border-color:#e4405f}.btn-instagram:hover{color:#fff;background-color:#de1f44;border-color:#d31e40}.btn-instagram.focus,.btn-instagram:focus{box-shadow:0 0 0 .2rem rgba(232,93,119,.5)}.btn-instagram.disabled,.btn-instagram:disabled{color:#fff;background-color:#e4405f;border-color:#e4405f}.btn-instagram:not(:disabled):not(.disabled).active,.btn-instagram:not(:disabled):not(.disabled):active,.show>.btn-instagram.dropdown-toggle{color:#fff;background-color:#d31e40;border-color:#c81c3d}.btn-instagram:not(:disabled):not(.disabled).active:focus,.btn-instagram:not(:disabled):not(.disabled):active:focus,.show>.btn-instagram.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(232,93,119,.5)}.btn-instagram,.btn-instagram.disabled,.btn-instagram.focus,.btn-instagram.hover:not(:disabled):not(.disabled),.btn-instagram:disabled,.btn-instagram:focus,.btn-instagram:hover:not(:disabled):not(.disabled),.show>.btn-instagram.dropdown-toggle{color:#fff}.btn-pinterest{color:#fff;background-color:#bd081c;border-color:#bd081c}.btn-pinterest:hover{color:#fff;background-color:#980617;border-color:#8c0615}.btn-pinterest.focus,.btn-pinterest:focus{box-shadow:0 0 0 .2rem rgba(199,45,62,.5)}.btn-pinterest.disabled,.btn-pinterest:disabled{color:#fff;background-color:#bd081c;border-color:#bd081c}.btn-pinterest:not(:disabled):not(.disabled).active,.btn-pinterest:not(:disabled):not(.disabled):active,.show>.btn-pinterest.dropdown-toggle{color:#fff;background-color:#8c0615;border-color:#800513}.btn-pinterest:not(:disabled):not(.disabled).active:focus,.btn-pinterest:not(:disabled):not(.disabled):active:focus,.show>.btn-pinterest.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(199,45,62,.5)}.btn-pinterest,.btn-pinterest.disabled,.btn-pinterest.focus,.btn-pinterest.hover:not(:disabled):not(.disabled),.btn-pinterest:disabled,.btn-pinterest:focus,.btn-pinterest:hover:not(:disabled):not(.disabled),.show>.btn-pinterest.dropdown-toggle{color:#fff}.btn-flickr{color:#fff;background-color:#0063dc;border-color:#0063dc}.btn-flickr:hover{color:#fff;background-color:#0052b6;border-color:#004ca9}.btn-flickr.focus,.btn-flickr:focus{box-shadow:0 0 0 .2rem rgba(38,122,225,.5)}.btn-flickr.disabled,.btn-flickr:disabled{color:#fff;background-color:#0063dc;border-color:#0063dc}.btn-flickr:not(:disabled):not(.disabled).active,.btn-flickr:not(:disabled):not(.disabled):active,.show>.btn-flickr.dropdown-toggle{color:#fff;background-color:#004ca9;border-color:#00469c}.btn-flickr:not(:disabled):not(.disabled).active:focus,.btn-flickr:not(:disabled):not(.disabled):active:focus,.show>.btn-flickr.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,122,225,.5)}.btn-flickr,.btn-flickr.disabled,.btn-flickr.focus,.btn-flickr.hover:not(:disabled):not(.disabled),.btn-flickr:disabled,.btn-flickr:focus,.btn-flickr:hover:not(:disabled):not(.disabled),.show>.btn-flickr.dropdown-toggle{color:#fff}.btn-bitbucket{color:#fff;background-color:#0052cc;border-color:#0052cc}.btn-bitbucket:hover{color:#fff;background-color:#0043a6;border-color:#003e99}.btn-bitbucket.focus,.btn-bitbucket:focus{box-shadow:0 0 0 .2rem rgba(38,108,212,.5)}.btn-bitbucket.disabled,.btn-bitbucket:disabled{color:#fff;background-color:#0052cc;border-color:#0052cc}.btn-bitbucket:not(:disabled):not(.disabled).active,.btn-bitbucket:not(:disabled):not(.disabled):active,.show>.btn-bitbucket.dropdown-toggle{color:#fff;background-color:#003e99;border-color:#00388c}.btn-bitbucket:not(:disabled):not(.disabled).active:focus,.btn-bitbucket:not(:disabled):not(.disabled):active:focus,.show>.btn-bitbucket.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,108,212,.5)}.btn-bitbucket,.btn-bitbucket.disabled,.btn-bitbucket.focus,.btn-bitbucket.hover:not(:disabled):not(.disabled),.btn-bitbucket:disabled,.btn-bitbucket:focus,.btn-bitbucket:hover:not(:disabled):not(.disabled),.show>.btn-bitbucket.dropdown-toggle{color:#fff}.btn-light,.btn-light.disabled,.btn-light.focus,.btn-light.hover:not(:disabled):not(.disabled),.btn-light:disabled,.btn-light:focus,.btn-light:hover:not(:disabled):not(.disabled),.btn-outline-light.hover:not(:disabled):not(.disabled),.btn-outline-light:hover:not(:disabled):not(.disabled),.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.btn-outline-white.hover:not(:disabled):not(.disabled),.btn-outline-white:hover:not(:disabled):not(.disabled),.btn-outline-white:not(:disabled):not(.disabled).active,.btn-outline-white:not(:disabled):not(.disabled):active,.btn-white,.btn-white.disabled,.btn-white.focus,.btn-white.hover:not(:disabled):not(.disabled),.btn-white:disabled,.btn-white:focus,.btn-white:hover:not(:disabled):not(.disabled),.show>.btn-light.dropdown-toggle,.show>.btn-white.dropdown-toggle{color:#343a40}.card{margin-bottom:2rem;box-shadow:none}.card-header{border-bottom-width:1px}.card-actions a{color:#495057;text-decoration:none}.card-actions svg{width:16px;height:16px}.card-actions .dropdown{line-height:1.4}.card-title{font-size:1rem}.card-subtitle,.card-title{font-weight:400}.card-table{margin-bottom:0}.card-table tr td:first-child,.card-table tr th:first-child{padding-left:1.25rem}.card-table tr td:last-child,.card-table tr th:last-child{padding-right:1.25rem}.card-img-top{height:100%}.chart{margin:auto;position:relative;width:100%;min-height:300px}.chart-xs{min-height:150px}.chart-sm{min-height:200px}.chart-lg{min-height:350px}.chart-xl{min-height:500px}.chart canvas{max-width:100%}.navbar-nav .dropdown-menu{box-shadow:0 .1rem .2rem rgba(0,0,0,.05)}.dropdown .dropdown-menu.show{-webkit-animation-name:dropdownAnimation;animation-name:dropdownAnimation;-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-timing-function:ease;animation-timing-function:ease;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}@-webkit-keyframes dropdownAnimation{0%{opacity:0;margin-top:-8px}to{opacity:1;margin-top:0}}@keyframes dropdownAnimation{0%{opacity:0;margin-top:-8px}to{opacity:1;margin-top:0}}.dropdown-toggle:after{border:solid;border-width:0 2px 2px 0;display:inline-block;padding:2px;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.dropdown-item{transition:background .1s ease-in-out,color .1s ease-in-out}.dropdown-menu-lg{min-width:20rem}.dropdown .list-group .list-group-item{border-width:0 0 1px;margin-bottom:0}.dropdown .list-group .list-group-item:first-child,.dropdown .list-group .list-group-item:last-child{border-radius:0}.dropdown .list-group .list-group-item:hover{background:#f8f9fa}.dropdown-menu-header{padding:.75rem;text-align:center;font-weight:600;border-bottom:1px solid #dee2e6}.dropdown-menu-footer{padding:.5rem;text-align:center;display:block;font-size:.75rem}.feather{width:18px;height:18px}.feather-sm{width:14px;height:14px}.feather-lg{width:36px;height:36px}footer.footer{background:#fff;border-top:1px solid #dee2e6;padding:1rem .75rem}footer.footer ul{margin-bottom:0}@media (max-width:991.98px){footer.footer{width:100vw}}.form-control-no-border{border:0;border-radius:0;box-shadow:none}.form-control-no-border:focus{box-shadow:none;outline:0}.hamburger,.hamburger:after,.hamburger:before{cursor:pointer;border-radius:1px;height:3px;width:24px;background:#495057;display:block;content:"";transition:background .1s ease-in-out,color .1s ease-in-out}.hamburger{position:relative}.hamburger:before{top:-7.5px;width:18px;position:absolute}.hamburger:after{bottom:-7.5px;width:14px;position:absolute}.sidebar-toggle:hover .hamburger,.sidebar-toggle:hover .hamburger:after,.sidebar-toggle:hover .hamburger:before{background:#47bac1}.hamburger-right,.hamburger-right:after,.hamburger-right:before{right:0}.landing-intro{background:#2b3443;color:#fff}.landing-intro-brand{color:#47bac1;width:42px;height:42px}.landing-intro-img{position:relative;height:100%;overflow:hidden}.landing-intro-img-analytics,.landing-intro-img-default{position:absolute;bottom:0}.landing-intro-img-default{width:75%;right:0;z-index:2;box-shadow:-10px 0 15px 0 rgba(0,0,0,.25)}.landing-intro-img-analytics{width:75%;left:0;z-index:1}.landing-features-icon{width:42px;height:42px;color:#3cacb2}.modal-primary .modal-content{background:#47bac1;color:#212529}.modal-primary .h1,.modal-primary .h2,.modal-primary .h3,.modal-primary .h4,.modal-primary .h5,.modal-primary .h6,.modal-primary h1,.modal-primary h2,.modal-primary h3,.modal-primary h4,.modal-primary h5,.modal-primary h6{color:#fff}.modal-secondary .modal-content{background:#a180da;color:#fff}.modal-secondary .h1,.modal-secondary .h2,.modal-secondary .h3,.modal-secondary .h4,.modal-secondary .h5,.modal-secondary .h6,.modal-secondary h1,.modal-secondary h2,.modal-secondary h3,.modal-secondary h4,.modal-secondary h5,.modal-secondary h6{color:#fff}.modal-success .modal-content{background:#5fc27e;color:#212529}.modal-success .h1,.modal-success .h2,.modal-success .h3,.modal-success .h4,.modal-success .h5,.modal-success .h6,.modal-success h1,.modal-success h2,.modal-success h3,.modal-success h4,.modal-success h5,.modal-success h6{color:#fff}.modal-info .modal-content{background:#5b7dff;color:#fff}.modal-info .h1,.modal-info .h2,.modal-info .h3,.modal-info .h4,.modal-info .h5,.modal-info .h6,.modal-info h1,.modal-info h2,.modal-info h3,.modal-info h4,.modal-info h5,.modal-info h6{color:#fff}.modal-warning .modal-content{background:#fcc100;color:#212529}.modal-warning .h1,.modal-warning .h2,.modal-warning .h3,.modal-warning .h4,.modal-warning .h5,.modal-warning .h6,.modal-warning h1,.modal-warning h2,.modal-warning h3,.modal-warning h4,.modal-warning h5,.modal-warning h6{color:#fff}.modal-danger .modal-content{background:#f44455;color:#fff}.modal-danger .h1,.modal-danger .h2,.modal-danger .h3,.modal-danger .h4,.modal-danger .h5,.modal-danger .h6,.modal-danger h1,.modal-danger h2,.modal-danger h3,.modal-danger h4,.modal-danger h5,.modal-danger h6{color:#fff}.modal-light .modal-content{background:#f8f9fa;color:#212529}.modal-light .h1,.modal-light .h2,.modal-light .h3,.modal-light .h4,.modal-light .h5,.modal-light .h6,.modal-light h1,.modal-light h2,.modal-light h3,.modal-light h4,.modal-light h5,.modal-light h6{color:#fff}.modal-dark .modal-content{background:#354052;color:#fff}.modal-dark .h1,.modal-dark .h2,.modal-dark .h3,.modal-dark .h4,.modal-dark .h5,.modal-dark .h6,.modal-dark h1,.modal-dark h2,.modal-dark h3,.modal-dark h4,.modal-dark h5,.modal-dark h6{color:#fff}.modal-tertiary .modal-content{background:#5fc27e;color:#212529}.modal-tertiary .h1,.modal-tertiary .h2,.modal-tertiary .h3,.modal-tertiary .h4,.modal-tertiary .h5,.modal-tertiary .h6,.modal-tertiary h1,.modal-tertiary h2,.modal-tertiary h3,.modal-tertiary h4,.modal-tertiary h5,.modal-tertiary h6{color:#fff}.modal-colored .modal-footer,.modal-colored .modal-header{border-color:hsla(0,0%,100%,.33)}.navbar{border-bottom:1px solid #e5e9f2}@media (max-width:991.98px){.navbar{width:100vw}}.navbar-brand{font-weight:600}.nav-flag,.nav-icon{padding:.1rem .8rem;display:block;font-size:1.5rem;color:#6c757d;transition:background .1s ease-in-out,color .1s ease-in-out;line-height:1.4}.nav-flag:after,.nav-icon:after{display:none!important}.nav-flag.active,.nav-flag:hover,.nav-icon.active,.nav-icon:hover{color:#47bac1}.nav-flag .feather,.nav-flag svg,.nav-icon .feather,.nav-icon svg{width:20px;height:20px}.nav-item .indicator{background:#47bac1;box-shadow:0 .1rem .2rem rgba(0,0,0,.05);border-radius:50%;display:block;height:18px;width:18px;padding:1px;position:absolute;top:0;right:-8px;text-align:center;transition:top .1s ease-out;font-size:.675rem;color:#fff}.nav-item:hover .indicator{top:-4px}.nav-item a:focus{outline:0}@media (-ms-high-contrast:none),screen and (-ms-high-contrast:active){.navbar .avatar{max-height:47px}}@media (max-width:575.98px){.navbar{padding:.75rem}.nav-icon{padding:.1rem .75rem}.dropdown,.dropleft,.dropright,.dropup{position:inherit}.navbar-expand .navbar-nav .dropdown-menu-lg{min-width:100%}.nav-item .nav-link:after{display:none}}.nav-flag img{border-radius:50%;width:20px;height:20px;object-fit:cover}#root,body,html{height:100%}body{overflow-y:scroll;opacity:1!important}@media (-ms-high-contrast:none),screen and (-ms-high-contrast:active){html{overflow-x:hidden}}.progress-sm{height:.5rem}.progress-lg{height:1.5rem}.sidebar{min-width:250px;max-width:250px;border-right:0}.sidebar,.sidebar-content{transition:margin-left .4s ease-in-out,left .4s ease-in-out;background:#354052}.sidebar-sticky .sidebar-content{border-right:0}.sidebar-sticky .sidebar-nav{padding-bottom:0}.sidebar-sticky .sidebar-content{height:100vh;position:fixed;top:0;left:0;width:250px}.sidebar-nav{padding-bottom:3.5rem;padding-left:15px;list-style:none}.sidebar-link,a.sidebar-link{display:block;padding:.75rem 1.5rem;color:#ced4da;font-weight:400;background:#354052;transition:background .1s ease-in-out;position:relative;text-decoration:none;cursor:pointer}.sidebar-link svg,a.sidebar-link svg{margin-right:.75rem;color:#fff}.sidebar-link:focus{outline:0}.sidebar-link:hover{color:#ced4da;background:#2d3646}.sidebar-link:hover svg{color:#fff}.sidebar-item.active .sidebar-link:hover,.sidebar-item.active>.sidebar-link{color:#ced4da;background:#2d3646}.sidebar-item.active .sidebar-link:hover svg,.sidebar-item.active>.sidebar-link svg{color:#fff}.sidebar-dropdown .sidebar-link{padding:.625rem 1.5rem .625rem 2.75rem;color:#adb5bd;background:#313b4c;font-weight:400}.sidebar-dropdown .sidebar-item.active .sidebar-link,.sidebar-dropdown .sidebar-item .sidebar-link:hover{color:#e9ecef;background:#2d3646;font-weight:400}.sidebar [data-toggle=collapse]{position:relative}.sidebar [data-toggle=collapse]:before{content:" ";border:solid;border-width:0 .1rem .1rem 0;display:inline-block;padding:2px;-webkit-transform:rotate(45deg);transform:rotate(45deg);position:absolute;top:1.2rem;right:1.25rem;transition:all .2s ease-out}.sidebar [aria-expanded=true]:before,.sidebar [data-toggle=collapse]:not(.collapsed):before{-webkit-transform:rotate(-135deg);transform:rotate(-135deg);top:1.4rem}.sidebar-brand{font-weight:400;font-size:1.15rem;padding:1.15rem 1.5rem;color:#f8f9fa;display:block}.sidebar-brand:hover{text-decoration:none;color:#f8f9fa}.sidebar-brand:focus{outline:0}.sidebar-brand .feather,.sidebar-brand svg{color:#47bac1;height:24px;width:24px;margin-left:-.15rem;margin-right:.375rem}.sidebar-toggle{cursor:pointer;width:26px;height:26px}.sidebar.toggled{margin-left:-250px}.sidebar.toggled .sidebar-content{left:-250px}@media (min-width:1px) and (max-width:991.98px){.sidebar{margin-left:-250px}.sidebar .sidebar-content{left:-250px}.sidebar.toggled{margin-left:0}.sidebar.toggled .sidebar-content{left:0}.sidebar-collapsed{margin-left:0}.sidebar-collapsed .sidebar-content{left:0}.sidebar-collapsed.toggled{margin-left:-250px}.sidebar-collapsed.toggled .sidebar-content{left:-250px}}.sidebar-header{background:transparent;color:#adb5bd;padding:.375rem 1.5rem;font-size:.75rem;text-transform:none}.sidebar-bottom{transition:margin-left .4s ease-in-out,left .4s ease-in-out;padding:1rem;width:inherit;font-size:.8rem;bottom:0;left:0;position:fixed;background:#313b4c;min-width:250px;max-width:250px;color:#e9ecef;border-right:0;margin-left:0}.sidebar-bottom h5{color:#e9ecef}.sidebar.toggled .sidebar-bottom{margin-left:-250px}.sidebar-badge{position:absolute;right:15px;top:14px}.min-vw-50{min-width:50vw!important}.min-vh-50{min-height:50vh!important}.vw-50{width:50vw!important}.vh-50{height:50vh!important}.card>.dataTables_wrapper .table.dataTable,.card>.table,.card>.table-responsive-lg .table,.card>.table-responsive-md .table,.card>.table-responsive-sm .table,.card>.table-responsive-xl .table,.card>.table-responsive .table{border-right:0;border-bottom:0;border-left:0;margin-bottom:0}.card>.dataTables_wrapper .table.dataTable td:first-child,.card>.dataTables_wrapper .table.dataTable th:first-child,.card>.table-responsive-lg .table td:first-child,.card>.table-responsive-lg .table th:first-child,.card>.table-responsive-md .table td:first-child,.card>.table-responsive-md .table th:first-child,.card>.table-responsive-sm .table td:first-child,.card>.table-responsive-sm .table th:first-child,.card>.table-responsive-xl .table td:first-child,.card>.table-responsive-xl .table th:first-child,.card>.table-responsive .table td:first-child,.card>.table-responsive .table th:first-child,.card>.table td:first-child,.card>.table th:first-child{border-left:0;padding-left:1.25rem}.card>.dataTables_wrapper .table.dataTable td:last-child,.card>.dataTables_wrapper .table.dataTable th:last-child,.card>.table-responsive-lg .table td:last-child,.card>.table-responsive-lg .table th:last-child,.card>.table-responsive-md .table td:last-child,.card>.table-responsive-md .table th:last-child,.card>.table-responsive-sm .table td:last-child,.card>.table-responsive-sm .table th:last-child,.card>.table-responsive-xl .table td:last-child,.card>.table-responsive-xl .table th:last-child,.card>.table-responsive .table td:last-child,.card>.table-responsive .table th:last-child,.card>.table td:last-child,.card>.table th:last-child{border-right:0;padding-right:1.25rem}.card>.dataTables_wrapper .table.dataTable tr:first-child td,.card>.dataTables_wrapper .table.dataTable tr:first-child th,.card>.table-responsive-lg .table tr:first-child td,.card>.table-responsive-lg .table tr:first-child th,.card>.table-responsive-md .table tr:first-child td,.card>.table-responsive-md .table tr:first-child th,.card>.table-responsive-sm .table tr:first-child td,.card>.table-responsive-sm .table tr:first-child th,.card>.table-responsive-xl .table tr:first-child td,.card>.table-responsive-xl .table tr:first-child th,.card>.table-responsive .table tr:first-child td,.card>.table-responsive .table tr:first-child th,.card>.table tr:first-child td,.card>.table tr:first-child th{border-top:0}.card>.dataTables_wrapper .table.dataTable tr:last-child td,.card>.table-responsive-lg .table tr:last-child td,.card>.table-responsive-md .table tr:last-child td,.card>.table-responsive-sm .table tr:last-child td,.card>.table-responsive-xl .table tr:last-child td,.card>.table-responsive .table tr:last-child td,.card>.table tr:last-child td{border-bottom:0}.card .card-header+.table{border-top:0}.table-action a{color:#6c757d}.table-action a:hover{color:#212529}.table-action .feather{width:18px;height:18px}.table>tbody>tr>td{vertical-align:middle}.card>.dataTables_wrapper .table.dataTable{margin-top:0!important;margin-bottom:0!important}.card>.dataTables_wrapper .dataTables_info{padding:1rem 1.25rem}.card>.dataTables_wrapper .dataTables_paginate{padding:.6rem 1.25rem}.dt-bootstrap4{width:calc(100% - 2px)}.tab{margin-bottom:2rem}.tab .nav-tabs{border:0}.tab .nav-tabs .nav-link{background:transparent;color:#343a40;padding:.75rem 1rem;border:0}.tab .nav-tabs .nav-link.active{background:#fff;color:#343a40}.tab .nav-tabs .nav-link:hover:not(.active){color:#47bac1}.tab .nav-tabs .nav-link svg{width:20px;height:20px}.tab .tab-content{background:#fff;padding:1.25rem;box-shadow:0 .1rem .2rem rgba(0,0,0,.05);border-radius:0 0 .2rem .2rem}.tab .tab-content p:last-child{margin-bottom:0}.tab-primary .nav-tabs .nav-link.active{background:#47bac1;border-bottom-color:#47bac1;color:#fff}.tab-primary .tab-content{background:#47bac1;color:#fff}.tab-primary .h1,.tab-primary .h2,.tab-primary .h3,.tab-primary .h4,.tab-primary .h5,.tab-primary .h6,.tab-primary h1,.tab-primary h2,.tab-primary h3,.tab-primary h4,.tab-primary h5,.tab-primary h6{color:#fff}.tab-secondary .nav-tabs .nav-link.active{background:#a180da;border-bottom-color:#a180da;color:#fff}.tab-secondary .tab-content{background:#a180da;color:#fff}.tab-secondary .h1,.tab-secondary .h2,.tab-secondary .h3,.tab-secondary .h4,.tab-secondary .h5,.tab-secondary .h6,.tab-secondary h1,.tab-secondary h2,.tab-secondary h3,.tab-secondary h4,.tab-secondary h5,.tab-secondary h6{color:#fff}.tab-success .nav-tabs .nav-link.active{background:#5fc27e;border-bottom-color:#5fc27e;color:#fff}.tab-success .tab-content{background:#5fc27e;color:#fff}.tab-success .h1,.tab-success .h2,.tab-success .h3,.tab-success .h4,.tab-success .h5,.tab-success .h6,.tab-success h1,.tab-success h2,.tab-success h3,.tab-success h4,.tab-success h5,.tab-success h6{color:#fff}.tab-info .nav-tabs .nav-link.active{background:#5b7dff;border-bottom-color:#5b7dff;color:#fff}.tab-info .tab-content{background:#5b7dff;color:#fff}.tab-info .h1,.tab-info .h2,.tab-info .h3,.tab-info .h4,.tab-info .h5,.tab-info .h6,.tab-info h1,.tab-info h2,.tab-info h3,.tab-info h4,.tab-info h5,.tab-info h6{color:#fff}.tab-warning .nav-tabs .nav-link.active{background:#fcc100;border-bottom-color:#fcc100;color:#fff}.tab-warning .tab-content{background:#fcc100;color:#fff}.tab-warning .h1,.tab-warning .h2,.tab-warning .h3,.tab-warning .h4,.tab-warning .h5,.tab-warning .h6,.tab-warning h1,.tab-warning h2,.tab-warning h3,.tab-warning h4,.tab-warning h5,.tab-warning h6{color:#fff}.tab-danger .nav-tabs .nav-link.active{background:#f44455;border-bottom-color:#f44455;color:#fff}.tab-danger .tab-content{background:#f44455;color:#fff}.tab-danger .h1,.tab-danger .h2,.tab-danger .h3,.tab-danger .h4,.tab-danger .h5,.tab-danger .h6,.tab-danger h1,.tab-danger h2,.tab-danger h3,.tab-danger h4,.tab-danger h5,.tab-danger h6{color:#fff}.tab-light .nav-tabs .nav-link.active{background:#f8f9fa;border-bottom-color:#f8f9fa;color:#fff}.tab-light .tab-content{background:#f8f9fa;color:#fff}.tab-light .h1,.tab-light .h2,.tab-light .h3,.tab-light .h4,.tab-light .h5,.tab-light .h6,.tab-light h1,.tab-light h2,.tab-light h3,.tab-light h4,.tab-light h5,.tab-light h6{color:#fff}.tab-dark .nav-tabs .nav-link.active{background:#354052;border-bottom-color:#354052;color:#fff}.tab-dark .tab-content{background:#354052;color:#fff}.tab-dark .h1,.tab-dark .h2,.tab-dark .h3,.tab-dark .h4,.tab-dark .h5,.tab-dark .h6,.tab-dark h1,.tab-dark h2,.tab-dark h3,.tab-dark h4,.tab-dark h5,.tab-dark h6{color:#fff}.tab-tertiary .nav-tabs .nav-link.active{background:#5fc27e;border-bottom-color:#5fc27e;color:#fff}.tab-tertiary .tab-content{background:#5fc27e;color:#fff}.tab-tertiary .h1,.tab-tertiary .h2,.tab-tertiary .h3,.tab-tertiary .h4,.tab-tertiary .h5,.tab-tertiary .h6,.tab-tertiary h1,.tab-tertiary h2,.tab-tertiary h3,.tab-tertiary h4,.tab-tertiary h5,.tab-tertiary h6{color:#fff}.tab-title{font-size:1rem}.tab-vertical .nav-tabs{float:left;-webkit-flex-direction:column;flex-direction:column}.tab-vertical .nav-tabs .nav-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem;border-top-right-radius:0;border-bottom-right-radius:0}.tab-vertical .tab-content{overflow:auto}.timeline{list-style-type:none;position:relative}.timeline:before{background:#dee2e6;left:9px;width:2px;height:100%}.timeline-item:before,.timeline:before{content:" ";display:inline-block;position:absolute;z-index:1}.timeline-item:before{background:#fff;border-radius:50%;border:3px solid #47bac1;left:0;width:20px;height:20px}.text-sm{font-size:.75rem}.text-lg{font-size:1rem}b,strong{font-weight:600}pre.snippet{white-space:pre-wrap;word-wrap:break-word;text-align:justify}a{cursor:pointer}.wrapper{-webkit-align-items:stretch;align-items:stretch;display:-webkit-flex;display:flex;width:100%}.wrapper-boxed{max-width:1440px;margin:0 auto;border-left:1px solid rgba(0,0,0,.1);border-right:1px solid rgba(0,0,0,.1);overflow:hidden}.content{padding:2.5rem}@media (max-width:991.98px){.content{width:100vw;max-width:100vw}}@media (max-width:1199.98px){.content{padding:1.5rem}}.main{width:100%;min-height:100vh;min-width:0;transition:margin-left .4s ease-in-out,left .4s ease-in-out}@media (max-width:991.98px){.main{overflow-y:hidden}}.settings{display:none}@media (min-width:1200px){.settings{display:block}}.settings-toggle{background:#343a40;color:#fff;position:fixed;top:160px;right:0;width:46px;padding:.75rem;border-top-left-radius:.2rem;border-bottom-left-radius:.2rem;box-shadow:-5px 0 10px 0 rgba(0,0,0,.1);transition:all .1s ease-in-out;cursor:pointer}.settings-toggle:hover{width:52px}.settings-toggle svg{width:22px;height:22px;-webkit-animation-name:spin;animation-name:spin;-webkit-animation-duration:4s;animation-duration:4s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-timing-function:linear;animation-timing-function:linear}.settings-panel{background:#fff;border-left:1px solid #e5e9f2;box-shadow:-5px 0 10px 0 rgba(0,0,0,.1);display:block;height:100%;position:fixed;width:240px;z-index:100;top:0;bottom:0;right:-240px;transition:right .2s ease-in-out}.settings.open .settings-panel:before{content:"";background:rgba(0,0,0,.2);position:fixed;left:0;top:0;height:100%;width:100%;z-index:-1;pointer-events:none}.settings.open .settings-panel{right:0}.settings-content{height:100%;overflow:auto;position:relative;background:#fff}.settings-content .ps__thumb-y,.settings-content .simplebar-scrollbar:before{background:rgba(0,0,0,.5)}.settings-title{padding:1.35rem 1.5rem;font-size:.875rem}.settings-title h4{margin-bottom:0}.settings-section{border-top:1px solid #e5e9f2;padding:1rem 1.5rem}.settings-layouts{line-height:2;list-style:none;margin-bottom:0;padding-left:0}.settings-layouts-item .badge{background:#adb5bd;border-radius:10rem;color:#fff;padding:.2rem .35rem}.settings-layouts-item,.settings-layouts-item:hover{color:#495057;text-decoration:none;cursor:pointer}.settings-layouts-item:hover .badge{background:#6c757d}.settings-theme{display:block;margin-bottom:1rem;text-align:center;text-decoration:none;cursor:pointer}.settings-theme:last-child{margin-bottom:0}.settings-theme:hover{text-decoration:none}.settings-theme img{border-radius:.2rem;border:1px solid #ced4da;-webkit-transform:scale(1);transform:scale(1);transition:all .1s ease-in-out}.settings-theme:hover img{-webkit-transform:scale(1.03);transform:scale(1.03)}html[data-useragent*="MSIE 10.0"] .main{width:calc(100% - 250px)}html[data-useragent*="MSIE 10.0"] .sidebar-toggle{display:none!important}html[data-useragent*="MSIE 10.0"] .sidebar{width:250px!important;min-width:250px!important;margin-left:0!important}html[data-useragent*="MSIE 10.0"] .toggled.sidebar-collapsed{margin-left:0!important}.rounded-lg{border-radius:.3rem!important}.rounded-top-lg{border-top-left-radius:.3rem!important}.rounded-right-lg,.rounded-top-lg{border-top-right-radius:.3rem!important}.rounded-bottom-lg,.rounded-right-lg{border-bottom-right-radius:.3rem!important}.rounded-bottom-lg,.rounded-left-lg{border-bottom-left-radius:.3rem!important}.rounded-left-lg{border-top-left-radius:.3rem!important}.rounded-sm{border-radius:.1rem!important}.rounded-top-sm{border-top-left-radius:.1rem!important}.rounded-right-sm,.rounded-top-sm{border-top-right-radius:.1rem!important}.rounded-bottom-sm,.rounded-right-sm{border-bottom-right-radius:.1rem!important}.rounded-bottom-sm,.rounded-left-sm{border-bottom-left-radius:.1rem!important}.rounded-left-sm{border-top-left-radius:.1rem!important}.cursor-grab{cursor:move;cursor:grab;cursor:-webkit-grab}.cursor-pointer{cursor:pointer}.overflow-scroll{overflow:scroll}.overflow-hidden{overflow:hidden}.overflow-auto{overflow:auto}.overflow-visible{overflow:visible}.apexcharts-canvas{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.apexcharts-canvas ::-webkit-scrollbar{-webkit-appearance:none;width:6px}.apexcharts-canvas ::-webkit-scrollbar-thumb{border-radius:4px;background-color:rgba(0,0,0,.5);box-shadow:0 0 1px hsla(0,0%,100%,.5);-webkit-box-shadow:0 0 1px hsla(0,0%,100%,.5)}.apexcharts-inner{position:relative}.legend-mouseover-inactive{transition:all .15s ease;opacity:.2}.apexcharts-series-collapsed{opacity:0}.apexcharts-gridline,.apexcharts-text{pointer-events:none}.apexcharts-tooltip{border-radius:5px;box-shadow:2px 2px 6px -4px #999;cursor:default;font-size:14px;left:62px;opacity:0;pointer-events:none;position:absolute;top:20px;overflow:hidden;white-space:nowrap;z-index:12;transition:all .15s ease}.apexcharts-tooltip.light{border:1px solid #e3e3e3;background:hsla(0,0%,100%,.96)}.apexcharts-tooltip.dark{color:#fff;background:rgba(30,30,30,.8)}.apexcharts-area-series .apexcharts-area,.apexcharts-line,.apexcharts-tooltip .apexcharts-marker{pointer-events:none}.apexcharts-tooltip.active{opacity:1;transition:all .15s ease}.apexcharts-tooltip-title{padding:6px;font-size:15px;margin-bottom:4px}.apexcharts-tooltip.light .apexcharts-tooltip-title{background:#eceff1;border-bottom:1px solid #ddd}.apexcharts-tooltip.dark .apexcharts-tooltip-title{background:rgba(0,0,0,.7);border-bottom:1px solid #222}.apexcharts-tooltip-text-value,.apexcharts-tooltip-text-z-value{display:inline-block;margin-left:5px}.apexcharts-tooltip-text-z-label:empty,.apexcharts-tooltip-text-z-value:empty{display:none}.apexcharts-tooltip-text-value,.apexcharts-tooltip-text-z-value{font-weight:600}.apexcharts-tooltip-marker{width:12px;height:12px;position:relative;top:1px;margin-right:10px;border-radius:50%}.apexcharts-tooltip-series-group{padding:0 10px;display:none;text-align:left;-webkit-justify-content:left;justify-content:left;-webkit-align-items:center;align-items:center}.apexcharts-tooltip-series-group.active .apexcharts-tooltip-marker{opacity:1}.apexcharts-tooltip-series-group.active,.apexcharts-tooltip-series-group:last-child{padding-bottom:4px}.apexcharts-tooltip-y-group{padding:6px 0 5px}.apexcharts-tooltip-candlestick{padding:4px 8px}.apexcharts-tooltip-candlestick>div{margin:4px 0}.apexcharts-tooltip-candlestick span.value{font-weight:700}.apexcharts-xaxistooltip{opacity:0;padding:9px 10px;pointer-events:none;color:#373d3f;font-size:13px;text-align:center;border-radius:2px;position:absolute;z-index:10;background:#eceff1;border:1px solid #90a4ae;transition:all .15s ease}.apexcharts-xaxistooltip:after,.apexcharts-xaxistooltip:before{left:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}.apexcharts-xaxistooltip:after{border-color:rgba(236,239,241,0);border-width:6px;margin-left:-6px}.apexcharts-xaxistooltip:before{border-color:rgba(144,164,174,0);border-width:7px;margin-left:-7px}.apexcharts-xaxistooltip-bottom:after,.apexcharts-xaxistooltip-bottom:before{bottom:100%}.apexcharts-xaxistooltip-bottom:after{border-bottom-color:#eceff1}.apexcharts-xaxistooltip-bottom:before{border-bottom-color:#90a4ae}.apexcharts-xaxistooltip-top:after,.apexcharts-xaxistooltip-top:before{top:100%}.apexcharts-xaxistooltip-top:after{border-top-color:#eceff1}.apexcharts-xaxistooltip-top:before{border-top-color:#90a4ae}.apexcharts-xaxistooltip.active{opacity:1;transition:all .15s ease}.apexcharts-yaxistooltip{opacity:0;padding:4px 10px;pointer-events:none;color:#373d3f;font-size:13px;text-align:center;border-radius:2px;position:absolute;z-index:10;background:#eceff1;border:1px solid #90a4ae}.apexcharts-yaxistooltip:after,.apexcharts-yaxistooltip:before{top:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}.apexcharts-yaxistooltip:after{border-color:rgba(236,239,241,0);border-width:6px;margin-top:-6px}.apexcharts-yaxistooltip:before{border-color:rgba(144,164,174,0);border-width:7px;margin-top:-7px}.apexcharts-yaxistooltip-left:after,.apexcharts-yaxistooltip-left:before{left:100%}.apexcharts-yaxistooltip-left:after{border-left-color:#eceff1}.apexcharts-yaxistooltip-left:before{border-left-color:#90a4ae}.apexcharts-yaxistooltip-right:after,.apexcharts-yaxistooltip-right:before{right:100%}.apexcharts-yaxistooltip-right:after{border-right-color:#eceff1}.apexcharts-yaxistooltip-right:before{border-right-color:#90a4ae}.apexcharts-yaxistooltip.active{opacity:1}.apexcharts-xcrosshairs,.apexcharts-ycrosshairs{pointer-events:none;opacity:0;transition:all .15s ease}.apexcharts-xcrosshairs.active,.apexcharts-ycrosshairs.active{opacity:1;transition:all .15s ease}.apexcharts-ycrosshairs-hidden{opacity:0}.apexcharts-zoom-rect{pointer-events:none}.apexcharts-selection-rect{cursor:move}.svg_select_points,.svg_select_points_rot{opacity:0;visibility:hidden}.svg_select_points_l,.svg_select_points_r{cursor:ew-resize;opacity:1;visibility:visible;fill:#888}.apexcharts-canvas.zoomable .hovering-zoom{cursor:crosshair}.apexcharts-canvas.zoomable .hovering-pan{cursor:move}.apexcharts-xaxis,.apexcharts-yaxis{pointer-events:none}.apexcharts-menu-icon,.apexcharts-pan-icon,.apexcharts-reset-zoom-icon,.apexcharts-selection-icon,.apexcharts-zoom-icon,.apexcharts-zoom-in-icon,.apexcharts-zoom-out-icon{cursor:pointer;width:20px;height:20px;text-align:center}.apexcharts-menu-icon svg,.apexcharts-reset-zoom-icon svg,.apexcharts-zoom-icon svg,.apexcharts-zoom-in-icon svg,.apexcharts-zoom-out-icon svg{fill:#6e8192}.apexcharts-selection-icon svg{fill:#444;-webkit-transform:scale(.86);transform:scale(.86)}.apexcharts-reset-zoom-icon.selected svg,.apexcharts-selection-icon.selected svg,.apexcharts-zoom-icon.selected svg{fill:#008ffb}.apexcharts-menu-icon:hover svg,.apexcharts-reset-zoom-icon:hover svg,.apexcharts-selection-icon:not(.selected):hover svg,.apexcharts-zoom-icon:not(.selected):hover svg,.apexcharts-zoom-in-icon:hover svg,.apexcharts-zoom-out-icon:hover svg{fill:#333}.apexcharts-menu-icon,.apexcharts-selection-icon{margin-right:3px;margin-left:5px;position:relative;top:1px}.apexcharts-reset-zoom-icon{margin-left:7px}.apexcharts-zoom-icon{-webkit-transform:scale(1);transform:scale(1)}.apexcharts-zoom-in-icon,.apexcharts-zoom-out-icon{-webkit-transform:scale(.8);transform:scale(.8)}.apexcharts-zoom-out-icon{margin-right:3px}.apexcharts-pan-icon{-webkit-transform:scale(.72);transform:scale(.72);position:relative;left:1px;top:0}.apexcharts-pan-icon svg{fill:#fff;stroke:#6e8192;stroke-width:2}.apexcharts-pan-icon.selected svg{stroke:#008ffb}.apexcharts-pan-icon:not(.selected):hover svg{stroke:#333}.apexcharts-toolbar{position:absolute;z-index:11;top:0;right:3px;max-width:176px;text-align:right;border-radius:3px;padding:5px 6px 2px;display:-webkit-flex;display:flex;-webkit-justify-content:space-between;justify-content:space-between;-webkit-align-items:center;align-items:center}.apexcharts-menu,.apexcharts-toolbar svg{pointer-events:none}.apexcharts-menu{background:#fff;position:absolute;top:100%;border:1px solid #ddd;border-radius:3px;padding:3px;right:10px;opacity:0;min-width:110px;transition:all .15s ease}.apexcharts-menu.open{opacity:1;pointer-events:all;transition:all .15s ease}.apexcharts-menu-item{padding:6px 7px;font-size:12px;cursor:pointer}.apexcharts-menu-item:hover{background:#eee}@media screen and (min-width:768px){.apexcharts-canvas:hover .apexcharts-toolbar{opacity:1}}.apexcharts-datalabel.hidden{opacity:0}.apexcharts-datalabel,.apexcharts-datalabel-label,.apexcharts-datalabel-value,.apexcharts-pie-label{cursor:default;pointer-events:none}.apexcharts-pie-label-delay{opacity:0;-webkit-animation-name:opaque;animation-name:opaque;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:ease;animation-timing-function:ease}.apexcharts-canvas .hidden,.apexcharts-hide .apexcharts-series-points{opacity:0}.apexcharts-area-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,.apexcharts-line-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events{pointer-events:none}.apexcharts-marker{transition:all .15s ease}@-webkit-keyframes opaque{0%{opacity:0}to{opacity:1}}@keyframes opaque{0%{opacity:0}to{opacity:1}}.daterangepicker{position:absolute;color:inherit;background-color:#fff;border-radius:4px;border:1px solid #ddd;width:278px;max-width:none;padding:0;margin-top:7px;top:100px;left:20px;z-index:3001;display:none;font-family:arial;font-size:15px;line-height:1em}.daterangepicker:after,.daterangepicker:before{position:absolute;display:inline-block;border-bottom-color:rgba(0,0,0,.2);content:""}.daterangepicker:before{top:-7px;border-right:7px solid transparent;border-left:7px solid transparent;border-bottom:7px solid #ccc}.daterangepicker:after{top:-6px;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent}.daterangepicker.opensleft:before{right:9px}.daterangepicker.opensleft:after{right:10px}.daterangepicker.openscenter:after,.daterangepicker.openscenter:before{left:0;right:0;width:0;margin-left:auto;margin-right:auto}.daterangepicker.opensright:before{left:9px}.daterangepicker.opensright:after{left:10px}.daterangepicker.drop-up{margin-top:-7px}.daterangepicker.drop-up:before{top:auto;bottom:-7px;border-bottom:initial;border-top:7px solid #ccc}.daterangepicker.drop-up:after{top:auto;bottom:-6px;border-bottom:initial;border-top:6px solid #fff}.daterangepicker.single .daterangepicker .ranges,.daterangepicker.single .drp-calendar{float:none}.daterangepicker.single .drp-selected{display:none}.daterangepicker.show-calendar .drp-buttons,.daterangepicker.show-calendar .drp-calendar{display:block}.daterangepicker.auto-apply .drp-buttons{display:none}.daterangepicker .drp-calendar{display:none;max-width:270px}.daterangepicker .drp-calendar.left{padding:8px 0 8px 8px}.daterangepicker .drp-calendar.right{padding:8px}.daterangepicker .drp-calendar.single .calendar-table{border:none}.daterangepicker .calendar-table .next span,.daterangepicker .calendar-table .prev span{color:#fff;border:solid #000;border-width:0 2px 2px 0;border-radius:0;display:inline-block;padding:3px}.daterangepicker .calendar-table .next span{transform:rotate(-45deg);-webkit-transform:rotate(-45deg)}.daterangepicker .calendar-table .prev span{transform:rotate(135deg);-webkit-transform:rotate(135deg)}.daterangepicker .calendar-table td,.daterangepicker .calendar-table th{text-align:center;vertical-align:middle;min-width:32px;width:32px;height:24px;line-height:24px;font-size:12px;border-radius:4px;border:1px solid transparent;white-space:nowrap;cursor:pointer}.daterangepicker .calendar-table{border:1px solid #fff;border-radius:4px;background-color:#fff}.daterangepicker .calendar-table table{width:100%;margin:0;border-spacing:0;border-collapse:collapse}.daterangepicker td.available:hover,.daterangepicker th.available:hover{background-color:#eee;border-color:transparent;color:inherit}.daterangepicker td.week,.daterangepicker th.week{font-size:80%;color:#ccc}.daterangepicker td.off,.daterangepicker td.off.end-date,.daterangepicker td.off.in-range,.daterangepicker td.off.start-date{background-color:#fff;border-color:transparent;color:#999}.daterangepicker td.in-range{background-color:#ebf4f8;border-color:transparent;color:#000;border-radius:0}.daterangepicker td.start-date{border-radius:4px 0 0 4px}.daterangepicker td.end-date{border-radius:0 4px 4px 0}.daterangepicker td.start-date.end-date{border-radius:4px}.daterangepicker td.active,.daterangepicker td.active:hover{background-color:#357ebd;border-color:transparent;color:#fff}.daterangepicker th.month{width:auto}.daterangepicker option.disabled,.daterangepicker td.disabled{color:#999;cursor:not-allowed;text-decoration:line-through}.daterangepicker select.monthselect,.daterangepicker select.yearselect{font-size:12px;padding:1px;height:auto;margin:0;cursor:default}.daterangepicker select.monthselect{margin-right:2%;width:56%}.daterangepicker select.yearselect{width:40%}.daterangepicker select.ampmselect,.daterangepicker select.hourselect,.daterangepicker select.minuteselect,.daterangepicker select.secondselect{width:50px;margin:0 auto;background:#eee;border:1px solid #eee;padding:2px;outline:0;font-size:12px}.daterangepicker .calendar-time{text-align:center;margin:4px auto 0;line-height:30px;position:relative}.daterangepicker .calendar-time select.disabled{color:#ccc;cursor:not-allowed}.daterangepicker .drp-buttons{clear:both;text-align:right;padding:8px;border-top:1px solid #ddd;display:none;line-height:12px;vertical-align:middle}.daterangepicker .drp-selected{display:inline-block;font-size:12px;padding-right:8px}.daterangepicker .drp-buttons .btn,.daterangepicker .drp-buttons .fc-unthemed .fc-button,.fc-unthemed .daterangepicker .drp-buttons .fc-button{margin-left:8px;font-size:12px;font-weight:700;padding:4px 8px}.daterangepicker.show-ranges .drp-calendar.left{border-left:1px solid #ddd}.daterangepicker .ranges{float:none;text-align:left;margin:0}.daterangepicker.show-calendar .ranges{margin-top:8px}.daterangepicker .ranges ul{list-style:none;margin:0 auto;padding:0;width:100%}.daterangepicker .ranges li{font-size:12px;padding:8px 12px;cursor:pointer}.daterangepicker .ranges li:hover{background-color:#eee}.daterangepicker .ranges li.active{background-color:#08c;color:#fff}@media (min-width:564px){.daterangepicker{width:auto}.daterangepicker .ranges ul{width:140px}.daterangepicker.single .ranges ul{width:100%}.daterangepicker.single .drp-calendar.left{clear:none}.daterangepicker.single.ltr .drp-calendar,.daterangepicker.single.ltr .ranges{float:left}.daterangepicker.single.rtl .drp-calendar,.daterangepicker.single.rtl .ranges{float:right}.daterangepicker.ltr{direction:ltr;text-align:left}.daterangepicker.ltr .drp-calendar.left{clear:left;margin-right:0}.daterangepicker.ltr .drp-calendar.left .calendar-table{border-right:none;border-top-right-radius:0;border-bottom-right-radius:0}.daterangepicker.ltr .drp-calendar.right{margin-left:0}.daterangepicker.ltr .drp-calendar.right .calendar-table{border-left:none;border-top-left-radius:0;border-bottom-left-radius:0}.daterangepicker.ltr .drp-calendar.left .calendar-table{padding-right:8px}.daterangepicker.ltr .drp-calendar,.daterangepicker.ltr .ranges{float:left}.daterangepicker.rtl{direction:rtl;text-align:right}.daterangepicker.rtl .drp-calendar.left{clear:right;margin-left:0}.daterangepicker.rtl .drp-calendar.left .calendar-table{border-left:none;border-top-left-radius:0;border-bottom-left-radius:0}.daterangepicker.rtl .drp-calendar.right{margin-right:0}.daterangepicker.rtl .drp-calendar.right .calendar-table{border-right:none;border-top-right-radius:0;border-bottom-right-radius:0}.daterangepicker.rtl .drp-calendar.left .calendar-table{padding-left:12px}.daterangepicker.rtl .drp-calendar,.daterangepicker.rtl .ranges{text-align:right;float:right}}@media (min-width:730px){.daterangepicker .ranges{width:auto}.daterangepicker.ltr .ranges{float:left}.daterangepicker.rtl .ranges{float:right}.daterangepicker .drp-calendar.left{clear:none!important}}.md-editor{display:block;border:1px solid #ddd}.md-editor .md-footer,.md-editor>.md-header{display:block;padding:6px 4px;background:#f5f5f5}.md-editor>.md-header{margin:0}.md-editor>.md-preview{background:#fff;border-top:1px dashed #ddd;border-bottom:1px dashed #ddd;min-height:10px;overflow:auto}.md-editor>textarea{font-family:Menlo,Monaco,Consolas,Courier New,monospace;font-size:14px;outline:0;margin:0;display:block;padding:0;width:100%;border:0;border-top:1px dashed #ddd;border-bottom:1px dashed #ddd;border-radius:0;box-shadow:none;background:#eee}.md-editor>textarea:focus{box-shadow:none;background:#fff}.md-editor.active{border-color:#66afe9;outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.md-editor .md-controls{float:right;padding:3px}.md-editor .md-controls .md-control{right:5px;color:#bebebe;padding:3px 3px 3px 10px}.md-editor .md-controls .md-control:hover{color:#333}.md-editor.md-fullscreen-mode{width:100%;height:100%;position:fixed;top:0;left:0;z-index:99999;padding:60px 30px 15px;background:#fff!important;border:0!important}.md-editor.md-fullscreen-mode .md-footer{display:none}.md-editor.md-fullscreen-mode .md-input,.md-editor.md-fullscreen-mode .md-preview{margin:0 auto!important;height:100%!important;font-size:20px!important;padding:20px!important;color:#999;line-height:1.6em!important;resize:none!important;box-shadow:none!important;background:#fff!important;border:0!important}.md-editor.md-fullscreen-mode .md-preview{color:#333;overflow:auto}.md-editor.md-fullscreen-mode .md-input:focus,.md-editor.md-fullscreen-mode .md-input:hover{color:#333;background:#fff!important}.md-editor.md-fullscreen-mode .md-header{background:0 0;text-align:center;position:fixed;width:100%;top:20px}.fc-unthemed .md-editor.md-fullscreen-mode .fc-button-group,.md-editor.md-fullscreen-mode .btn-group,.md-editor.md-fullscreen-mode .fc-unthemed .fc-button-group{float:none}.fc-unthemed .md-editor.md-fullscreen-mode .fc-button,.md-editor.md-fullscreen-mode .btn,.md-editor.md-fullscreen-mode .fc-unthemed .fc-button{border:0;background:0 0;color:#b3b3b3}.fc-unthemed .md-editor.md-fullscreen-mode .active.fc-button,.fc-unthemed .md-editor.md-fullscreen-mode .fc-button:active,.fc-unthemed .md-editor.md-fullscreen-mode .fc-button:focus,.fc-unthemed .md-editor.md-fullscreen-mode .fc-button:hover,.md-editor.md-fullscreen-mode .btn.active,.md-editor.md-fullscreen-mode .btn:active,.md-editor.md-fullscreen-mode .btn:focus,.md-editor.md-fullscreen-mode .btn:hover,.md-editor.md-fullscreen-mode .fc-unthemed .active.fc-button,.md-editor.md-fullscreen-mode .fc-unthemed .fc-button:active,.md-editor.md-fullscreen-mode .fc-unthemed .fc-button:focus,.md-editor.md-fullscreen-mode .fc-unthemed .fc-button:hover{box-shadow:none;color:#333}.md-editor.md-fullscreen-mode .md-fullscreen-controls{position:absolute;top:20px;right:20px;text-align:right;z-index:1002;display:block}.md-editor.md-fullscreen-mode .md-fullscreen-controls a{color:#b3b3b3;clear:right;margin:10px;width:30px;height:30px;text-align:center}.md-editor.md-fullscreen-mode .md-fullscreen-controls a:hover{color:#333;text-decoration:none}.md-editor.md-fullscreen-mode .md-editor{height:100%!important;position:relative}.md-editor .md-fullscreen-controls{display:none}.md-nooverflow{overflow:hidden;position:fixed;width:100%}table.dataTable{clear:both;margin-top:6px!important;margin-bottom:6px!important;max-width:none!important;border-collapse:separate!important;border-spacing:0}table.dataTable td,table.dataTable th{box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap td,table.dataTable.nowrap th{white-space:nowrap}div.dataTables_wrapper div.dataTables_length label{font-weight:400;text-align:left;white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{width:auto;display:inline-block}div.dataTables_wrapper div.dataTables_filter{text-align:right}div.dataTables_wrapper div.dataTables_filter label{font-weight:400;white-space:nowrap;text-align:left}div.dataTables_wrapper div.dataTables_filter input{margin-left:.5em;display:inline-block;width:auto}div.dataTables_wrapper div.dataTables_info{padding-top:.85em;white-space:nowrap}div.dataTables_wrapper div.dataTables_paginate{margin:0;white-space:nowrap;text-align:right}div.dataTables_wrapper div.dataTables_paginate ul.pagination{margin:2px 0;white-space:nowrap;-webkit-justify-content:flex-end;justify-content:flex-end}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1em 0}table.dataTable thead>tr>td.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc{padding-right:30px}table.dataTable thead>tr>td:active,table.dataTable thead>tr>th:active{outline:none}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_desc_disabled{cursor:pointer;position:relative}table.dataTable thead .sorting:after,table.dataTable thead .sorting:before,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_desc:before,table.dataTable thead .sorting_desc_disabled:after,table.dataTable thead .sorting_desc_disabled:before{position:absolute;bottom:.9em;display:block;opacity:.3}table.dataTable thead .sorting:before,table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_desc:before,table.dataTable thead .sorting_desc_disabled:before{right:1em;content:"\2191"}table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_desc_disabled:after{right:.5em;content:"\2193"}table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_desc:after{opacity:1}table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_desc_disabled:after{opacity:0}div.dataTables_scrollHead table.dataTable{margin-bottom:0!important}div.dataTables_scrollBody table{border-top:none;margin-top:0!important;margin-bottom:0!important}div.dataTables_scrollBody table thead .sorting:after,div.dataTables_scrollBody table thead .sorting:before,div.dataTables_scrollBody table thead .sorting_asc:after,div.dataTables_scrollBody table thead .sorting_asc:before,div.dataTables_scrollBody table thead .sorting_desc:after,div.dataTables_scrollBody table thead .sorting_desc:before{display:none}div.dataTables_scrollBody table tbody tr:first-child td,div.dataTables_scrollBody table tbody tr:first-child th{border-top:none}div.dataTables_scrollFoot>.dataTables_scrollFootInner{box-sizing:content-box}div.dataTables_scrollFoot>.dataTables_scrollFootInner>table{margin-top:0!important;border-top:none}@media screen and (max-width:767px){div.dataTables_wrapper div.dataTables_filter,div.dataTables_wrapper div.dataTables_info,div.dataTables_wrapper div.dataTables_length,div.dataTables_wrapper div.dataTables_paginate{text-align:center}}table.dataTable.table-sm>thead>tr>th{padding-right:20px}table.dataTable.table-sm .sorting:before,table.dataTable.table-sm .sorting_asc:before,table.dataTable.table-sm .sorting_desc:before{top:5px;right:.85em}table.dataTable.table-sm .sorting:after,table.dataTable.table-sm .sorting_asc:after,table.dataTable.table-sm .sorting_desc:after{top:5px}table.table-bordered.dataTable td,table.table-bordered.dataTable th{border-left-width:0}table.table-bordered.dataTable td:last-child,table.table-bordered.dataTable th:last-child{border-right-width:0}div.dataTables_scrollHead table.table-bordered,table.table-bordered.dataTable tbody td,table.table-bordered.dataTable tbody th{border-bottom-width:0}div.table-responsive>div.dataTables_wrapper>div.row{margin:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^=col-]:first-child{padding-left:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^=col-]:last-child{padding-right:0}@keyframes dtb-spinner{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes dtb-spinner{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}div.dt-button-info{position:fixed;top:50%;left:50%;width:400px;margin-top:-100px;margin-left:-200px;background-color:#fff;border:2px solid #111;box-shadow:3px 3px 8px rgba(0,0,0,.3);border-radius:3px;text-align:center;z-index:21}div.dt-button-info h2{padding:.5em;margin:0;font-weight:400;border-bottom:1px solid #ddd;background-color:#f3f3f3}div.dt-button-info>div{padding:1em}div.dt-button-collection-title{text-align:center;padding:.3em 0 .5em;font-size:.9em}div.dt-button-collection-title:empty{display:none}div.dt-button-collection.dropdown-menu{display:block;z-index:2002;-webkit-column-gap:8px;-ms-column-gap:8px;-o-column-gap:8px;column-gap:8px}div.dt-button-collection.dropdown-menu.fixed{position:fixed;top:50%;left:50%;margin-left:-75px;border-radius:0}div.dt-button-collection.dropdown-menu.fixed.two-column{margin-left:-150px}div.dt-button-collection.dropdown-menu.fixed.three-column{margin-left:-225px}div.dt-button-collection.dropdown-menu.fixed.four-column{margin-left:-300px}div.dt-button-collection.dropdown-menu>*{-webkit-column-break-inside:avoid;break-inside:avoid}div.dt-button-collection.dropdown-menu.two-column{width:300px;padding-bottom:1px;-webkit-column-count:2;-ms-column-count:2;-o-column-count:2;column-count:2}div.dt-button-collection.dropdown-menu.three-column{width:450px;padding-bottom:1px;-webkit-column-count:3;-ms-column-count:3;-o-column-count:3;column-count:3}div.dt-button-collection.dropdown-menu.four-column{width:600px;padding-bottom:1px;-webkit-column-count:4;-ms-column-count:4;-o-column-count:4;column-count:4}div.dt-button-collection.dropdown-menu .dt-button{border-radius:0}div.dt-button-collection{-webkit-column-gap:8px;-ms-column-gap:8px;-o-column-gap:8px;column-gap:8px}div.dt-button-collection.fixed{position:fixed;top:50%;left:50%;margin-left:-75px;border-radius:0}div.dt-button-collection.fixed.two-column{margin-left:-150px}div.dt-button-collection.fixed.three-column{margin-left:-225px}div.dt-button-collection.fixed.four-column{margin-left:-300px}div.dt-button-collection>*{-webkit-column-break-inside:avoid;break-inside:avoid}div.dt-button-collection.two-column{width:300px;padding-bottom:1px;-webkit-column-count:2;-ms-column-count:2;-o-column-count:2;column-count:2}div.dt-button-collection.three-column{width:450px;padding-bottom:1px;-webkit-column-count:3;-ms-column-count:3;-o-column-count:3;column-count:3}div.dt-button-collection.four-column{width:600px;padding-bottom:1px;-webkit-column-count:4;-ms-column-count:4;-o-column-count:4;column-count:4}div.dt-button-collection .dt-button{border-radius:0}div.dt-button-collection.fixed{max-width:none}div.dt-button-collection.fixed:after,div.dt-button-collection.fixed:before{display:none}div.dt-button-background{position:fixed;top:0;left:0;width:100%;height:100%;z-index:999}@media screen and (max-width:767px){div.dt-buttons{float:none;width:100%;text-align:center;margin-bottom:.5em}.fc-unthemed div.dt-buttons a.fc-button,div.dt-buttons .fc-unthemed a.fc-button,div.dt-buttons a.btn{float:none}}.fc-unthemed div.dt-buttons a.processing.fc-button,.fc-unthemed div.dt-buttons button.processing.fc-button,.fc-unthemed div.dt-buttons div.processing.fc-button,div.dt-buttons .fc-unthemed a.processing.fc-button,div.dt-buttons .fc-unthemed button.processing.fc-button,div.dt-buttons .fc-unthemed div.processing.fc-button,div.dt-buttons a.btn.processing,div.dt-buttons button.btn.processing,div.dt-buttons div.btn.processing{color:rgba(0,0,0,.2)}.fc-unthemed div.dt-buttons a.processing.fc-button:after,.fc-unthemed div.dt-buttons button.processing.fc-button:after,.fc-unthemed div.dt-buttons div.processing.fc-button:after,div.dt-buttons .fc-unthemed a.processing.fc-button:after,div.dt-buttons .fc-unthemed button.processing.fc-button:after,div.dt-buttons .fc-unthemed div.processing.fc-button:after,div.dt-buttons a.btn.processing:after,div.dt-buttons button.btn.processing:after,div.dt-buttons div.btn.processing:after{position:absolute;top:50%;left:50%;width:16px;height:16px;margin:-8px 0 0 -8px;box-sizing:border-box;display:block;content:" ";border-radius:50%;border-color:#282828 transparent;border-style:solid;border-width:2px;animation:dtb-spinner 1.5s linear infinite;-o-animation:dtb-spinner 1.5s infinite linear;-ms-animation:dtb-spinner 1.5s infinite linear;-webkit-animation:dtb-spinner 1.5s linear infinite;-moz-animation:dtb-spinner 1.5s infinite linear}table.dataTable.dtr-inline.collapsed>tbody>tr>td.child,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child{cursor:default!important}table.dataTable.dtr-inline.collapsed>tbody>tr>td.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty:before,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child:before{display:none!important}table.dataTable.dtr-inline.collapsed>tbody>tr[role=row]>td:first-child,table.dataTable.dtr-inline.collapsed>tbody>tr[role=row]>th:first-child{position:relative;padding-left:30px;cursor:pointer}table.dataTable.dtr-inline.collapsed>tbody>tr[role=row]>td:first-child:before,table.dataTable.dtr-inline.collapsed>tbody>tr[role=row]>th:first-child:before{top:12px;left:4px;height:14px;width:14px;display:block;position:absolute;color:#fff;border:2px solid #fff;border-radius:14px;box-shadow:0 0 3px #444;box-sizing:content-box;text-align:center;text-indent:0!important;font-family:Courier New,Courier,monospace;line-height:14px;content:"+";background-color:#0275d8}table.dataTable.dtr-inline.collapsed>tbody>tr.parent>td:first-child:before,table.dataTable.dtr-inline.collapsed>tbody>tr.parent>th:first-child:before{content:"-";background-color:#d33333}table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td:first-child,table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th:first-child{padding-left:27px}table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td:first-child:before,table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th:first-child:before{top:5px;left:4px;height:14px;width:14px;border-radius:14px;line-height:14px;text-indent:3px}table.dataTable.dtr-column>tbody>tr>td.control,table.dataTable.dtr-column>tbody>tr>th.control{position:relative;cursor:pointer}table.dataTable.dtr-column>tbody>tr>td.control:before,table.dataTable.dtr-column>tbody>tr>th.control:before{top:50%;left:50%;height:16px;width:16px;margin-top:-10px;margin-left:-10px;display:block;position:absolute;color:#fff;border:2px solid #fff;border-radius:14px;box-shadow:0 0 3px #444;box-sizing:content-box;text-align:center;text-indent:0!important;font-family:Courier New,Courier,monospace;line-height:14px;content:"+";background-color:#0275d8}table.dataTable.dtr-column>tbody>tr.parent td.control:before,table.dataTable.dtr-column>tbody>tr.parent th.control:before{content:"-";background-color:#d33333}table.dataTable>tbody>tr.child{padding:.5em 1em}table.dataTable>tbody>tr.child:hover{background:transparent!important}table.dataTable>tbody>tr.child ul.dtr-details{display:inline-block;list-style-type:none;margin:0;padding:0}table.dataTable>tbody>tr.child ul.dtr-details>li{border-bottom:1px solid #efefef;padding:.5em 0}table.dataTable>tbody>tr.child ul.dtr-details>li:first-child{padding-top:0}table.dataTable>tbody>tr.child ul.dtr-details>li:last-child{border-bottom:none}table.dataTable>tbody>tr.child span.dtr-title{display:inline-block;min-width:75px;font-weight:700}div.dtr-modal{position:fixed;box-sizing:border-box;top:0;left:0;height:100%;width:100%;z-index:100;padding:10em 1em}div.dtr-modal div.dtr-modal-display{position:absolute;top:0;left:0;bottom:0;right:0;width:50%;height:50%;margin:auto;z-index:102;overflow:auto;background-color:#f5f5f7;border:1px solid #000;border-radius:.5em;box-shadow:0 12px 30px rgba(0,0,0,.6)}div.dtr-modal div.dtr-modal-content{position:relative;padding:1em}div.dtr-modal div.dtr-modal-close{position:absolute;top:6px;right:6px;width:22px;height:22px;border:1px solid #eaeaea;background-color:#f9f9f9;text-align:center;border-radius:3px;cursor:pointer;z-index:12}div.dtr-modal div.dtr-modal-close:hover{background-color:#eaeaea}div.dtr-modal div.dtr-modal-background{position:fixed;top:0;left:0;right:0;bottom:0;z-index:101;background:rgba(0,0,0,.6)}@media screen and (max-width:767px){div.dtr-modal div.dtr-modal-display{width:95%}}div.dtr-bs-modal table.table tr:first-child td{border-top:none}.gu-mirror{position:fixed!important;margin:0!important;z-index:9999!important;opacity:.8;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=80)";filter:alpha(opacity=80)}.gu-hide{display:none!important}.gu-unselectable{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.gu-transit{opacity:.2;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=20)";filter:alpha(opacity=20)}svg{touch-action:none}.jvectormap-container{width:100%;height:100%;position:relative;overflow:hidden;touch-action:none}.jvectormap-tip{position:absolute;display:none;border:1px solid #cdcdcd;border-radius:3px;background:#292929;color:#fff;font-family:sans-serif,Verdana;font-size:smaller;padding:3px}.jvectormap-goback,.jvectormap-zoomin,.jvectormap-zoomout{position:absolute;left:10px;border-radius:3px;background:#292929;padding:3px;color:#fff;cursor:pointer;line-height:10px;text-align:center;box-sizing:content-box}.jvectormap-zoomin,.jvectormap-zoomout{width:10px;height:10px}.jvectormap-zoomin{top:10px}.jvectormap-zoomout{top:30px}.jvectormap-goback{bottom:10px;z-index:1000;padding:6px}.jvectormap-spinner{position:absolute;left:0;top:0;right:0;bottom:0;background:50% no-repeat url(data:image/gif;base64,R0lGODlhIAAgAPMAAP///wAAAMbGxoSEhLa2tpqamjY2NlZWVtjY2OTk5Ly8vB4eHgQEBAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAIAAgAAAE5xDISWlhperN52JLhSSdRgwVo1ICQZRUsiwHpTJT4iowNS8vyW2icCF6k8HMMBkCEDskxTBDAZwuAkkqIfxIQyhBQBFvAQSDITM5VDW6XNE4KagNh6Bgwe60smQUB3d4Rz1ZBApnFASDd0hihh12BkE9kjAJVlycXIg7CQIFA6SlnJ87paqbSKiKoqusnbMdmDC2tXQlkUhziYtyWTxIfy6BE8WJt5YJvpJivxNaGmLHT0VnOgSYf0dZXS7APdpB309RnHOG5gDqXGLDaC457D1zZ/V/nmOM82XiHRLYKhKP1oZmADdEAAAh+QQJCgAAACwAAAAAIAAgAAAE6hDISWlZpOrNp1lGNRSdRpDUolIGw5RUYhhHukqFu8DsrEyqnWThGvAmhVlteBvojpTDDBUEIFwMFBRAmBkSgOrBFZogCASwBDEY/CZSg7GSE0gSCjQBMVG023xWBhklAnoEdhQEfyNqMIcKjhRsjEdnezB+A4k8gTwJhFuiW4dokXiloUepBAp5qaKpp6+Ho7aWW54wl7obvEe0kRuoplCGepwSx2jJvqHEmGt6whJpGpfJCHmOoNHKaHx61WiSR92E4lbFoq+B6QDtuetcaBPnW6+O7wDHpIiK9SaVK5GgV543tzjgGcghAgAh+QQJCgAAACwAAAAAIAAgAAAE7hDISSkxpOrN5zFHNWRdhSiVoVLHspRUMoyUakyEe8PTPCATW9A14E0UvuAKMNAZKYUZCiBMuBakSQKG8G2FzUWox2AUtAQFcBKlVQoLgQReZhQlCIJesQXI5B0CBnUMOxMCenoCfTCEWBsJColTMANldx15BGs8B5wlCZ9Po6OJkwmRpnqkqnuSrayqfKmqpLajoiW5HJq7FL1Gr2mMMcKUMIiJgIemy7xZtJsTmsM4xHiKv5KMCXqfyUCJEonXPN2rAOIAmsfB3uPoAK++G+w48edZPK+M6hLJpQg484enXIdQFSS1u6UhksENEQAAIfkECQoAAAAsAAAAACAAIAAABOcQyEmpGKLqzWcZRVUQnZYg1aBSh2GUVEIQ2aQOE+G+cD4ntpWkZQj1JIiZIogDFFyHI0UxQwFugMSOFIPJftfVAEoZLBbcLEFhlQiqGp1Vd140AUklUN3eCA51C1EWMzMCezCBBmkxVIVHBWd3HHl9JQOIJSdSnJ0TDKChCwUJjoWMPaGqDKannasMo6WnM562R5YluZRwur0wpgqZE7NKUm+FNRPIhjBJxKZteWuIBMN4zRMIVIhffcgojwCF117i4nlLnY5ztRLsnOk+aV+oJY7V7m76PdkS4trKcdg0Zc0tTcKkRAAAIfkECQoAAAAsAAAAACAAIAAABO4QyEkpKqjqzScpRaVkXZWQEximw1BSCUEIlDohrft6cpKCk5xid5MNJTaAIkekKGQkWyKHkvhKsR7ARmitkAYDYRIbUQRQjWBwJRzChi9CRlBcY1UN4g0/VNB0AlcvcAYHRyZPdEQFYV8ccwR5HWxEJ02YmRMLnJ1xCYp0Y5idpQuhopmmC2KgojKasUQDk5BNAwwMOh2RtRq5uQuPZKGIJQIGwAwGf6I0JXMpC8C7kXWDBINFMxS4DKMAWVWAGYsAdNqW5uaRxkSKJOZKaU3tPOBZ4DuK2LATgJhkPJMgTwKCdFjyPHEnKxFCDhEAACH5BAkKAAAALAAAAAAgACAAAATzEMhJaVKp6s2nIkolIJ2WkBShpkVRWqqQrhLSEu9MZJKK9y1ZrqYK9WiClmvoUaF8gIQSNeF1Er4MNFn4SRSDARWroAIETg1iVwuHjYB1kYc1mwruwXKC9gmsJXliGxc+XiUCby9ydh1sOSdMkpMTBpaXBzsfhoc5l58Gm5yToAaZhaOUqjkDgCWNHAULCwOLaTmzswadEqggQwgHuQsHIoZCHQMMQgQGubVEcxOPFAcMDAYUA85eWARmfSRQCdcMe0zeP1AAygwLlJtPNAAL19DARdPzBOWSm1brJBi45soRAWQAAkrQIykShQ9wVhHCwCQCACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiRMDjI0Fd30/iI2UA5GSS5UDj2l6NoqgOgN4gksEBgYFf0FDqKgHnyZ9OX8HrgYHdHpcHQULXAS2qKpENRg7eAMLC7kTBaixUYFkKAzWAAnLC7FLVxLWDBLKCwaKTULgEwbLA4hJtOkSBNqITT3xEgfLpBtzE/jiuL04RGEBgwWhShRgQExHBAAh+QQJCgAAACwAAAAAIAAgAAAE7xDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfZiCqGk5dTESJeaOAlClzsJsqwiJwiqnFrb2nS9kmIcgEsjQydLiIlHehhpejaIjzh9eomSjZR+ipslWIRLAgMDOR2DOqKogTB9pCUJBagDBXR6XB0EBkIIsaRsGGMMAxoDBgYHTKJiUYEGDAzHC9EACcUGkIgFzgwZ0QsSBcXHiQvOwgDdEwfFs0sDzt4S6BK4xYjkDOzn0unFeBzOBijIm1Dgmg5YFQwsCMjp1oJ8LyIAACH5BAkKAAAALAAAAAAgACAAAATwEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GGl6NoiPOH16iZKNlH6KmyWFOggHhEEvAwwMA0N9GBsEC6amhnVcEwavDAazGwIDaH1ipaYLBUTCGgQDA8NdHz0FpqgTBwsLqAbWAAnIA4FWKdMLGdYGEgraigbT0OITBcg5QwPT4xLrROZL6AuQAPUS7bxLpoWidY0JtxLHKhwwMJBTHgPKdEQAACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GAULDJCRiXo1CpGXDJOUjY+Yip9DhToJA4RBLwMLCwVDfRgbBAaqqoZ1XBMHswsHtxtFaH1iqaoGNgAIxRpbFAgfPQSqpbgGBqUD1wBXeCYp1AYZ19JJOYgH1KwA4UBvQwXUBxPqVD9L3sbp2BNk2xvvFPJd+MFCN6HAAIKgNggY0KtEBAAh+QQJCgAAACwAAAAAIAAgAAAE6BDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfYIDMaAFdTESJeaEDAIMxYFqrOUaNW4E4ObYcCXaiBVEgULe0NJaxxtYksjh2NLkZISgDgJhHthkpU4mW6blRiYmZOlh4JWkDqILwUGBnE6TYEbCgevr0N1gH4At7gHiRpFaLNrrq8HNgAJA70AWxQIH1+vsYMDAzZQPC9VCNkDWUhGkuE5PxJNwiUK4UfLzOlD4WvzAHaoG9nxPi5d+jYUqfAhhykOFwJWiAAAIfkECQoAAAAsAAAAACAAIAAABPAQyElpUqnqzaciSoVkXVUMFaFSwlpOCcMYlErAavhOMnNLNo8KsZsMZItJEIDIFSkLGQoQTNhIsFehRww2CQLKF0tYGKYSg+ygsZIuNqJksKgbfgIGepNo2cIUB3V1B3IvNiBYNQaDSTtfhhx0CwVPI0UJe0+bm4g5VgcGoqOcnjmjqDSdnhgEoamcsZuXO1aWQy8KAwOAuTYYGwi7w5h+Kr0SJ8MFihpNbx+4Erq7BYBuzsdiH1jCAzoSfl0rVirNbRXlBBlLX+BP0XJLAPGzTkAuAOqb0WT5AH7OcdCm5B8TgRwSRKIHQtaLCwg1RAAAOwAAAAAAAAAAAA==)}.jvectormap-legend-title{font-weight:700;font-size:14px;text-align:center}.jvectormap-legend-cnt{position:absolute}.jvectormap-legend-cnt-h{bottom:0;right:0}.jvectormap-legend-cnt-v{top:0;right:0}.jvectormap-legend{background:#000;color:#fff;border-radius:3px}.jvectormap-legend-cnt-h .jvectormap-legend{float:left;margin:0 10px 10px 0;padding:3px 3px 1px}.jvectormap-legend-cnt-h .jvectormap-legend .jvectormap-legend-tick{float:left}.jvectormap-legend-cnt-v .jvectormap-legend{margin:10px 10px 0 0;padding:3px}.jvectormap-legend-cnt-h .jvectormap-legend-tick{width:40px}.jvectormap-legend-cnt-h .jvectormap-legend-tick-sample{height:15px}.jvectormap-legend-cnt-v .jvectormap-legend-tick-sample{height:20px;width:20px;display:inline-block;vertical-align:middle}.jvectormap-legend-tick-text{font-size:12px}.jvectormap-legend-cnt-h .jvectormap-legend-tick-text{text-align:center}.jvectormap-legend-cnt-v .jvectormap-legend-tick-text{display:inline-block;vertical-align:middle;line-height:20px;padding-left:3px}/*!
* Quill Editor v1.3.6
* https://quilljs.com/
* Copyright (c) 2014, Jason Chen
* Copyright (c) 2013, salesforce.com
*/.ql-bubble.ql-toolbar:after,.ql-bubble .ql-toolbar:after{clear:both;content:"";display:table}.ql-bubble.ql-toolbar button,.ql-bubble .ql-toolbar button{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px;width:28px}.ql-bubble.ql-toolbar button svg,.ql-bubble .ql-toolbar button svg{float:left;height:100%}.ql-bubble.ql-toolbar button:active:hover,.ql-bubble .ql-toolbar button:active:hover{outline:none}.ql-bubble.ql-toolbar input.ql-image[type=file],.ql-bubble .ql-toolbar input.ql-image[type=file]{display:none}.ql-bubble.ql-toolbar .ql-picker-item.ql-selected,.ql-bubble .ql-toolbar .ql-picker-item.ql-selected,.ql-bubble.ql-toolbar .ql-picker-item:hover,.ql-bubble .ql-toolbar .ql-picker-item:hover,.ql-bubble.ql-toolbar .ql-picker-label.ql-active,.ql-bubble .ql-toolbar .ql-picker-label.ql-active,.ql-bubble.ql-toolbar .ql-picker-label:hover,.ql-bubble .ql-toolbar .ql-picker-label:hover,.ql-bubble.ql-toolbar button.ql-active,.ql-bubble .ql-toolbar button.ql-active,.ql-bubble.ql-toolbar button:focus,.ql-bubble .ql-toolbar button:focus,.ql-bubble.ql-toolbar button:hover,.ql-bubble .ql-toolbar button:hover{color:#fff}.ql-bubble.ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-bubble .ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-bubble.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-bubble .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-bubble.ql-toolbar .ql-picker-item:hover .ql-fill,.ql-bubble .ql-toolbar .ql-picker-item:hover .ql-fill,.ql-bubble.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-bubble .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-bubble.ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-bubble .ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-bubble.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-bubble .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-bubble.ql-toolbar .ql-picker-label:hover .ql-fill,.ql-bubble .ql-toolbar .ql-picker-label:hover .ql-fill,.ql-bubble.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-bubble .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-bubble.ql-toolbar button.ql-active .ql-fill,.ql-bubble .ql-toolbar button.ql-active .ql-fill,.ql-bubble.ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-bubble .ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-bubble.ql-toolbar button:focus .ql-fill,.ql-bubble .ql-toolbar button:focus .ql-fill,.ql-bubble.ql-toolbar button:focus .ql-stroke.ql-fill,.ql-bubble .ql-toolbar button:focus .ql-stroke.ql-fill,.ql-bubble.ql-toolbar button:hover .ql-fill,.ql-bubble .ql-toolbar button:hover .ql-fill,.ql-bubble.ql-toolbar button:hover .ql-stroke.ql-fill,.ql-bubble .ql-toolbar button:hover .ql-stroke.ql-fill{fill:#fff}.ql-bubble.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-bubble .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-bubble.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-bubble .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-bubble.ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-bubble .ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-bubble.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-bubble .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-bubble.ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-bubble .ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-bubble.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-bubble .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-bubble.ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-bubble .ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-bubble.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-bubble .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-bubble.ql-toolbar button.ql-active .ql-stroke,.ql-bubble .ql-toolbar button.ql-active .ql-stroke,.ql-bubble.ql-toolbar button.ql-active .ql-stroke-miter,.ql-bubble .ql-toolbar button.ql-active .ql-stroke-miter,.ql-bubble.ql-toolbar button:focus .ql-stroke,.ql-bubble .ql-toolbar button:focus .ql-stroke,.ql-bubble.ql-toolbar button:focus .ql-stroke-miter,.ql-bubble .ql-toolbar button:focus .ql-stroke-miter,.ql-bubble.ql-toolbar button:hover .ql-stroke,.ql-bubble .ql-toolbar button:hover .ql-stroke,.ql-bubble.ql-toolbar button:hover .ql-stroke-miter,.ql-bubble .ql-toolbar button:hover .ql-stroke-miter{stroke:#fff}@media (pointer:coarse){.ql-bubble.ql-toolbar button:hover:not(.ql-active),.ql-bubble .ql-toolbar button:hover:not(.ql-active){color:#ccc}.ql-bubble.ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-bubble .ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-bubble.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill,.ql-bubble .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill{fill:#ccc}.ql-bubble.ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-bubble .ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-bubble.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter,.ql-bubble .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter{stroke:#ccc}}.ql-bubble,.ql-bubble *{box-sizing:border-box}.ql-bubble .ql-hidden{display:none}.ql-bubble .ql-out-bottom,.ql-bubble .ql-out-top{visibility:hidden}.ql-bubble .ql-tooltip{position:absolute;-webkit-transform:translateY(10px);transform:translateY(10px)}.ql-bubble .ql-tooltip a{cursor:pointer;text-decoration:none}.ql-bubble .ql-tooltip.ql-flip{-webkit-transform:translateY(-10px);transform:translateY(-10px)}.ql-bubble .ql-formats{display:inline-block;vertical-align:middle}.ql-bubble .ql-formats:after{clear:both;content:"";display:table}.ql-bubble .ql-stroke{fill:none;stroke:#ccc;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.ql-bubble .ql-stroke-miter{fill:none;stroke:#ccc;stroke-miterlimit:10;stroke-width:2}.ql-bubble .ql-fill,.ql-bubble .ql-stroke.ql-fill{fill:#ccc}.ql-bubble .ql-empty{fill:none}.ql-bubble .ql-even{fill-rule:evenodd}.ql-bubble .ql-stroke.ql-thin,.ql-bubble .ql-thin{stroke-width:1}.ql-bubble .ql-transparent{opacity:.4}.ql-bubble .ql-direction svg:last-child{display:none}.ql-bubble .ql-direction.ql-active svg:last-child{display:inline}.ql-bubble .ql-direction.ql-active svg:first-child{display:none}.ql-bubble .ql-editor h1{font-size:2em}.ql-bubble .ql-editor h2{font-size:1.5em}.ql-bubble .ql-editor h3{font-size:1.17em}.ql-bubble .ql-editor h4{font-size:1em}.ql-bubble .ql-editor h5{font-size:.83em}.ql-bubble .ql-editor h6{font-size:.67em}.ql-bubble .ql-editor a{text-decoration:underline}.ql-bubble .ql-editor blockquote{border-left:4px solid #ccc;margin-bottom:5px;margin-top:5px;padding-left:16px}.ql-bubble .ql-editor code,.ql-bubble .ql-editor pre{background-color:#f0f0f0;border-radius:3px}.ql-bubble .ql-editor pre{white-space:pre-wrap;margin-bottom:5px;margin-top:5px;padding:5px 10px}.ql-bubble .ql-editor code{font-size:85%;padding:2px 4px}.ql-bubble .ql-editor pre.ql-syntax{background-color:#23241f;color:#f8f8f2;overflow:visible}.ql-bubble .ql-editor img{max-width:100%}.ql-bubble .ql-picker{color:#ccc;display:inline-block;float:left;font-size:14px;font-weight:500;height:24px;position:relative;vertical-align:middle}.ql-bubble .ql-picker-label{cursor:pointer;display:inline-block;height:100%;padding-left:8px;padding-right:2px;position:relative;width:100%}.ql-bubble .ql-picker-label:before{display:inline-block;line-height:22px}.ql-bubble .ql-picker-options{background-color:#444;display:none;min-width:100%;padding:4px 8px;position:absolute;white-space:nowrap}.ql-bubble .ql-picker-options .ql-picker-item{cursor:pointer;display:block;padding-bottom:5px;padding-top:5px}.ql-bubble .ql-picker.ql-expanded .ql-picker-label{color:#777;z-index:2}.ql-bubble .ql-picker.ql-expanded .ql-picker-label .ql-fill{fill:#777}.ql-bubble .ql-picker.ql-expanded .ql-picker-label .ql-stroke{stroke:#777}.ql-bubble .ql-picker.ql-expanded .ql-picker-options{display:block;margin-top:-1px;top:100%;z-index:1}.ql-bubble .ql-color-picker,.ql-bubble .ql-icon-picker{width:28px}.ql-bubble .ql-color-picker .ql-picker-label,.ql-bubble .ql-icon-picker .ql-picker-label{padding:2px 4px}.ql-bubble .ql-color-picker .ql-picker-label svg,.ql-bubble .ql-icon-picker .ql-picker-label svg{right:4px}.ql-bubble .ql-icon-picker .ql-picker-options{padding:4px 0}.ql-bubble .ql-icon-picker .ql-picker-item{height:24px;width:24px;padding:2px 4px}.ql-bubble .ql-color-picker .ql-picker-options{padding:3px 5px;width:152px}.ql-bubble .ql-color-picker .ql-picker-item{border:1px solid transparent;float:left;height:16px;margin:2px;padding:0;width:16px}.ql-bubble .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg{position:absolute;margin-top:-9px;right:0;top:50%;width:18px}.ql-bubble .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=""]):before,.ql-bubble .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=""]):before,.ql-bubble .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=""]):before,.ql-bubble .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=""]):before,.ql-bubble .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=""]):before,.ql-bubble .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=""]):before{content:attr(data-label)}.ql-bubble .ql-picker.ql-header{width:98px}.ql-bubble .ql-picker.ql-header .ql-picker-item:before,.ql-bubble .ql-picker.ql-header .ql-picker-label:before{content:"Normal"}.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="1"]:before,.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="1"]:before{content:"Heading 1"}.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="2"]:before,.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="2"]:before{content:"Heading 2"}.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="3"]:before,.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="3"]:before{content:"Heading 3"}.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="4"]:before,.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="4"]:before{content:"Heading 4"}.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="5"]:before,.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="5"]:before{content:"Heading 5"}.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="6"]:before,.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="6"]:before{content:"Heading 6"}.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="1"]:before{font-size:2em}.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="2"]:before{font-size:1.5em}.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="3"]:before{font-size:1.17em}.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="4"]:before{font-size:1em}.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="5"]:before{font-size:.83em}.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="6"]:before{font-size:.67em}.ql-bubble .ql-picker.ql-font{width:108px}.ql-bubble .ql-picker.ql-font .ql-picker-item:before,.ql-bubble .ql-picker.ql-font .ql-picker-label:before{content:"Sans Serif"}.ql-bubble .ql-picker.ql-font .ql-picker-item[data-value=serif]:before,.ql-bubble .ql-picker.ql-font .ql-picker-label[data-value=serif]:before{content:"Serif"}.ql-bubble .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before,.ql-bubble .ql-picker.ql-font .ql-picker-label[data-value=monospace]:before{content:"Monospace"}.ql-bubble .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{font-family:Georgia,Times New Roman,serif}.ql-bubble .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{font-family:Monaco,Courier New,monospace}.ql-bubble .ql-picker.ql-size{width:98px}.ql-bubble .ql-picker.ql-size .ql-picker-item:before,.ql-bubble .ql-picker.ql-size .ql-picker-label:before{content:"Normal"}.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=small]:before,.ql-bubble .ql-picker.ql-size .ql-picker-label[data-value=small]:before{content:"Small"}.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=large]:before,.ql-bubble .ql-picker.ql-size .ql-picker-label[data-value=large]:before{content:"Large"}.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=huge]:before,.ql-bubble .ql-picker.ql-size .ql-picker-label[data-value=huge]:before{content:"Huge"}.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=small]:before{font-size:10px}.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=large]:before{font-size:18px}.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{font-size:32px}.ql-bubble .ql-color-picker.ql-background .ql-picker-item{background-color:#fff}.ql-bubble .ql-color-picker.ql-color .ql-picker-item{background-color:#000}.ql-bubble .ql-toolbar .ql-formats{margin:8px 12px 8px 0}.ql-bubble .ql-toolbar .ql-formats:first-child{margin-left:12px}.ql-bubble .ql-color-picker svg{margin:1px}.ql-bubble .ql-color-picker .ql-picker-item.ql-selected,.ql-bubble .ql-color-picker .ql-picker-item:hover{border-color:#fff}.ql-bubble .ql-tooltip{background-color:#444;border-radius:25px;color:#fff}.ql-bubble .ql-tooltip-arrow{border-left:6px solid transparent;border-right:6px solid transparent;content:" ";display:block;left:50%;margin-left:-6px;position:absolute}.ql-bubble .ql-tooltip:not(.ql-flip) .ql-tooltip-arrow{border-bottom:6px solid #444;top:-6px}.ql-bubble .ql-tooltip.ql-flip .ql-tooltip-arrow{border-top:6px solid #444;bottom:-6px}.ql-bubble .ql-tooltip.ql-editing .ql-tooltip-editor{display:block}.ql-bubble .ql-tooltip.ql-editing .ql-formats{visibility:hidden}.ql-bubble .ql-tooltip-editor{display:none}.ql-bubble .ql-tooltip-editor input[type=text]{background:transparent;border:none;color:#fff;font-size:13px;height:100%;outline:none;padding:10px 20px;position:absolute;width:100%}.ql-bubble .ql-tooltip-editor a{top:10px;position:absolute;right:20px}.ql-bubble .ql-tooltip-editor a:before{color:#ccc;content:"\D7";font-size:16px;font-weight:700}.ql-container.ql-bubble:not(.ql-disabled) a{position:relative;white-space:nowrap}.ql-container.ql-bubble:not(.ql-disabled) a:before{background-color:#444;border-radius:15px;top:-5px;font-size:12px;color:#fff;content:attr(href);font-weight:400;overflow:hidden;padding:5px 15px;text-decoration:none;z-index:1}.ql-container.ql-bubble:not(.ql-disabled) a:after{border-top:6px solid #444;border-left:6px solid transparent;border-right:6px solid transparent;top:0;content:" ";height:0;width:0}.ql-container.ql-bubble:not(.ql-disabled) a:after,.ql-container.ql-bubble:not(.ql-disabled) a:before{left:0;margin-left:50%;position:absolute;-webkit-transform:translate(-50%,-100%);transform:translate(-50%,-100%);transition:visibility 0s ease .2s;visibility:hidden}.ql-container.ql-bubble:not(.ql-disabled) a:hover:after,.ql-container.ql-bubble:not(.ql-disabled) a:hover:before{visibility:visible}/*!
* Quill Editor v1.3.6
* https://quilljs.com/
* Copyright (c) 2014, Jason Chen
* Copyright (c) 2013, salesforce.com
*/.ql-container{box-sizing:border-box;font-family:Helvetica,Arial,sans-serif;font-size:13px;height:100%;margin:0;position:relative}.ql-container.ql-disabled .ql-tooltip{visibility:hidden}.ql-container.ql-disabled .ql-editor ul[data-checked]>li:before{pointer-events:none}.ql-clipboard{left:-100000px;height:1px;overflow-y:hidden;position:absolute;top:50%}.ql-clipboard p{margin:0;padding:0}.ql-editor{box-sizing:border-box;line-height:1.42;height:100%;outline:none;overflow-y:auto;padding:12px 15px;tab-size:4;-moz-tab-size:4;text-align:left;white-space:pre-wrap;word-wrap:break-word}.ql-editor>*{cursor:text}.ql-editor blockquote,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6,.ql-editor ol,.ql-editor p,.ql-editor pre,.ql-editor ul{margin:0;padding:0;counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol,.ql-editor ul{padding-left:1.5em}.ql-editor ol>li,.ql-editor ul>li{list-style-type:none}.ql-editor ul>li:before{content:"\2022"}.ql-editor ul[data-checked=false],.ql-editor ul[data-checked=true]{pointer-events:none}.ql-editor ul[data-checked=false]>li *,.ql-editor ul[data-checked=true]>li *{pointer-events:all}.ql-editor ul[data-checked=false]>li:before,.ql-editor ul[data-checked=true]>li:before{color:#777;cursor:pointer;pointer-events:all}.ql-editor ul[data-checked=true]>li:before{content:"\2611"}.ql-editor ul[data-checked=false]>li:before{content:"\2610"}.ql-editor li:before{display:inline-block;white-space:nowrap;width:1.2em}.ql-editor li:not(.ql-direction-rtl):before{margin-left:-1.5em;margin-right:.3em;text-align:right}.ql-editor li.ql-direction-rtl:before{margin-left:.3em;margin-right:-1.5em}.ql-editor ol li:not(.ql-direction-rtl),.ql-editor ul li:not(.ql-direction-rtl){padding-left:1.5em}.ql-editor ol li.ql-direction-rtl,.ql-editor ul li.ql-direction-rtl{padding-right:1.5em}.ql-editor ol li{counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;counter-increment:list-0}.ql-editor ol li:before{content:counter(list-0,decimal) ". "}.ql-editor ol li.ql-indent-1{counter-increment:list-1}.ql-editor ol li.ql-indent-1:before{content:counter(list-1,lower-alpha) ". "}.ql-editor ol li.ql-indent-1{counter-reset:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-2{counter-increment:list-2}.ql-editor ol li.ql-indent-2:before{content:counter(list-2,lower-roman) ". "}.ql-editor ol li.ql-indent-2{counter-reset:list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-3{counter-increment:list-3}.ql-editor ol li.ql-indent-3:before{content:counter(list-3,decimal) ". "}.ql-editor ol li.ql-indent-3{counter-reset:list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-4{counter-increment:list-4}.ql-editor ol li.ql-indent-4:before{content:counter(list-4,lower-alpha) ". "}.ql-editor ol li.ql-indent-4{counter-reset:list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-5{counter-increment:list-5}.ql-editor ol li.ql-indent-5:before{content:counter(list-5,lower-roman) ". "}.ql-editor ol li.ql-indent-5{counter-reset:list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-6{counter-increment:list-6}.ql-editor ol li.ql-indent-6:before{content:counter(list-6,decimal) ". "}.ql-editor ol li.ql-indent-6{counter-reset:list-7 list-8 list-9}.ql-editor ol li.ql-indent-7{counter-increment:list-7}.ql-editor ol li.ql-indent-7:before{content:counter(list-7,lower-alpha) ". "}.ql-editor ol li.ql-indent-7{counter-reset:list-8 list-9}.ql-editor ol li.ql-indent-8{counter-increment:list-8}.ql-editor ol li.ql-indent-8:before{content:counter(list-8,lower-roman) ". "}.ql-editor ol li.ql-indent-8{counter-reset:list-9}.ql-editor ol li.ql-indent-9{counter-increment:list-9}.ql-editor ol li.ql-indent-9:before{content:counter(list-9,decimal) ". "}.ql-editor .ql-indent-1:not(.ql-direction-rtl){padding-left:3em}.ql-editor li.ql-indent-1:not(.ql-direction-rtl){padding-left:4.5em}.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:3em}.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:4.5em}.ql-editor .ql-indent-2:not(.ql-direction-rtl){padding-left:6em}.ql-editor li.ql-indent-2:not(.ql-direction-rtl){padding-left:7.5em}.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:6em}.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:7.5em}.ql-editor .ql-indent-3:not(.ql-direction-rtl){padding-left:9em}.ql-editor li.ql-indent-3:not(.ql-direction-rtl){padding-left:10.5em}.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:9em}.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:10.5em}.ql-editor .ql-indent-4:not(.ql-direction-rtl){padding-left:12em}.ql-editor li.ql-indent-4:not(.ql-direction-rtl){padding-left:13.5em}.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:12em}.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:13.5em}.ql-editor .ql-indent-5:not(.ql-direction-rtl){padding-left:15em}.ql-editor li.ql-indent-5:not(.ql-direction-rtl){padding-left:16.5em}.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:15em}.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:16.5em}.ql-editor .ql-indent-6:not(.ql-direction-rtl){padding-left:18em}.ql-editor li.ql-indent-6:not(.ql-direction-rtl){padding-left:19.5em}.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:18em}.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:19.5em}.ql-editor .ql-indent-7:not(.ql-direction-rtl){padding-left:21em}.ql-editor li.ql-indent-7:not(.ql-direction-rtl){padding-left:22.5em}.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:21em}.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:22.5em}.ql-editor .ql-indent-8:not(.ql-direction-rtl){padding-left:24em}.ql-editor li.ql-indent-8:not(.ql-direction-rtl){padding-left:25.5em}.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:24em}.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:25.5em}.ql-editor .ql-indent-9:not(.ql-direction-rtl){padding-left:27em}.ql-editor li.ql-indent-9:not(.ql-direction-rtl){padding-left:28.5em}.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:27em}.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:28.5em}.ql-editor .ql-video{display:block;max-width:100%}.ql-editor .ql-video.ql-align-center{margin:0 auto}.ql-editor .ql-video.ql-align-right{margin:0 0 0 auto}.ql-editor .ql-bg-black{background-color:#000}.ql-editor .ql-bg-red{background-color:#e60000}.ql-editor .ql-bg-orange{background-color:#f90}.ql-editor .ql-bg-yellow{background-color:#ff0}.ql-editor .ql-bg-green{background-color:#008a00}.ql-editor .ql-bg-blue{background-color:#06c}.ql-editor .ql-bg-purple{background-color:#93f}.ql-editor .ql-color-white{color:#fff}.ql-editor .ql-color-red{color:#e60000}.ql-editor .ql-color-orange{color:#f90}.ql-editor .ql-color-yellow{color:#ff0}.ql-editor .ql-color-green{color:#008a00}.ql-editor .ql-color-blue{color:#06c}.ql-editor .ql-color-purple{color:#93f}.ql-editor .ql-font-serif{font-family:Georgia,Times New Roman,serif}.ql-editor .ql-font-monospace{font-family:Monaco,Courier New,monospace}.ql-editor .ql-size-small{font-size:.75em}.ql-editor .ql-size-large{font-size:1.5em}.ql-editor .ql-size-huge{font-size:2.5em}.ql-editor .ql-direction-rtl{direction:rtl;text-align:inherit}.ql-editor .ql-align-center{text-align:center}.ql-editor .ql-align-justify{text-align:justify}.ql-editor .ql-align-right{text-align:right}.ql-editor.ql-blank:before{color:rgba(0,0,0,.6);content:attr(data-placeholder);font-style:italic;left:15px;pointer-events:none;position:absolute;right:15px}.ql-snow.ql-toolbar:after,.ql-snow .ql-toolbar:after{clear:both;content:"";display:table}.ql-snow.ql-toolbar button,.ql-snow .ql-toolbar button{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px;width:28px}.ql-snow.ql-toolbar button svg,.ql-snow .ql-toolbar button svg{float:left;height:100%}.ql-snow.ql-toolbar button:active:hover,.ql-snow .ql-toolbar button:active:hover{outline:none}.ql-snow.ql-toolbar input.ql-image[type=file],.ql-snow .ql-toolbar input.ql-image[type=file]{display:none}.ql-snow.ql-toolbar .ql-picker-item.ql-selected,.ql-snow .ql-toolbar .ql-picker-item.ql-selected,.ql-snow.ql-toolbar .ql-picker-item:hover,.ql-snow .ql-toolbar .ql-picker-item:hover,.ql-snow.ql-toolbar .ql-picker-label.ql-active,.ql-snow .ql-toolbar .ql-picker-label.ql-active,.ql-snow.ql-toolbar .ql-picker-label:hover,.ql-snow .ql-toolbar .ql-picker-label:hover,.ql-snow.ql-toolbar button.ql-active,.ql-snow .ql-toolbar button.ql-active,.ql-snow.ql-toolbar button:focus,.ql-snow .ql-toolbar button:focus,.ql-snow.ql-toolbar button:hover,.ql-snow .ql-toolbar button:hover{color:#06c}.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar button:focus .ql-fill,.ql-snow .ql-toolbar button:focus .ql-fill,.ql-snow.ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow.ql-toolbar button:hover .ql-fill,.ql-snow .ql-toolbar button:hover .ql-fill,.ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill{fill:#06c}.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow.ql-toolbar button.ql-active .ql-stroke,.ql-snow .ql-toolbar button.ql-active .ql-stroke,.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar button:focus .ql-stroke,.ql-snow .ql-toolbar button:focus .ql-stroke,.ql-snow.ql-toolbar button:focus .ql-stroke-miter,.ql-snow .ql-toolbar button:focus .ql-stroke-miter,.ql-snow.ql-toolbar button:hover .ql-stroke,.ql-snow .ql-toolbar button:hover .ql-stroke,.ql-snow.ql-toolbar button:hover .ql-stroke-miter,.ql-snow .ql-toolbar button:hover .ql-stroke-miter{stroke:#06c}@media (pointer:coarse){.ql-snow.ql-toolbar button:hover:not(.ql-active),.ql-snow .ql-toolbar button:hover:not(.ql-active){color:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill{fill:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter{stroke:#444}}.ql-snow,.ql-snow *{box-sizing:border-box}.ql-snow .ql-hidden{display:none}.ql-snow .ql-out-bottom,.ql-snow .ql-out-top{visibility:hidden}.ql-snow .ql-tooltip{position:absolute;-webkit-transform:translateY(10px);transform:translateY(10px)}.ql-snow .ql-tooltip a{cursor:pointer;text-decoration:none}.ql-snow .ql-tooltip.ql-flip{-webkit-transform:translateY(-10px);transform:translateY(-10px)}.ql-snow .ql-formats{display:inline-block;vertical-align:middle}.ql-snow .ql-formats:after{clear:both;content:"";display:table}.ql-snow .ql-stroke{fill:none;stroke:#444;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.ql-snow .ql-stroke-miter{fill:none;stroke:#444;stroke-miterlimit:10;stroke-width:2}.ql-snow .ql-fill,.ql-snow .ql-stroke.ql-fill{fill:#444}.ql-snow .ql-empty{fill:none}.ql-snow .ql-even{fill-rule:evenodd}.ql-snow .ql-stroke.ql-thin,.ql-snow .ql-thin{stroke-width:1}.ql-snow .ql-transparent{opacity:.4}.ql-snow .ql-direction svg:last-child{display:none}.ql-snow .ql-direction.ql-active svg:last-child{display:inline}.ql-snow .ql-direction.ql-active svg:first-child{display:none}.ql-snow .ql-editor h1{font-size:2em}.ql-snow .ql-editor h2{font-size:1.5em}.ql-snow .ql-editor h3{font-size:1.17em}.ql-snow .ql-editor h4{font-size:1em}.ql-snow .ql-editor h5{font-size:.83em}.ql-snow .ql-editor h6{font-size:.67em}.ql-snow .ql-editor a{text-decoration:underline}.ql-snow .ql-editor blockquote{border-left:4px solid #ccc;margin-bottom:5px;margin-top:5px;padding-left:16px}.ql-snow .ql-editor code,.ql-snow .ql-editor pre{background-color:#f0f0f0;border-radius:3px}.ql-snow .ql-editor pre{white-space:pre-wrap;margin-bottom:5px;margin-top:5px;padding:5px 10px}.ql-snow .ql-editor code{font-size:85%;padding:2px 4px}.ql-snow .ql-editor pre.ql-syntax{background-color:#23241f;color:#f8f8f2;overflow:visible}.ql-snow .ql-editor img{max-width:100%}.ql-snow .ql-picker{color:#444;display:inline-block;float:left;font-size:14px;font-weight:500;height:24px;position:relative;vertical-align:middle}.ql-snow .ql-picker-label{cursor:pointer;display:inline-block;height:100%;padding-left:8px;padding-right:2px;position:relative;width:100%}.ql-snow .ql-picker-label:before{display:inline-block;line-height:22px}.ql-snow .ql-picker-options{background-color:#fff;display:none;min-width:100%;padding:4px 8px;position:absolute;white-space:nowrap}.ql-snow .ql-picker-options .ql-picker-item{cursor:pointer;display:block;padding-bottom:5px;padding-top:5px}.ql-snow .ql-picker.ql-expanded .ql-picker-label{color:#ccc;z-index:2}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill{fill:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke{stroke:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-options{display:block;margin-top:-1px;top:100%;z-index:1}.ql-snow .ql-color-picker,.ql-snow .ql-icon-picker{width:28px}.ql-snow .ql-color-picker .ql-picker-label,.ql-snow .ql-icon-picker .ql-picker-label{padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-label svg,.ql-snow .ql-icon-picker .ql-picker-label svg{right:4px}.ql-snow .ql-icon-picker .ql-picker-options{padding:4px 0}.ql-snow .ql-icon-picker .ql-picker-item{height:24px;width:24px;padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-options{padding:3px 5px;width:152px}.ql-snow .ql-color-picker .ql-picker-item{border:1px solid transparent;float:left;height:16px;margin:2px;padding:0;width:16px}.ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg{position:absolute;margin-top:-9px;right:0;top:50%;width:18px}.ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=""]):before{content:attr(data-label)}.ql-snow .ql-picker.ql-header{width:98px}.ql-snow .ql-picker.ql-header .ql-picker-item:before,.ql-snow .ql-picker.ql-header .ql-picker-label:before{content:"Normal"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]:before{content:"Heading 1"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]:before{content:"Heading 2"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]:before{content:"Heading 3"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]:before{content:"Heading 4"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]:before{content:"Heading 5"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]:before{content:"Heading 6"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before{font-size:2em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before{font-size:1.5em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before{font-size:1.17em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before{font-size:1em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before{font-size:.83em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before{font-size:.67em}.ql-snow .ql-picker.ql-font{width:108px}.ql-snow .ql-picker.ql-font .ql-picker-item:before,.ql-snow .ql-picker.ql-font .ql-picker-label:before{content:"Sans Serif"}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]:before{content:"Serif"}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]:before{content:"Monospace"}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{font-family:Georgia,Times New Roman,serif}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{font-family:Monaco,Courier New,monospace}.ql-snow .ql-picker.ql-size{width:98px}.ql-snow .ql-picker.ql-size .ql-picker-item:before,.ql-snow .ql-picker.ql-size .ql-picker-label:before{content:"Normal"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]:before{content:"Small"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]:before{content:"Large"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]:before{content:"Huge"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before{font-size:10px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before{font-size:18px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{font-size:32px}.ql-snow .ql-color-picker.ql-background .ql-picker-item{background-color:#fff}.ql-snow .ql-color-picker.ql-color .ql-picker-item{background-color:#000}.ql-toolbar.ql-snow{border:1px solid #ccc;box-sizing:border-box;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;padding:8px}.ql-toolbar.ql-snow .ql-formats{margin-right:15px}.ql-toolbar.ql-snow .ql-picker-label{border:1px solid transparent}.ql-toolbar.ql-snow .ql-picker-options{border:1px solid transparent;box-shadow:0 2px 8px rgba(0,0,0,.2)}.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label,.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options{border-color:#ccc}.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected,.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover{border-color:#000}.ql-toolbar.ql-snow+.ql-container.ql-snow{border-top:0}.ql-snow .ql-tooltip{background-color:#fff;border:1px solid #ccc;box-shadow:0 0 5px #ddd;color:#444;padding:5px 12px;white-space:nowrap}.ql-snow .ql-tooltip:before{content:"Visit URL:";line-height:26px;margin-right:8px}.ql-snow .ql-tooltip input[type=text]{display:none;border:1px solid #ccc;font-size:13px;height:26px;margin:0;padding:3px 5px;width:170px}.ql-snow .ql-tooltip a.ql-preview{display:inline-block;max-width:200px;overflow-x:hidden;text-overflow:ellipsis;vertical-align:top}.ql-snow .ql-tooltip a.ql-action:after{border-right:1px solid #ccc;content:"Edit";margin-left:16px;padding-right:8px}.ql-snow .ql-tooltip a.ql-remove:before{content:"Remove";margin-left:8px}.ql-snow .ql-tooltip a{line-height:26px}.ql-snow .ql-tooltip.ql-editing a.ql-preview,.ql-snow .ql-tooltip.ql-editing a.ql-remove{display:none}.ql-snow .ql-tooltip.ql-editing input[type=text]{display:inline-block}.ql-snow .ql-tooltip.ql-editing a.ql-action:after{border-right:0;content:"Save";padding-right:0}.ql-snow .ql-tooltip[data-mode=link]:before{content:"Enter link:"}.ql-snow .ql-tooltip[data-mode=formula]:before{content:"Enter formula:"}.ql-snow .ql-tooltip[data-mode=video]:before{content:"Enter video:"}.ql-snow a{color:#06c}.ql-container.ql-snow{border:1px solid #ccc}.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir=rtl] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:#fff;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0!important;clip:rect(0 0 0 0)!important;-webkit-clip-path:inset(50%)!important;clip-path:inset(50%)!important;height:1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important;white-space:nowrap!important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:700}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent;border-style:solid;border-width:5px 4px 0;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888;border-width:0 4px 5px}.select2-container--default .select2-selection--multiple{background-color:#fff;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:700;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:700;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-search--inline,.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__placeholder{float:right}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:1px solid #000;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple,.select2-container--default.select2-container--open.select2-container--above .select2-selection--single{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple,.select2-container--default.select2-container--open.select2-container--below .select2-selection--single{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:#fff}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #dee2e6;border-radius:.2rem;outline:0;background-image:linear-gradient(180deg,#fff 50%,#eee);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#FFFFFFFF",endColorstr="#FFEEEEEE",GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:700;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #dee2e6;border-top-right-radius:.2rem;border-bottom-right-radius:.2rem;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:linear-gradient(180deg,#eee 50%,#ccc);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#FFEEEEEE",endColorstr="#FFCCCCCC",GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent;border-style:solid;border-width:5px 4px 0;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #dee2e6;border-radius:0;border-top-left-radius:.2rem;border-bottom-left-radius:.2rem;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888;border-width:0 4px 5px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:linear-gradient(180deg,#fff 0,#eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#FFFFFFFF",endColorstr="#FFEEEEEE",GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:linear-gradient(180deg,#eee 50%,#fff);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#FFEEEEEE",endColorstr="#FFFFFFFF",GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:#fff;border:1px solid #dee2e6;border-radius:.2rem;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #dee2e6;border-radius:.2rem;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:700;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice{float:right;margin-left:5px;margin-right:auto}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #dee2e6;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb}/*!
*
* SimpleBar.js - v2.6.1
* Scrollbars, simpler.
* https://grsmto.github.io/simplebar/
*
* Made by Adrien Grsmto from a fork by Jonathan Nicol
* Under MIT License
*
*/[data-simplebar]{position:relative;z-index:0;overflow:hidden!important;max-height:inherit;-webkit-overflow-scrolling:touch}[data-simplebar=init]{display:-webkit-flex;display:flex}.simplebar-scroll-content{overflow-x:hidden!important;overflow-y:scroll;min-width:100%!important;max-height:inherit!important;box-sizing:content-box!important}.simplebar-content{overflow-y:hidden!important;overflow-x:scroll;box-sizing:border-box!important;min-height:100%!important}.simplebar-track{z-index:1;position:absolute;right:0;bottom:0;width:11px}.simplebar-scrollbar{position:absolute;right:2px;width:7px;min-height:10px}.simplebar-scrollbar:before{position:absolute;content:"";background:#000;border-radius:7px;left:0;right:0;opacity:0;transition:opacity .2s linear}.simplebar-track .simplebar-scrollbar.visible:before,.simplebar-track:hover .simplebar-scrollbar:before{opacity:.5;transition:opacity 0 linear}.simplebar-track.vertical{top:0}.simplebar-track.vertical .simplebar-scrollbar:before{top:2px;bottom:2px}.simplebar-track.horizontal{left:0;width:auto;height:11px}.simplebar-track.horizontal .simplebar-scrollbar:before{height:100%;left:2px;right:2px}.horizontal.simplebar-track .simplebar-scrollbar{right:auto;top:2px;height:7px;min-height:0;min-width:10px;width:auto}/*!
* SmartWizard v4.3.x
* jQuery Wizard Plugin
* http://www.techlaboratory.net/smartwizard
*
* Created by Dipu Raj
* http://dipuraj.me
*
* Licensed under the terms of MIT License
* https://github.com/techlab/SmartWizard/blob/master/LICENSE
*/.sw-main{border-radius:.25rem!important}.sw-main,.sw-main .sw-container{position:relative;display:block;margin:0;padding:0}.sw-main .step-content{display:none;position:relative;margin:0}.sw-main .sw-toolbar{margin-left:0}.sw-theme-default{box-shadow:0 1px 3px rgba(0,0,0,.3)}.sw-theme-default .sw-container{min-height:250px}.sw-theme-default .step-content{padding:10px;border:0 solid #d4d4d4;background-color:#fff;text-align:left}.sw-theme-default .sw-toolbar{background:#f9f9f9;border-radius:0!important;padding:10px;margin-bottom:0!important}.sw-theme-default .sw-toolbar-top{border-bottom-color:#ddd!important}.sw-theme-default .sw-toolbar-bottom{border-top-color:#ddd!important}.sw-theme-default>ul.step-anchor>li{position:relative;margin-right:2px}.sw-theme-default>ul.step-anchor>li>a,.sw-theme-default>ul.step-anchor>li>a:hover{color:#bbb;text-decoration:none;outline-style:none;background:transparent!important;border:none!important;cursor:not-allowed}.sw-theme-default>ul.step-anchor>li.clickable>a:hover{color:#4285f4!important;background:transparent!important;cursor:pointer}.sw-theme-default>ul.step-anchor>li>a:after{content:"";background:#4285f4;height:2px;position:absolute;width:100%;left:0;bottom:0;transition:all .25s ease 0s;-webkit-transform:scale(0);transform:scale(0)}.sw-theme-default>ul.step-anchor>li.active>a{border:none!important;color:#4285f4!important;background:transparent!important;cursor:pointer}.sw-theme-default>ul.step-anchor>li.active>a:after{-webkit-transform:scale(1);transform:scale(1)}.sw-theme-default>ul.step-anchor>li.done>a{border:none!important;color:#000!important;background:transparent!important;cursor:pointer}.sw-theme-default>ul.step-anchor>li.done>a:after{background:#5cb85c;-webkit-transform:scale(1);transform:scale(1)}.sw-theme-default>ul.step-anchor>li.danger>a{border:none!important;color:#d9534f!important;cursor:pointer}.sw-theme-default>ul.step-anchor>li.danger>a:after{background:#d9534f;border-left-color:#f8d7da;-webkit-transform:scale(1);transform:scale(1)}.sw-theme-default>ul.step-anchor>li.disabled>a,.sw-theme-default>ul.step-anchor>li.disabled>a:hover{color:#eee!important;cursor:not-allowed}@media screen and (max-width:768px){.sw-theme-default>.nav-tabs>li{float:none!important}}.sw-loading:after{position:absolute;display:block;opacity:1;content:"";top:0;left:0;height:100%;width:100%;background:hsla(0,0%,100%,.7);transition:all .2s ease;z-index:2}.sw-loading:before{content:"";display:inline-block;position:absolute;top:50%;left:50%;z-index:10;border-radius:50%;border:10px solid #f3f3f3;border-top-color:#3498db;width:80px;height:80px;margin-top:-40px;margin-left:-40px;-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(1turn)}}@keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}/*!
* SmartWizard v4.3.x
* jQuery Wizard Plugin
* http://www.techlaboratory.net/smartwizard
*
* Created by Dipu Raj
* http://dipuraj.me
*
* Licensed under the terms of MIT License
* https://github.com/techlab/SmartWizard/blob/master/LICENSE
*/.sw-theme-arrows{border-radius:5px;border:1px solid #ddd}.sw-theme-arrows>.sw-container{min-height:200px}.sw-theme-arrows .step-content{padding:0 10px;border:0 solid #d4d4d4;background-color:#fff;text-align:left}.sw-theme-arrows .sw-toolbar{padding:10px;margin-bottom:0!important}.sw-theme-arrows>ul.step-anchor{border:0;border-bottom:1px solid #ddd;padding:0;background:#f5f5f5;border-radius:0;border-top-right-radius:5px;list-style:none;overflow:hidden}.sw-theme-arrows>ul.step-anchor li+li:before{padding:0}.sw-theme-arrows>ul.step-anchor>li>a,.sw-theme-arrows>ul.step-anchor>li>a:hover{color:#bbb;text-decoration:none;padding:10px 0 10px 45px;position:relative;display:block;border:0!important;border-radius:0;outline-style:none;background:#f5f5f5}.sw-theme-arrows>ul.step-anchor>li>a:after{border-left:30px solid #f5f5f5;z-index:2}.sw-theme-arrows>ul.step-anchor>li>a:after,.sw-theme-arrows>ul.step-anchor>li>a:before{content:" ";display:block;width:0;height:0;border-top:50px solid transparent;border-bottom:50px solid transparent;position:absolute;top:50%;margin-top:-50px;left:100%}.sw-theme-arrows>ul.step-anchor>li>a:before{border-left:30px solid #ddd;margin-left:1px;z-index:1}.sw-theme-arrows>ul.step-anchor>li:first-child>a{padding-left:15px}.sw-theme-arrows>ul.step-anchor>li>a:hover{color:#bbb;text-decoration:none;outline-style:none;background:#f5f5f5;border-color:#f5f5f5}.sw-theme-arrows>ul.step-anchor>li>a:hover:after{border-left-color:#f5f5f5}.sw-theme-arrows>ul.step-anchor>li.clickable>a:hover{color:#4285f4!important;background:#46b8da!important}.sw-theme-arrows>ul.step-anchor>li.active>a{border-color:#5cb85c!important;color:#fff!important;background:#5cb85c!important}.sw-theme-arrows>ul.step-anchor>li.active>a:after{border-left:30px solid #5cb85c!important}.sw-theme-arrows>ul.step-anchor>li.done>a{border-color:#b1dfbb!important;color:#fff!important;background:#b1dfbb!important}.sw-theme-arrows>ul.step-anchor>li.done>a:after{border-left:30px solid #b1dfbb}.sw-theme-arrows>ul.step-anchor>li.danger>a{border-color:#d9534f!important;color:#fff!important;background:#d9534f!important}.sw-theme-arrows>ul.step-anchor>li.danger>a:after{border-left:30px solid #d9534f!important}.sw-theme-arrows>ul.step-anchor>li.disabled>a,.sw-theme-arrows>ul.step-anchor>li.disabled>a:hover{color:#eee!important}@media screen and (max-width:768px){.sw-theme-arrows>ul.step-anchor{border:0;background:#ddd!important}.sw-theme-arrows>.nav-tabs>li{float:none!important;margin-bottom:0}.sw-theme-arrows>ul.step-anchor>li>a,.sw-theme-arrows>ul.step-anchor>li>a:hover{padding-left:15px;margin-right:0;margin-bottom:1px}.sw-theme-arrows>ul.step-anchor>li>a:after,.sw-theme-arrows>ul.step-anchor>li>a:before{display:none}}.sw-theme-arrows:before{border:10px solid #f3f3f3;border-top-color:#5cb85c}.bootstrap-datetimepicker-widget{list-style:none}.bootstrap-datetimepicker-widget.dropdown-menu{display:block;margin:2px 0;padding:4px;width:14rem}@media (min-width:576px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:768px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:992px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}.bootstrap-datetimepicker-widget.dropdown-menu:after,.bootstrap-datetimepicker-widget.dropdown-menu:before{content:"";display:inline-block;position:absolute}.bootstrap-datetimepicker-widget.dropdown-menu.bottom:before{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid rgba(0,0,0,.2);top:-7px;left:7px}.bootstrap-datetimepicker-widget.dropdown-menu.bottom:after{border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;top:-6px;left:8px}.bootstrap-datetimepicker-widget.dropdown-menu.top:before{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid rgba(0,0,0,.2);bottom:-7px;left:6px}.bootstrap-datetimepicker-widget.dropdown-menu.top:after{border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #fff;bottom:-6px;left:7px}.bootstrap-datetimepicker-widget.dropdown-menu.float-right:before{left:auto;right:6px}.bootstrap-datetimepicker-widget.dropdown-menu.float-right:after{left:auto;right:7px}.bootstrap-datetimepicker-widget.dropdown-menu.wider{width:16rem}.bootstrap-datetimepicker-widget .list-unstyled{margin:0}.bootstrap-datetimepicker-widget a[data-action]{padding:6px 0}.bootstrap-datetimepicker-widget a[data-action]:active{box-shadow:none}.bootstrap-datetimepicker-widget .timepicker-hour,.bootstrap-datetimepicker-widget .timepicker-minute,.bootstrap-datetimepicker-widget .timepicker-second{width:54px;font-weight:700;font-size:1.2em;margin:0}.bootstrap-datetimepicker-widget button[data-action]{padding:6px}.bootstrap-datetimepicker-widget .btn[data-action=incrementHours]:after,.bootstrap-datetimepicker-widget .fc-unthemed .fc-button[data-action=incrementHours]:after,.fc-unthemed .bootstrap-datetimepicker-widget .fc-button[data-action=incrementHours]:after{content:"Increment Hours"}.bootstrap-datetimepicker-widget .btn[data-action=incrementMinutes]:after,.bootstrap-datetimepicker-widget .fc-unthemed .fc-button[data-action=incrementMinutes]:after,.fc-unthemed .bootstrap-datetimepicker-widget .fc-button[data-action=incrementMinutes]:after{content:"Increment Minutes"}.bootstrap-datetimepicker-widget .btn[data-action=decrementHours]:after,.bootstrap-datetimepicker-widget .fc-unthemed .fc-button[data-action=decrementHours]:after,.fc-unthemed .bootstrap-datetimepicker-widget .fc-button[data-action=decrementHours]:after{content:"Decrement Hours"}.bootstrap-datetimepicker-widget .btn[data-action=decrementMinutes]:after,.bootstrap-datetimepicker-widget .fc-unthemed .fc-button[data-action=decrementMinutes]:after,.fc-unthemed .bootstrap-datetimepicker-widget .fc-button[data-action=decrementMinutes]:after{content:"Decrement Minutes"}.bootstrap-datetimepicker-widget .btn[data-action=showHours]:after,.bootstrap-datetimepicker-widget .fc-unthemed .fc-button[data-action=showHours]:after,.fc-unthemed .bootstrap-datetimepicker-widget .fc-button[data-action=showHours]:after{content:"Show Hours"}.bootstrap-datetimepicker-widget .btn[data-action=showMinutes]:after,.bootstrap-datetimepicker-widget .fc-unthemed .fc-button[data-action=showMinutes]:after,.fc-unthemed .bootstrap-datetimepicker-widget .fc-button[data-action=showMinutes]:after{content:"Show Minutes"}.bootstrap-datetimepicker-widget .btn[data-action=togglePeriod]:after,.bootstrap-datetimepicker-widget .fc-unthemed .fc-button[data-action=togglePeriod]:after,.fc-unthemed .bootstrap-datetimepicker-widget .fc-button[data-action=togglePeriod]:after{content:"Toggle AM/PM"}.bootstrap-datetimepicker-widget .btn[data-action=clear]:after,.bootstrap-datetimepicker-widget .fc-unthemed .fc-button[data-action=clear]:after,.fc-unthemed .bootstrap-datetimepicker-widget .fc-button[data-action=clear]:after{content:"Clear the picker"}.bootstrap-datetimepicker-widget .btn[data-action=today]:after,.bootstrap-datetimepicker-widget .fc-unthemed .fc-button[data-action=today]:after,.fc-unthemed .bootstrap-datetimepicker-widget .fc-button[data-action=today]:after{content:"Set the date to today"}.bootstrap-datetimepicker-widget .picker-switch{text-align:center}.bootstrap-datetimepicker-widget .picker-switch:after{content:"Toggle Date and Time Screens"}.bootstrap-datetimepicker-widget .picker-switch td{padding:0;margin:0;height:auto;width:auto;line-height:inherit}.bootstrap-datetimepicker-widget .picker-switch td span{line-height:2.5;height:2.5em;width:100%}.bootstrap-datetimepicker-widget table{width:100%;margin:0}.bootstrap-datetimepicker-widget table td,.bootstrap-datetimepicker-widget table th{text-align:center;border-radius:.2rem}.bootstrap-datetimepicker-widget table th{height:20px;line-height:20px;width:20px}.bootstrap-datetimepicker-widget table th.picker-switch{width:145px}.bootstrap-datetimepicker-widget table th.disabled,.bootstrap-datetimepicker-widget table th.disabled:hover{background:none;color:#6c757d;cursor:not-allowed}.bootstrap-datetimepicker-widget table th.prev:after{content:"Previous Month"}.bootstrap-datetimepicker-widget table th.next:after{content:"Next Month"}.bootstrap-datetimepicker-widget table thead tr:first-child th{cursor:pointer}.bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#e9ecef}.bootstrap-datetimepicker-widget table td{height:54px;line-height:54px;width:54px}.bootstrap-datetimepicker-widget table td.cw{font-size:.8em;height:20px;line-height:20px;color:#6c757d}.bootstrap-datetimepicker-widget table td.day{height:20px;line-height:20px;width:20px}.bootstrap-datetimepicker-widget table td.day:hover,.bootstrap-datetimepicker-widget table td.hour:hover,.bootstrap-datetimepicker-widget table td.minute:hover,.bootstrap-datetimepicker-widget table td.second:hover{background:#e9ecef;cursor:pointer}.bootstrap-datetimepicker-widget table td.new,.bootstrap-datetimepicker-widget table td.old{color:#6c757d}.bootstrap-datetimepicker-widget table td.today{position:relative}.bootstrap-datetimepicker-widget table td.today:before{content:"";display:inline-block;border-color:rgba(0,0,0,.2) transparent #47bac1;border-style:solid;border-width:0 0 7px 7px;position:absolute;bottom:4px;right:4px}.bootstrap-datetimepicker-widget table td.active,.bootstrap-datetimepicker-widget table td.active:hover{background-color:#47bac1;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.bootstrap-datetimepicker-widget table td.active.today:before{border-bottom-color:#fff}.bootstrap-datetimepicker-widget table td.disabled,.bootstrap-datetimepicker-widget table td.disabled:hover{background:none;color:#6c757d;cursor:not-allowed}.bootstrap-datetimepicker-widget table td span{display:inline-block;width:54px;height:54px;line-height:54px;margin:2px 1.5px;cursor:pointer;border-radius:.2rem}.bootstrap-datetimepicker-widget table td span:hover{background:#e9ecef}.bootstrap-datetimepicker-widget table td span.active{background-color:#47bac1;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.bootstrap-datetimepicker-widget table td span.old{color:#6c757d}.bootstrap-datetimepicker-widget table td span.disabled,.bootstrap-datetimepicker-widget table td span.disabled:hover{background:none;color:#6c757d;cursor:not-allowed}.bootstrap-datetimepicker-widget.usetwentyfour td.hour{height:27px;line-height:27px}.input-group [data-toggle=datetimepicker]{cursor:pointer}.toast-title{font-weight:700}.toast-message{-ms-word-wrap:break-word;word-wrap:break-word}.toast-message a,.toast-message label{color:#fff}.toast-message a:hover{color:#ccc;text-decoration:none}.toast-close-button{position:relative;right:-.3em;top:-.3em;float:right;font-size:20px;font-weight:700;color:#fff;-webkit-text-shadow:0 1px 0 #fff;text-shadow:0 1px 0 #fff;opacity:.8;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);filter:alpha(opacity=80)}.toast-close-button:focus,.toast-close-button:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);filter:alpha(opacity=40)}button.toast-close-button{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.toast-top-center{top:0;right:0;width:100%}.toast-bottom-center{bottom:0;right:0;width:100%}.toast-top-full-width{top:0;right:0;width:100%}.toast-bottom-full-width{bottom:0;right:0;width:100%}.toast-top-left{top:12px;left:12px}.toast-top-right{top:12px;right:12px}.toast-bottom-right{right:12px;bottom:12px}.toast-bottom-left{bottom:12px;left:12px}#toast-container{position:fixed;z-index:999999}#toast-container *{box-sizing:border-box}#toast-container>div{position:relative;overflow:hidden;margin:0 0 6px;padding:15px 15px 15px 50px;width:300px;border-radius:3px 3px 3px 3px;background-position:15px;background-repeat:no-repeat;box-shadow:0 0 12px #999;color:#fff;opacity:.8;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);filter:alpha(opacity=80)}#toast-container>div:hover{box-shadow:0 0 12px #000;opacity:1;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);filter:alpha(opacity=100);cursor:pointer}#toast-container>.toast-info{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=")!important}#toast-container>.toast-error{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=")!important}#toast-container>.toast-success{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==")!important}#toast-container>.toast-warning{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=")!important}#toast-container.toast-bottom-center>div,#toast-container.toast-top-center>div{width:300px;margin-left:auto;margin-right:auto}#toast-container.toast-bottom-full-width>div,#toast-container.toast-top-full-width>div{width:96%;margin-left:auto;margin-right:auto}.toast{background-color:#030303}.toast-success{background-color:#51a351}.toast-error{background-color:#bd362f}.toast-info{background-color:#2f96b4}.toast-warning{background-color:#f89406}.toast-progress{position:absolute;left:0;bottom:0;height:4px;background-color:#000;opacity:.4;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);filter:alpha(opacity=40)}@media (max-width:240px){#toast-container>div{padding:8px 8px 8px 50px;width:11em}#toast-container .toast-close-button{right:-.2em;top:-.2em}}@media (min-width:241px) and (max-width:480px){#toast-container>div{padding:8px 8px 8px 50px;width:18em}#toast-container .toast-close-button{right:-.2em;top:-.2em}}@media (min-width:481px) and (max-width:768px){#toast-container>div{padding:15px 15px 15px 50px;width:25em}}/*!
* FullCalendar v3.10.0
* Docs & License: https://fullcalendar.io/
* (c) 2018 Adam Shaw
*/.fc{direction:ltr;text-align:left}.fc-rtl{text-align:right}body .fc{font-size:1em}.fc-highlight{background:#bce8f1;opacity:.3}.fc-bgevent{background:#8fdf82;opacity:.3}.fc-nonbusiness{background:#d7d7d7}.fc button{box-sizing:border-box;margin:0;height:2.1em;padding:0 .6em;font-size:1em;white-space:nowrap;cursor:pointer}.fc button::-moz-focus-inner{margin:0;padding:0}.fc-state-default{border:1px solid}.fc-state-default.fc-corner-left{border-top-left-radius:4px;border-bottom-left-radius:4px}.fc-state-default.fc-corner-right{border-top-right-radius:4px;border-bottom-right-radius:4px}.fc button .fc-icon{position:relative;top:-.05em;margin:0 .2em;vertical-align:middle}.fc-state-default{background-color:#f5f5f5;background-image:linear-gradient(180deg,#fff,#e6e6e6);background-repeat:repeat-x;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);color:#333;text-shadow:0 1px 1px hsla(0,0%,100%,.75);box-shadow:inset 0 1px 0 hsla(0,0%,100%,.2),0 1px 2px rgba(0,0,0,.05)}.fc-state-active,.fc-state-disabled,.fc-state-down,.fc-state-hover{color:#333;background-color:#e6e6e6}.fc-state-hover{color:#333;text-decoration:none;background-position:0 -15px;transition:background-position .1s linear}.fc-state-active,.fc-state-down{background-color:#ccc;background-image:none;box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05)}.fc-state-disabled{cursor:default;background-image:none;opacity:.65;box-shadow:none}.fc-button-group{display:inline-block}.fc .fc-button-group>*{float:left;margin:0 0 0 -1px}.fc .fc-button-group>:first-child{margin-left:0}.fc-popover{position:absolute;box-shadow:0 2px 6px rgba(0,0,0,.15)}.fc-popover .fc-header{padding:2px 4px}.fc-popover .fc-header .fc-title{margin:0 2px}.fc-popover .fc-header .fc-close{cursor:pointer}.fc-ltr .fc-popover .fc-header .fc-title,.fc-rtl .fc-popover .fc-header .fc-close{float:left}.fc-ltr .fc-popover .fc-header .fc-close,.fc-rtl .fc-popover .fc-header .fc-title{float:right}.fc-divider{border-style:solid;border-width:1px}hr.fc-divider{height:0;margin:0;padding:0 0 2px;border-width:1px 0}.fc-clear{clear:both}.fc-bg,.fc-bgevent-skeleton,.fc-helper-skeleton,.fc-highlight-skeleton{position:absolute;top:0;left:0;right:0}.fc-bg{bottom:0}.fc-bg table{height:100%}.fc table{width:100%;box-sizing:border-box;table-layout:fixed;border-collapse:collapse;border-spacing:0;font-size:1em}.fc th{text-align:center}.fc td,.fc th{border-style:solid;border-width:1px;padding:0;vertical-align:top}.fc td.fc-today{border-style:double}a[data-goto]{cursor:pointer}a[data-goto]:hover{text-decoration:underline}.fc .fc-row{border-style:solid;border-width:0}.fc-row table{border-left:0 hidden transparent;border-right:0 hidden transparent;border-bottom:0 hidden transparent}.fc-row:first-child table{border-top:0 hidden transparent}.fc-row{position:relative}.fc-row .fc-bg{z-index:1}.fc-row .fc-bgevent-skeleton,.fc-row .fc-highlight-skeleton{bottom:0}.fc-row .fc-bgevent-skeleton table,.fc-row .fc-highlight-skeleton table{height:100%}.fc-row .fc-bgevent-skeleton td,.fc-row .fc-highlight-skeleton td{border-color:transparent}.fc-row .fc-bgevent-skeleton{z-index:2}.fc-row .fc-highlight-skeleton{z-index:3}.fc-row .fc-content-skeleton{position:relative;z-index:4;padding-bottom:2px}.fc-row .fc-helper-skeleton{z-index:5}.fc .fc-row .fc-content-skeleton table,.fc .fc-row .fc-content-skeleton td,.fc .fc-row .fc-helper-skeleton td{background:none;border-color:transparent}.fc-row .fc-content-skeleton td,.fc-row .fc-helper-skeleton td{border-bottom:0}.fc-row .fc-content-skeleton tbody td,.fc-row .fc-helper-skeleton tbody td{border-top:0}.fc-scroller{-webkit-overflow-scrolling:touch}.fc-scroller>.fc-day-grid,.fc-scroller>.fc-time-grid{position:relative;width:100%}.fc-event{position:relative;display:block;font-size:.85em;line-height:1.3;border-radius:3px;border:1px solid #3a87ad}.fc-event,.fc-event-dot{background-color:#3a87ad}.fc-event,.fc-event:hover{color:#fff;text-decoration:none}.fc-event.fc-draggable,.fc-event[href]{cursor:pointer}.fc-not-allowed,.fc-not-allowed .fc-event{cursor:not-allowed}.fc-event .fc-bg{z-index:1;background:#fff;opacity:.25}.fc-event .fc-content{position:relative;z-index:2}.fc-event .fc-resizer{position:absolute;z-index:4;display:none}.fc-event.fc-allow-mouse-resize .fc-resizer,.fc-event.fc-selected .fc-resizer{display:block}.fc-event.fc-selected .fc-resizer:before{content:"";position:absolute;z-index:9999;top:50%;left:50%;width:40px;height:40px;margin-left:-20px;margin-top:-20px}.fc-event.fc-selected{z-index:9999!important;box-shadow:0 2px 5px rgba(0,0,0,.2)}.fc-event.fc-selected.fc-dragging{box-shadow:0 2px 7px rgba(0,0,0,.3)}.fc-h-event.fc-selected:before{content:"";position:absolute;z-index:3;top:-10px;bottom:-10px;left:0;right:0}.fc-ltr .fc-h-event.fc-not-start,.fc-rtl .fc-h-event.fc-not-end{margin-left:0;border-left-width:0;padding-left:1px;border-top-left-radius:0;border-bottom-left-radius:0}.fc-ltr .fc-h-event.fc-not-end,.fc-rtl .fc-h-event.fc-not-start{margin-right:0;border-right-width:0;padding-right:1px;border-top-right-radius:0;border-bottom-right-radius:0}.fc-ltr .fc-h-event .fc-start-resizer,.fc-rtl .fc-h-event .fc-end-resizer{cursor:w-resize;left:-1px}.fc-ltr .fc-h-event .fc-end-resizer,.fc-rtl .fc-h-event .fc-start-resizer{cursor:e-resize;right:-1px}.fc-h-event.fc-allow-mouse-resize .fc-resizer{width:7px;top:-1px;bottom:-1px}.fc-h-event.fc-selected .fc-resizer{border-radius:4px;width:6px;height:6px;border:1px solid;border-color:inherit;background:#fff;top:50%;margin-top:-4px}.fc-ltr .fc-h-event.fc-selected .fc-start-resizer,.fc-rtl .fc-h-event.fc-selected .fc-end-resizer{margin-left:-4px}.fc-ltr .fc-h-event.fc-selected .fc-end-resizer,.fc-rtl .fc-h-event.fc-selected .fc-start-resizer{margin-right:-4px}.fc-day-grid-event{margin:1px 2px 0;padding:0 1px}tr:first-child>td>.fc-day-grid-event{margin-top:2px}.fc-day-grid-event.fc-selected:after{content:"";position:absolute;z-index:1;top:-1px;right:-1px;bottom:-1px;left:-1px;background:#000;opacity:.25}.fc-day-grid-event .fc-content{white-space:nowrap;overflow:hidden}.fc-day-grid-event .fc-time{font-weight:700}.fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer,.fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer{margin-left:-2px}.fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer,.fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer{margin-right:-2px}a.fc-more{margin:1px 3px;font-size:.85em;cursor:pointer;text-decoration:none}a.fc-more:hover{text-decoration:underline}.fc-limited{display:none}.fc-day-grid .fc-row{z-index:1}.fc-more-popover{z-index:2;width:220px}.fc-more-popover .fc-event-container{padding:10px}.fc-now-indicator{position:absolute;border:0 solid red}.fc-unselectable{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.fc-unthemed .fc-content,.fc-unthemed .fc-divider,.fc-unthemed .fc-list-heading td,.fc-unthemed .fc-list-view,.fc-unthemed .fc-popover,.fc-unthemed .fc-row,.fc-unthemed tbody,.fc-unthemed td,.fc-unthemed th,.fc-unthemed thead{border-color:#ddd}.fc-unthemed .fc-popover{background-color:#fff}.fc-unthemed .fc-divider,.fc-unthemed .fc-list-heading td,.fc-unthemed .fc-popover .fc-header{background:#eee}.fc-unthemed .fc-popover .fc-header .fc-close{color:#666}.fc-unthemed td.fc-today{background:#fcf8e3}.fc-unthemed .fc-disabled-day{background:#d7d7d7;opacity:.3}.fc-icon{display:inline-block;height:1em;line-height:1em;font-size:1em;text-align:center;overflow:hidden;font-family:Courier New,Courier,monospace;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.fc-icon:after{position:relative}.fc-icon-left-single-arrow:after{content:"\2039";font-weight:700;font-size:200%;top:-7%}.fc-icon-right-single-arrow:after{content:"\203A";font-weight:700;font-size:200%;top:-7%}.fc-icon-left-double-arrow:after{content:"\AB";font-size:160%;top:-7%}.fc-icon-right-double-arrow:after{content:"\BB";font-size:160%;top:-7%}.fc-icon-left-triangle:after{content:"\25C4";font-size:125%;top:3%}.fc-icon-right-triangle:after{content:"\25BA";font-size:125%;top:3%}.fc-icon-down-triangle:after{content:"\25BC";font-size:125%;top:2%}.fc-icon-x:after{content:"\D7";font-size:200%;top:6%}.fc-unthemed .fc-popover{border-width:1px;border-style:solid}.fc-unthemed .fc-popover .fc-header .fc-close{font-size:.9em;margin-top:2px}.fc-unthemed .fc-list-item:hover td{background-color:#f5f5f5}.ui-widget .fc-disabled-day{background-image:none}.fc-popover>.ui-widget-header+.ui-widget-content{border-top:0}.ui-widget .fc-event{color:#fff;text-decoration:none;font-weight:400}.ui-widget td.fc-axis{font-weight:400}.fc-time-grid .fc-slats .ui-widget-content{background:none}.fc.fc-bootstrap3 a{text-decoration:none}.fc.fc-bootstrap3 a[data-goto]:hover{text-decoration:underline}.fc-bootstrap3 hr.fc-divider{border-color:inherit}.fc-bootstrap3 .fc-today.alert{border-radius:0}.fc-bootstrap3 .fc-popover .panel-body{padding:0}.fc-bootstrap3 .fc-time-grid .fc-slats table{background:none}.fc.fc-bootstrap4 a{text-decoration:none}.fc.fc-bootstrap4 a[data-goto]:hover{text-decoration:underline}.fc-bootstrap4 hr.fc-divider{border-color:inherit}.fc-bootstrap4 .fc-today.alert{border-radius:0}.fc-bootstrap4 a.fc-event:not([href]):not([tabindex]){color:#fff}.fc-bootstrap4 .fc-popover.card{position:absolute}.fc-bootstrap4 .fc-popover .card-body{padding:0}.fc-bootstrap4 .fc-time-grid .fc-slats table{background:none}.fc-toolbar{text-align:center}.fc-toolbar.fc-header-toolbar{margin-bottom:1em}.fc-toolbar.fc-footer-toolbar{margin-top:1em}.fc-toolbar .fc-left{float:left}.fc-toolbar .fc-right{float:right}.fc-toolbar .fc-center{display:inline-block}.fc .fc-toolbar>*>*{float:left;margin-left:.75em}.fc .fc-toolbar>*>:first-child{margin-left:0}.fc-toolbar h2{margin:0}.fc-toolbar button{position:relative}.fc-toolbar .fc-state-hover,.fc-toolbar .ui-state-hover{z-index:2}.fc-toolbar .fc-state-down{z-index:3}.fc-toolbar .fc-state-active,.fc-toolbar .ui-state-active{z-index:4}.fc-toolbar button:focus{z-index:5}.fc-view-container *,.fc-view-container :after,.fc-view-container :before{box-sizing:content-box}.fc-view,.fc-view>table{position:relative;z-index:1}.fc-basicDay-view .fc-content-skeleton,.fc-basicWeek-view .fc-content-skeleton{padding-bottom:1em}.fc-basic-view .fc-body .fc-row{min-height:4em}.fc-row.fc-rigid{overflow:hidden}.fc-row.fc-rigid .fc-content-skeleton{position:absolute;top:0;left:0;right:0}.fc-day-top.fc-other-month{opacity:.3}.fc-basic-view .fc-day-number,.fc-basic-view .fc-week-number{padding:2px}.fc-basic-view th.fc-day-number,.fc-basic-view th.fc-week-number{padding:0 2px}.fc-ltr .fc-basic-view .fc-day-top .fc-day-number{float:right}.fc-rtl .fc-basic-view .fc-day-top .fc-day-number{float:left}.fc-ltr .fc-basic-view .fc-day-top .fc-week-number{float:left;border-radius:0 0 3px 0}.fc-rtl .fc-basic-view .fc-day-top .fc-week-number{float:right;border-radius:0 0 0 3px}.fc-basic-view .fc-day-top .fc-week-number{min-width:1.5em;text-align:center;background-color:#f2f2f2;color:grey}.fc-basic-view td.fc-week-number{text-align:center}.fc-basic-view td.fc-week-number>*{display:inline-block;min-width:1.25em}.fc-agenda-view .fc-day-grid{position:relative;z-index:2}.fc-agenda-view .fc-day-grid .fc-row{min-height:3em}.fc-agenda-view .fc-day-grid .fc-row .fc-content-skeleton{padding-bottom:1em}.fc .fc-axis{vertical-align:middle;padding:0 4px;white-space:nowrap}.fc-ltr .fc-axis{text-align:right}.fc-rtl .fc-axis{text-align:left}.fc-time-grid,.fc-time-grid-container{position:relative;z-index:1}.fc-time-grid{min-height:100%}.fc-time-grid table{border:0 hidden transparent}.fc-time-grid>.fc-bg{z-index:1}.fc-time-grid .fc-slats,.fc-time-grid>hr{position:relative;z-index:2}.fc-time-grid .fc-content-col{position:relative}.fc-time-grid .fc-content-skeleton{position:absolute;z-index:3;top:0;left:0;right:0}.fc-time-grid .fc-business-container{position:relative;z-index:1}.fc-time-grid .fc-bgevent-container{position:relative;z-index:2}.fc-time-grid .fc-highlight-container{z-index:3}.fc-time-grid .fc-event-container{position:relative;z-index:4}.fc-time-grid .fc-now-indicator-line{z-index:5}.fc-time-grid .fc-helper-container{position:relative;z-index:6}.fc-time-grid .fc-slats td{height:1.5em;border-bottom:0}.fc-time-grid .fc-slats .fc-minor td{border-top-style:dotted}.fc-time-grid .fc-highlight-container{position:relative}.fc-time-grid .fc-highlight{position:absolute;left:0;right:0}.fc-ltr .fc-time-grid .fc-event-container{margin:0 2.5% 0 2px}.fc-rtl .fc-time-grid .fc-event-container{margin:0 2px 0 2.5%}.fc-time-grid .fc-bgevent,.fc-time-grid .fc-event{position:absolute;z-index:1}.fc-time-grid .fc-bgevent{left:0;right:0}.fc-v-event.fc-not-start{border-top-width:0;padding-top:1px;border-top-left-radius:0;border-top-right-radius:0}.fc-v-event.fc-not-end{border-bottom-width:0;padding-bottom:1px;border-bottom-left-radius:0;border-bottom-right-radius:0}.fc-time-grid-event{overflow:hidden}.fc-time-grid-event.fc-selected{overflow:visible}.fc-time-grid-event.fc-selected .fc-bg{display:none}.fc-time-grid-event .fc-content{overflow:hidden}.fc-time-grid-event .fc-time,.fc-time-grid-event .fc-title{padding:0 1px}.fc-time-grid-event .fc-time{font-size:.85em;white-space:nowrap}.fc-time-grid-event.fc-short .fc-content{white-space:nowrap}.fc-time-grid-event.fc-short .fc-time,.fc-time-grid-event.fc-short .fc-title{display:inline-block;vertical-align:top}.fc-time-grid-event.fc-short .fc-time span{display:none}.fc-time-grid-event.fc-short .fc-time:before{content:attr(data-start)}.fc-time-grid-event.fc-short .fc-time:after{content:"\A0-\A0"}.fc-time-grid-event.fc-short .fc-title{font-size:.85em;padding:0}.fc-time-grid-event.fc-allow-mouse-resize .fc-resizer{left:0;right:0;bottom:0;height:8px;overflow:hidden;line-height:8px;font-size:11px;font-family:monospace;text-align:center;cursor:s-resize}.fc-time-grid-event.fc-allow-mouse-resize .fc-resizer:after{content:"="}.fc-time-grid-event.fc-selected .fc-resizer{border-radius:5px;width:8px;height:8px;border:1px solid;border-color:inherit;background:#fff;left:50%;margin-left:-5px;bottom:-5px}.fc-time-grid .fc-now-indicator-line{border-top-width:1px;left:0;right:0}.fc-time-grid .fc-now-indicator-arrow{margin-top:-5px}.fc-ltr .fc-time-grid .fc-now-indicator-arrow{left:0;border-width:5px 0 5px 6px;border-top-color:transparent;border-bottom-color:transparent}.fc-rtl .fc-time-grid .fc-now-indicator-arrow{right:0;border-width:5px 6px 5px 0;border-top-color:transparent;border-bottom-color:transparent}.fc-event-dot{display:inline-block;width:10px;height:10px;border-radius:5px}.fc-rtl .fc-list-view{direction:rtl}.fc-list-view{border-width:1px;border-style:solid}.fc .fc-list-table{table-layout:auto}.fc-list-table td{border-width:1px 0 0;padding:8px 14px}.fc-list-table tr:first-child td{border-top-width:0}.fc-list-heading{border-bottom-width:1px}.fc-list-heading td{font-weight:700}.fc-ltr .fc-list-heading-main{float:left}.fc-ltr .fc-list-heading-alt,.fc-rtl .fc-list-heading-main{float:right}.fc-rtl .fc-list-heading-alt{float:left}.fc-list-item.fc-has-url{cursor:pointer}.fc-list-item-marker,.fc-list-item-time{white-space:nowrap;width:1px}.fc-ltr .fc-list-item-marker{padding-right:0}.fc-rtl .fc-list-item-marker{padding-left:0}.fc-list-item-title a{text-decoration:none;color:inherit}.fc-list-item-title a[href]:hover{text-decoration:underline}.fc-list-empty-wrap2{position:absolute;top:0;left:0;right:0;bottom:0}.fc-list-empty-wrap1{width:100%;height:100%;display:table}.fc-list-empty{display:table-cell;vertical-align:middle;text-align:center}.fc-unthemed .fc-list-empty{background-color:#eee}/*!
* Font Awesome Free 5.8.1 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
*/.fa,.fab,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adobe:before{content:"\f778"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-balance-scale:before{content:"\f24e"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-handshake:before{content:"\f2b5"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-wizard:before{content:"\f6e8"}.fa-haykal:before{content:"\f666"}.fa-hdd:before{content:"\f0a0"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-instagram:before{content:"\f16d"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-nintendo-switch:before{content:"\f418"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-volume:before{content:"\f2a0"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.bootstrap-datetimepicker-widget .btn[data-action=clear]:after,.bootstrap-datetimepicker-widget .btn[data-action=decrementHours]:after,.bootstrap-datetimepicker-widget .btn[data-action=decrementMinutes]:after,.bootstrap-datetimepicker-widget .btn[data-action=incrementHours]:after,.bootstrap-datetimepicker-widget .btn[data-action=incrementMinutes]:after,.bootstrap-datetimepicker-widget .btn[data-action=showHours]:after,.bootstrap-datetimepicker-widget .btn[data-action=showMinutes]:after,.bootstrap-datetimepicker-widget .btn[data-action=today]:after,.bootstrap-datetimepicker-widget .btn[data-action=togglePeriod]:after,.bootstrap-datetimepicker-widget .fc-unthemed .fc-button[data-action=clear]:after,.bootstrap-datetimepicker-widget .fc-unthemed .fc-button[data-action=decrementHours]:after,.bootstrap-datetimepicker-widget .fc-unthemed .fc-button[data-action=decrementMinutes]:after,.bootstrap-datetimepicker-widget .fc-unthemed .fc-button[data-action=incrementHours]:after,.bootstrap-datetimepicker-widget .fc-unthemed .fc-button[data-action=incrementMinutes]:after,.bootstrap-datetimepicker-widget .fc-unthemed .fc-button[data-action=showHours]:after,.bootstrap-datetimepicker-widget .fc-unthemed .fc-button[data-action=showMinutes]:after,.bootstrap-datetimepicker-widget .fc-unthemed .fc-button[data-action=today]:after,.bootstrap-datetimepicker-widget .fc-unthemed .fc-button[data-action=togglePeriod]:after,.bootstrap-datetimepicker-widget .picker-switch:after,.bootstrap-datetimepicker-widget table th.next:after,.bootstrap-datetimepicker-widget table th.prev:after,.fc-unthemed .bootstrap-datetimepicker-widget .fc-button[data-action=clear]:after,.fc-unthemed .bootstrap-datetimepicker-widget .fc-button[data-action=decrementHours]:after,.fc-unthemed .bootstrap-datetimepicker-widget .fc-button[data-action=decrementMinutes]:after,.fc-unthemed .bootstrap-datetimepicker-widget .fc-button[data-action=incrementHours]:after,.fc-unthemed .bootstrap-datetimepicker-widget .fc-button[data-action=incrementMinutes]:after,.fc-unthemed .bootstrap-datetimepicker-widget .fc-button[data-action=showHours]:after,.fc-unthemed .bootstrap-datetimepicker-widget .fc-button[data-action=showMinutes]:after,.fc-unthemed .bootstrap-datetimepicker-widget .fc-button[data-action=today]:after,.fc-unthemed .bootstrap-datetimepicker-widget .fc-button[data-action=togglePeriod]:after,.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}/*!
* Font Awesome Free 5.8.1 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
*/@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:400;font-display:auto;src:url(../fonts/fa-regular-400.eot);src:url(../fonts/fa-regular-400d41d.eot?#iefix) format("embedded-opentype"),url(../fonts/fa-regular-400.woff2) format("woff2"),url(../fonts/fa-regular-400.woff) format("woff"),url(../fonts/fa-regular-400.ttf) format("truetype"),url(../fonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-weight:400}/*!
* Font Awesome Free 5.8.1 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
*/@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:900;font-display:auto;src:url(../fonts/fa-solid-900.eot);src:url(../fonts/fa-solid-900d41d.eot?#iefix) format("embedded-opentype"),url(../fonts/fa-solid-900.woff2) format("woff2"),url(../fonts/fa-solid-900.woff) format("woff"),url(../fonts/fa-solid-900.ttf) format("truetype"),url(../fonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:Font Awesome\ 5 Free}.fa,.fas{font-weight:900}/*!
* Font Awesome Free 5.8.1 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
*/@font-face{font-family:Font Awesome\ 5 Brands;font-style:normal;font-weight:400;font-display:auto;src:url(../fonts/fa-brands-400.eot);src:url(../fonts/fa-brands-400d41d.eot?#iefix) format("embedded-opentype"),url(../fonts/fa-brands-400.woff2) format("woff2"),url(../fonts/fa-brands-400.woff) format("woff"),url(../fonts/fa-brands-400.ttf) format("truetype"),url(../fonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:Font Awesome\ 5 Brands}table.dataTable tbody td.selected,table.dataTable tbody th.selected,table.dataTable tbody tr.selected{color:#fff}table.dataTable tbody td.selected a,table.dataTable tbody th.selected a,table.dataTable tbody tr.selected a{color:#a2d4ed}table.dataTable tbody>tr.selected,table.dataTable tbody>tr>.selected{background-color:#47bac1}table.dataTable.display tbody>tr.odd.selected,table.dataTable.display tbody>tr.odd>.selected,table.dataTable.stripe tbody>tr.odd.selected,table.dataTable.stripe tbody>tr.odd>.selected{background-color:#45b6bc}table.dataTable.display tbody>tr.selected:hover,table.dataTable.display tbody>tr>.selected:hover,table.dataTable.hover tbody>tr.selected:hover,table.dataTable.hover tbody>tr>.selected:hover{background-color:#44b3ba}table.dataTable.display tbody>tr.selected>.sorting_1,table.dataTable.display tbody>tr.selected>.sorting_2,table.dataTable.display tbody>tr.selected>.sorting_3,table.dataTable.display tbody>tr>.selected,table.dataTable.order-column tbody>tr.selected>.sorting_1,table.dataTable.order-column tbody>tr.selected>.sorting_2,table.dataTable.order-column tbody>tr.selected>.sorting_3,table.dataTable.order-column tbody>tr>.selected{background-color:#46b6bd}table.dataTable.display tbody>tr.odd.selected>.sorting_1,table.dataTable.order-column.stripe tbody>tr.odd.selected>.sorting_1{background-color:#43b0b7}table.dataTable.display tbody>tr.odd.selected>.sorting_2,table.dataTable.order-column.stripe tbody>tr.odd.selected>.sorting_2{background-color:#44b1b8}table.dataTable.display tbody>tr.odd.selected>.sorting_3,table.dataTable.order-column.stripe tbody>tr.odd.selected>.sorting_3{background-color:#44b3b9}table.dataTable.display tbody>tr.even.selected>.sorting_1,table.dataTable.order-column.stripe tbody>tr.even.selected>.sorting_1{background-color:#46b6bd}table.dataTable.display tbody>tr.even.selected>.sorting_2,table.dataTable.order-column.stripe tbody>tr.even.selected>.sorting_2{background-color:#46b8bf}table.dataTable.display tbody>tr.even.selected>.sorting_3,table.dataTable.order-column.stripe tbody>tr.even.selected>.sorting_3{background-color:#47b9c0}table.dataTable.display tbody>tr.odd>.selected,table.dataTable.order-column.stripe tbody>tr.odd>.selected{background-color:#43b0b7}table.dataTable.display tbody>tr.even>.selected,table.dataTable.order-column.stripe tbody>tr.even>.selected{background-color:#46b6bd}table.dataTable.display tbody>tr.selected:hover>.sorting_1,table.dataTable.order-column.hover tbody>tr.selected:hover>.sorting_1{background-color:#41abb1}table.dataTable.display tbody>tr.selected:hover>.sorting_2,table.dataTable.order-column.hover tbody>tr.selected:hover>.sorting_2{background-color:#42acb3}table.dataTable.display tbody>tr.selected:hover>.sorting_3,table.dataTable.order-column.hover tbody>tr.selected:hover>.sorting_3{background-color:#43aeb5}table.dataTable.display tbody>tr:hover>.selected,table.dataTable.display tbody>tr>.selected:hover,table.dataTable.order-column.hover tbody>tr:hover>.selected,table.dataTable.order-column.hover tbody>tr>.selected:hover{background-color:#41abb1}table.dataTable tbody td.select-checkbox,table.dataTable tbody th.select-checkbox{position:relative}table.dataTable tbody td.select-checkbox:after,table.dataTable tbody td.select-checkbox:before,table.dataTable tbody th.select-checkbox:after,table.dataTable tbody th.select-checkbox:before{display:block;position:absolute;top:1.2em;left:50%;width:12px;height:12px;box-sizing:border-box}table.dataTable tbody td.select-checkbox:before,table.dataTable tbody th.select-checkbox:before{content:" ";margin-top:-6px;margin-left:-6px;border:1px solid #000;border-radius:3px}table.dataTable tr.selected td.select-checkbox:after,table.dataTable tr.selected th.select-checkbox:after{content:"\2714";margin-top:-11px;margin-left:-4px;text-align:center;text-shadow:1px 1px #b0bed9,-1px -1px #b0bed9,1px -1px #b0bed9,-1px 1px #b0bed9}div.dataTables_wrapper span.select-info,div.dataTables_wrapper span.select-item{margin-left:.5em}@media screen and (max-width:640px){div.dataTables_wrapper span.select-info,div.dataTables_wrapper span.select-item{margin-left:0;display:block}}.bootstrap-datetimepicker-widget .table td,.bootstrap-datetimepicker-widget .table th{border:0}.bootstrap-datetimepicker-widget table td,.bootstrap-datetimepicker-widget table td.day,.bootstrap-datetimepicker-widget table th{height:36px;line-height:36px;width:36px}.fc-unthemed .fc-button{background-image:none;box-shadow:none;text-shadow:none}.fc-unthemed .fc-button.fc-state-active{color:#fff;background-color:#39a2a9;border-color:#36999f}.fc-unthemed td,.fc-unthemed th{border-color:#e9ecef}.fc-unthemed .fc-event .fc-content{color:#fff;padding:.25rem}.fc-unthemed .fc-event,.fc-unthemed .fc-event-dot{background:#a180da;border-color:#a180da}.fc-unthemed .fc-toolbar h2{font-size:1.09375rem}.fc-unthemed td.fc-today{background:#f8f9fa}.fc-unthemed .fc-day-grid td:not(.fc-axis){padding:.25rem}.fc-unthemed .fc-day-grid td:not(.fc-axis).fc-event-container{padding:.2rem .5rem}.fc-unthemed .fc-axis{padding-top:.5rem;padding-bottom:.5rem}.fc-unthemed .fc-scroller .fc-content-col{padding:.5rem}.fc-unthemed th.fc-day-header,.fc-unthemed th.fc-week-number{padding:.75rem .25rem}.fc-unthemed .fc-list-heading .fc-widget-header{padding:.75rem 1.25rem}.fc-unthemed .fc-list-heading .fc-list-heading-alt,.fc-unthemed .fc-list-heading .fc-list-heading-main{font-size:1rem;font-weight:400}.fc-unthemed .fc-list-heading .fc-list-heading-main{font-weight:500;font-size:1rem}.fc-unthemed .fc-list-item td{padding:.75rem 1.25rem}.fc-unthemed .fc-list-item .fc-event-dot{border-radius:50%}.fc-row .fc-highlight-skeleton{opacity:1}.fc-row .fc-highlight-skeleton .fc-highlight{background:#ced4da}.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:700}.hljs-literal,.hljs-number,.hljs-tag .hljs-attr,.hljs-template-variable,.hljs-variable{color:teal}.hljs-doctag,.hljs-string{color:#d14}.hljs-section,.hljs-selector-id,.hljs-title{color:#900;font-weight:700}.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type{color:#458;font-weight:700}.hljs-attribute,.hljs-name,.hljs-tag{color:navy;font-weight:400}.hljs-link,.hljs-regexp{color:#009926}.hljs-bullet,.hljs-symbol{color:#990073}.hljs-built_in,.hljs-builtin-name{color:#0086b3}.hljs-meta{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.md-editor>textarea{background:#fff;padding:.5rem}.md-editor .md-preview{padding:.5rem}.fc-unthemed .md-editor .fc-button-group,.md-editor .btn-group,.md-editor .fc-unthemed .fc-button-group{margin:0 .25rem}.fc-unthemed .md-editor .fc-button-group .btn-default,.md-editor .btn-group .btn-default,.md-editor .fc-unthemed .fc-button-group .btn-default{background:#fff;border:1px solid #dee2e6}.md-editor .glyphicon:before{display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;-webkit-font-smoothing:antialiased;font-family:Font Awesome\ 5 Free;font-weight:900}.md-editor .glyphicon-bold:before{content:"\f032"}.md-editor .glyphicon-italic:before{content:"\f033"}.md-editor .glyphicon-header:before{content:"\f1dc"}.md-editor .glyphicon-link:before{content:"\f0c1"}.md-editor .glyphicon-picture:before{content:"\f1c5"}.md-editor .glyphicon-list:before{content:"\f0ca"}.md-editor .glyphicon-th-list:before{content:"\f0cb"}.md-editor .glyphicon-asterisk:before{content:"\f069"}.md-editor .glyphicon-comment:before{content:"\f27a"}.md-editor .glyphicon-search:before{content:"\f002"}.md-editor .glyphicon-fullscreen:before{content:"\f0b2"}.ql-snow .ql-editor{min-height:15rem;background:#fff}.ql-container,.ql-toolbar.ql-snow{font-family:Nunito Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,Arial,sans-serif}.ql-container{font-size:.875rem}.ql-bubble .ql-editor{padding:0}.ql-bubble .ql-editor.ql-blank:before{left:0;right:0}.ql-bubble .ql-tooltip{border-radius:.3rem;font-size:13px}.select2-container--bootstrap4{display:block}.select2-container--bootstrap4 .select2-selection{background-color:#fff;border:1px solid #ced4da;border-radius:.2rem;color:#495057;font-size:.875rem;outline:0}.select2-container--bootstrap4 .select2-selection.form-control{border-radius:.2rem}.select2-container--bootstrap4 .select2-search--dropdown .select2-search__field{background-color:#fff;border:1px solid #ced4da;border-radius:.2rem;color:#495057;font-size:.875rem}.select2-container--bootstrap4 .select2-search__field{outline:0}.select2-container--bootstrap4 .select2-search__field::-webkit-input-placeholder{color:#6c757d}.select2-container--bootstrap4 .select2-search__field:-moz-placeholder{color:#6c757d}.select2-container--bootstrap4 .select2-search__field::-moz-placeholder{color:#6c757d;opacity:1}.select2-container--bootstrap4 .select2-search__field:-ms-input-placeholder{color:#6c757d}.select2-container--bootstrap4 .select2-results__option{padding:.375rem .7rem;font-size:.875rem}.select2-container--bootstrap4 .select2-results__option[role=group]{padding:0}.select2-container--bootstrap4 .select2-results__option[aria-disabled=true]{color:#6c757d;cursor:not-allowed}.select2-container--bootstrap4 .select2-results__option[aria-selected=true]{background-color:#f8f9fa;color:#16181b}.select2-container--bootstrap4 .select2-results__option--highlighted[aria-selected]{background-color:#47bac1;color:#fff}.select2-container--bootstrap4 .select2-results__option .select2-results__option{padding:.375rem .7rem}.select2-container--bootstrap4 .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--bootstrap4 .select2-results__option .select2-results__option .select2-results__option{margin-left:-.7rem;padding-left:1.4rem}.select2-container--bootstrap4 .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-1.4rem;padding-left:2.1rem}.select2-container--bootstrap4 .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2.1rem;padding-left:2.8rem}.select2-container--bootstrap4 .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2.8rem;padding-left:3.5rem}.select2-container--bootstrap4 .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3.5rem;padding-left:4.2rem}.select2-container--bootstrap4 .select2-results__group{color:#000;display:block;padding:.5rem .7rem;font-size:.75rem;line-height:1;white-space:nowrap}.select2-container--bootstrap4.select2-container--focus .select2-selection,.select2-container--bootstrap4.select2-container--open .select2-selection{transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;border-color:#a6dee1}@media (prefers-reduced-motion:reduce){.select2-container--bootstrap4.select2-container--focus .select2-selection,.select2-container--bootstrap4.select2-container--open .select2-selection{transition:none}}.select2-container--bootstrap4.select2-container--open .select2-selection .select2-selection__arrow b{border-color:transparent transparent #6c757d;border-width:0 .25rem .25rem}.select2-container--bootstrap4.select2-container--open.select2-container--below .select2-selection{border-bottom-right-radius:0;border-bottom-left-radius:0;border-bottom-color:transparent}.select2-container--bootstrap4.select2-container--open.select2-container--above .select2-selection{border-top-left-radius:0;border-top-right-radius:0;border-top-color:transparent}.select2-container--bootstrap4 .select2-selection__clear{color:#6c757d;cursor:pointer;float:right;font-weight:700;margin-right:10px}.select2-container--bootstrap4 .select2-selection__clear:hover{color:#354052}.select2-container--bootstrap4.select2-container--disabled .select2-selection{border-color:#ced4da}.select2-container--bootstrap4.select2-container--disabled .select2-search__field,.select2-container--bootstrap4.select2-container--disabled .select2-selection{cursor:not-allowed}.select2-container--bootstrap4.select2-container--disabled .select2-selection,.select2-container--bootstrap4.select2-container--disabled .select2-selection--multiple .select2-selection__choice{background-color:#e9ecef}.select2-container--bootstrap4.select2-container--disabled .select2-selection--multiple .select2-selection__choice__remove,.select2-container--bootstrap4.select2-container--disabled .select2-selection__clear{display:none}.select2-container--bootstrap4 .select2-dropdown{border-color:#a6dee1;border-width:1px;overflow-x:hidden;margin-top:-1px}.select2-container--bootstrap4 .select2-dropdown--above{margin-top:1px}.select2-container--bootstrap4 .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--bootstrap4 .select2-selection--single{height:calc(1.8125rem + 2px);line-height:1;padding:.5rem 1.45rem .5rem .7rem}.select2-container--bootstrap4 .select2-selection--single .select2-selection__arrow{position:absolute;bottom:0;right:.7rem;top:0;width:.25rem}.select2-container--bootstrap4 .select2-selection--single .select2-selection__arrow b{border-color:#6c757d transparent transparent;border-style:solid;border-width:.25rem .25rem 0;height:0;left:0;margin-left:-.25rem;margin-top:-.125rem;position:absolute;top:50%;width:0}.select2-container--bootstrap4 .select2-selection--single .select2-selection__rendered{color:#495057;padding:0}.select2-container--bootstrap4 .select2-selection--single .select2-selection__placeholder{color:#6c757d}.select2-container--bootstrap4 .select2-selection--multiple{min-height:calc(1.8125rem + 2px);padding:0;height:auto}.select2-container--bootstrap4 .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;display:block;line-height:1;list-style:none;margin:0;overflow:hidden;padding:.5rem 0 0 .7rem;width:100%;text-overflow:ellipsis;white-space:nowrap}.select2-container--bootstrap4 .select2-selection--multiple .select2-selection__placeholder{color:#6c757d;float:left;margin-top:5px}.select2-container--bootstrap4 .select2-selection--multiple .select2-selection__choice{color:#495057;background:#e9ecef;border:1px solid #dee2e6;border-radius:.2rem;cursor:default;float:left;margin:-.2rem .25rem .3rem 0;padding:.2rem .5rem}.select2-container--bootstrap4 .select2-selection--multiple .select2-search--inline .select2-search__field{background:transparent;padding:0 .7rem;height:calc(1.8125rem + 2px)-2;line-height:1;margin-top:0;min-width:5em}.select2-container--bootstrap4 .select2-selection--multiple .select2-selection__choice__remove{color:#6c757d;cursor:pointer;display:inline-block;font-weight:700;margin-right:.25rem}.select2-container--bootstrap4 .select2-selection--multiple .select2-selection__choice__remove:hover{color:#354052}.select2-container--bootstrap4 .select2-selection--multiple .select2-selection__clear{margin-top:.5rem}.form-group-sm .select2-container--bootstrap4 .select2-selection--single,.input-group-sm .select2-container--bootstrap4 .select2-selection--single,.select2-container--bootstrap4 .select2-selection--single.input-sm{border-radius:.1rem;font-size:.75rem;height:calc(1.425rem + 2px);line-height:1;padding:.5rem .9rem .5rem .15rem}.form-group-sm .select2-container--bootstrap4 .select2-selection--single .select2-selection__arrow b,.input-group-sm .select2-container--bootstrap4 .select2-selection--single .select2-selection__arrow b,.select2-container--bootstrap4 .select2-selection--single.input-sm .select2-selection__arrow b{margin-left:-.5rem}.form-group-sm .select2-container--bootstrap4 .select2-selection--multiple,.input-group-sm .select2-container--bootstrap4 .select2-selection--multiple,.select2-container--bootstrap4 .select2-selection--multiple.input-sm{min-height:calc(1.425rem + 2px);border-radius:.1rem}.form-group-sm .select2-container--bootstrap4 .select2-selection--multiple .select2-selection__rendered,.input-group-sm .select2-container--bootstrap4 .select2-selection--multiple .select2-selection__rendered,.select2-container--bootstrap4 .select2-selection--multiple.input-sm .select2-selection__rendered{padding:.5rem .15rem 0 .5rem}.form-group-sm .select2-container--bootstrap4 .select2-selection--multiple .select2-selection__choice,.input-group-sm .select2-container--bootstrap4 .select2-selection--multiple .select2-selection__choice,.select2-container--bootstrap4 .select2-selection--multiple.input-sm .select2-selection__choice{font-size:.75rem;line-height:1;margin:0 0 0 .075rem;padding:0 .5rem}.form-group-sm .select2-container--bootstrap4 .select2-selection--multiple .select2-search--inline .select2-search__field,.input-group-sm .select2-container--bootstrap4 .select2-selection--multiple .select2-search--inline .select2-search__field,.select2-container--bootstrap4 .select2-selection--multiple.input-sm .select2-search--inline .select2-search__field{padding:0 .15rem;font-size:.75rem;height:calc(1.425rem + 2px)-2;line-height:1}.form-group-sm .select2-container--bootstrap4 .select2-selection--multiple .select2-selection__clear,.input-group-sm .select2-container--bootstrap4 .select2-selection--multiple .select2-selection__clear,.select2-container--bootstrap4 .select2-selection--multiple.input-sm .select2-selection__clear{margin-top:.5rem}.form-group-lg .select2-container--bootstrap4 .select2-selection--single,.input-group-lg .select2-container--bootstrap4 .select2-selection--single,.select2-container--bootstrap4 .select2-selection--single.input-lg{border-radius:.3rem;font-size:1rem;height:calc(2.2rem + 2px);line-height:1;padding:1rem 1.2875rem 1rem .35rem}.form-group-lg .select2-container--bootstrap4 .select2-selection--single .select2-selection__arrow,.input-group-lg .select2-container--bootstrap4 .select2-selection--single .select2-selection__arrow,.select2-container--bootstrap4 .select2-selection--single.input-lg .select2-selection__arrow{width:.3125rem}.form-group-lg .select2-container--bootstrap4 .select2-selection--single .select2-selection__arrow b,.input-group-lg .select2-container--bootstrap4 .select2-selection--single .select2-selection__arrow b,.select2-container--bootstrap4 .select2-selection--single.input-lg .select2-selection__arrow b{border-width:.3125rem .3125rem 0;margin-left:-1rem;margin-top:-.15625rem}.form-group-lg .select2-container--bootstrap4 .select2-selection--multiple,.input-group-lg .select2-container--bootstrap4 .select2-selection--multiple,.select2-container--bootstrap4 .select2-selection--multiple.input-lg{min-height:calc(2.2rem + 2px);border-radius:.3rem}.form-group-lg .select2-container--bootstrap4 .select2-selection--multiple .select2-selection__choice,.input-group-lg .select2-container--bootstrap4 .select2-selection--multiple .select2-selection__choice,.select2-container--bootstrap4 .select2-selection--multiple.input-lg .select2-selection__choice{font-size:1rem;line-height:1;border-radius:.2rem;margin:0 0 0 .175rem;padding:0 1rem}.form-group-lg .select2-container--bootstrap4 .select2-selection--multiple .select2-search--inline .select2-search__field,.input-group-lg .select2-container--bootstrap4 .select2-selection--multiple .select2-search--inline .select2-search__field,.select2-container--bootstrap4 .select2-selection--multiple.input-lg .select2-search--inline .select2-search__field{padding:0 .35rem;font-size:1rem;height:calc(2.2rem + 2px)-2;line-height:1}.form-group-lg .select2-container--bootstrap4 .select2-selection--multiple .select2-selection__clear,.input-group-lg .select2-container--bootstrap4 .select2-selection--multiple .select2-selection__clear,.select2-container--bootstrap4 .select2-selection--multiple.input-lg .select2-selection__clear{margin-top:1rem}.input-group-lg .select2-container--bootstrap4 .select2-selection.select2-container--open .select2-selection--single .select2-selection__arrow b,.select2-container--bootstrap4 .select2-selection.input-lg.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #6c757d;border-width:0 .3125rem .3125rem}.select2-container--bootstrap4[dir=rtl] .select2-selection--single{padding-left:1.45rem;padding-right:.7rem}.select2-container--bootstrap4[dir=rtl] .select2-selection--single .select2-selection__rendered{padding-right:0;padding-left:0;text-align:right}.select2-container--bootstrap4[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--bootstrap4[dir=rtl] .select2-selection--single .select2-selection__arrow{left:.7rem;right:auto}.select2-container--bootstrap4[dir=rtl] .select2-selection--single .select2-selection__arrow b{margin-left:0}.select2-container--bootstrap4[dir=rtl] .select2-selection--multiple .select2-search--inline,.select2-container--bootstrap4[dir=rtl] .select2-selection--multiple .select2-selection__choice,.select2-container--bootstrap4[dir=rtl] .select2-selection--multiple .select2-selection__placeholder{float:right}.select2-container--bootstrap4[dir=rtl] .select2-selection--multiple .select2-selection__choice{margin-left:0;margin-right:.35rem}.select2-container--bootstrap4[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.has-warning .select2-dropdown,.has-warning .select2-selection{border-color:#fcc100}.has-warning .select2-container--focus .select2-selection,.has-warning .select2-container--open .select2-selection,.has-warning.select2-drop-active{border-color:#c99a00}.has-warning.select2-drop-active.select2-drop.select2-drop-above{border-top-color:#c99a00}.has-error .select2-dropdown,.has-error .select2-selection{border-color:#f44455}.has-error .select2-container--focus .select2-selection,.has-error .select2-container--open .select2-selection,.has-error.select2-drop-active{border-color:#f11429}.has-error.select2-drop-active.select2-drop.select2-drop-above{border-top-color:#f11429}.has-success .select2-dropdown,.has-success .select2-selection{border-color:#5fc27e}.has-success .select2-container--focus .select2-selection,.has-success .select2-container--open .select2-selection,.has-success.select2-drop-active{border-color:#42ac63}.has-success.select2-drop-active.select2-drop.select2-drop-above{border-top-color:#42ac63}.input-group>.select2-hidden-accessible:first-child+.select2-container--bootstrap4>.selection>.select2-selection,.input-group>.select2-hidden-accessible:first-child+.select2-container--bootstrap4>.selection>.select2-selection.form-control{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.select2-hidden-accessible:not(:first-child)+.select2-container--bootstrap4:not(:last-child)>.selection>.select2-selection,.input-group>.select2-hidden-accessible:not(:first-child)+.select2-container--bootstrap4:not(:last-child)>.selection>.select2-selection.form-control{border-radius:0}.input-group>.select2-hidden-accessible:not(:first-child):not(:last-child)+.select2-container--bootstrap4:last-child>.selection>.select2-selection,.input-group>.select2-hidden-accessible:not(:first-child):not(:last-child)+.select2-container--bootstrap4:last-child>.selection>.select2-selection.form-control{border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.select2-container--bootstrap4{display:table;table-layout:fixed;position:relative;z-index:2;width:100%;margin-bottom:0}.input-group>.select2-container--bootstrap4>.selection>.select2-selection.form-control{float:none}.input-group>.select2-container--bootstrap4.select2-container--focus,.input-group>.select2-container--bootstrap4.select2-container--open{z-index:3}.fc-unthemed .input-group>.select2-container--bootstrap4 .input-group-btn .fc-button,.input-group>.select2-container--bootstrap4,.input-group>.select2-container--bootstrap4 .input-group-btn,.input-group>.select2-container--bootstrap4 .input-group-btn .btn,.input-group>.select2-container--bootstrap4 .input-group-btn .fc-unthemed .fc-button{vertical-align:top}.form-control.select2-hidden-accessible{position:absolute!important;width:1px!important}@media (min-width:576px){.form-inline .select2-container--bootstrap4{display:inline-block}}.select2-container--bootstrap4 .select2-selection--multiple .select2-search--inline .select2-search__field{padding:0}.select2-selection__rendered .select2-selection__choice:first-child{margin-left:0}.simplebar-scrollbar:before{background:#fff}#toast-container>div{opacity:.9}.wizard{background:#fff;background-color:#fff;background-clip:border-box;border:1px solid #e5e9f2;box-shadow:0 .1rem .2rem rgba(0,0,0,.05);border-radius:.2rem!important;margin-bottom:2rem}.wizard.sw-theme-default>ul.step-anchor>li.active>a{color:#47bac1!important}.wizard.sw-theme-default>ul.step-anchor>li.active>a:after{background:#47bac1}.wizard.sw-theme-default>ul.step-anchor>li.done>a{color:#80cfd4!important}.wizard.sw-theme-default>ul.step-anchor>li.done>a:after{background:#80cfd4!important}.wizard.sw-theme-arrows>ul.step-anchor>li.active>a{border-color:#47bac1!important;background:#47bac1!important}.wizard.sw-theme-arrows>ul.step-anchor>li.active>a:after{border-left-color:#47bac1!important}.wizard.sw-theme-arrows>ul.step-anchor>li.done>a{border-color:#80cfd4!important;background:#80cfd4!important}.wizard.sw-theme-arrows>ul.step-anchor>li.done>a:after{border-left-color:#80cfd4!important}.wizard.sw-theme-arrows .sw-toolbar-bottom,.wizard.sw-theme-default .sw-toolbar-bottom{background:#fff;border-top:1px solid #dee2e6}.wizard.sw-theme-arrows .step-content,.wizard.sw-theme-default .step-content{padding:10px}.wizard-primary.sw-theme-default>ul.step-anchor>li.active>a{color:#47bac1!important}.wizard-primary.sw-theme-default>ul.step-anchor>li.active>a:after{background:#47bac1}.wizard-primary.sw-theme-default>ul.step-anchor>li.done>a{color:#80cfd4!important}.wizard-primary.sw-theme-default>ul.step-anchor>li.done>a:after{background:#80cfd4!important}.wizard-primary.sw-theme-arrows>ul.step-anchor>li.active>a{border-color:#47bac1!important;background:#47bac1!important}.wizard-primary.sw-theme-arrows>ul.step-anchor>li.active>a:after{border-left-color:#47bac1!important}.wizard-primary.sw-theme-arrows>ul.step-anchor>li.done>a{border-color:#80cfd4!important;background:#80cfd4!important}.wizard-primary.sw-theme-arrows>ul.step-anchor>li.done>a:after{border-left-color:#80cfd4!important}.wizard-secondary.sw-theme-default>ul.step-anchor>li.active>a{color:#a180da!important}.wizard-secondary.sw-theme-default>ul.step-anchor>li.active>a:after{background:#a180da}.wizard-secondary.sw-theme-default>ul.step-anchor>li.done>a{color:#cdbbeb!important}.wizard-secondary.sw-theme-default>ul.step-anchor>li.done>a:after{background:#cdbbeb!important}.wizard-secondary.sw-theme-arrows>ul.step-anchor>li.active>a{border-color:#a180da!important;background:#a180da!important}.wizard-secondary.sw-theme-arrows>ul.step-anchor>li.active>a:after{border-left-color:#a180da!important}.wizard-secondary.sw-theme-arrows>ul.step-anchor>li.done>a{border-color:#cdbbeb!important;background:#cdbbeb!important}.wizard-secondary.sw-theme-arrows>ul.step-anchor>li.done>a:after{border-left-color:#cdbbeb!important}.wizard-success.sw-theme-default>ul.step-anchor>li.active>a{color:#5fc27e!important}.wizard-success.sw-theme-default>ul.step-anchor>li.active>a:after{background:#5fc27e}.wizard-success.sw-theme-default>ul.step-anchor>li.done>a{color:#96d7ab!important}.wizard-success.sw-theme-default>ul.step-anchor>li.done>a:after{background:#96d7ab!important}.wizard-success.sw-theme-arrows>ul.step-anchor>li.active>a{border-color:#5fc27e!important;background:#5fc27e!important}.wizard-success.sw-theme-arrows>ul.step-anchor>li.active>a:after{border-left-color:#5fc27e!important}.wizard-success.sw-theme-arrows>ul.step-anchor>li.done>a{border-color:#96d7ab!important;background:#96d7ab!important}.wizard-success.sw-theme-arrows>ul.step-anchor>li.done>a:after{border-left-color:#96d7ab!important}.wizard-info.sw-theme-default>ul.step-anchor>li.active>a{color:#5b7dff!important}.wizard-info.sw-theme-default>ul.step-anchor>li.active>a:after{background:#5b7dff}.wizard-info.sw-theme-default>ul.step-anchor>li.done>a{color:#a8baff!important}.wizard-info.sw-theme-default>ul.step-anchor>li.done>a:after{background:#a8baff!important}.wizard-info.sw-theme-arrows>ul.step-anchor>li.active>a{border-color:#5b7dff!important;background:#5b7dff!important}.wizard-info.sw-theme-arrows>ul.step-anchor>li.active>a:after{border-left-color:#5b7dff!important}.wizard-info.sw-theme-arrows>ul.step-anchor>li.done>a{border-color:#a8baff!important;background:#a8baff!important}.wizard-info.sw-theme-arrows>ul.step-anchor>li.done>a:after{border-left-color:#a8baff!important}.wizard-warning.sw-theme-default>ul.step-anchor>li.active>a{color:#fcc100!important}.wizard-warning.sw-theme-default>ul.step-anchor>li.active>a:after{background:#fcc100}.wizard-warning.sw-theme-default>ul.step-anchor>li.done>a{color:#ffd54a!important}.wizard-warning.sw-theme-default>ul.step-anchor>li.done>a:after{background:#ffd54a!important}.wizard-warning.sw-theme-arrows>ul.step-anchor>li.active>a{border-color:#fcc100!important;background:#fcc100!important}.wizard-warning.sw-theme-arrows>ul.step-anchor>li.active>a:after{border-left-color:#fcc100!important}.wizard-warning.sw-theme-arrows>ul.step-anchor>li.done>a{border-color:#ffd54a!important;background:#ffd54a!important}.wizard-warning.sw-theme-arrows>ul.step-anchor>li.done>a:after{border-left-color:#ffd54a!important}.wizard-danger.sw-theme-default>ul.step-anchor>li.active>a{color:#f44455!important}.wizard-danger.sw-theme-default>ul.step-anchor>li.active>a:after{background:#f44455}.wizard-danger.sw-theme-default>ul.step-anchor>li.done>a{color:#f88c97!important}.wizard-danger.sw-theme-default>ul.step-anchor>li.done>a:after{background:#f88c97!important}.wizard-danger.sw-theme-arrows>ul.step-anchor>li.active>a{border-color:#f44455!important;background:#f44455!important}.wizard-danger.sw-theme-arrows>ul.step-anchor>li.active>a:after{border-left-color:#f44455!important}.wizard-danger.sw-theme-arrows>ul.step-anchor>li.done>a{border-color:#f88c97!important;background:#f88c97!important}.wizard-danger.sw-theme-arrows>ul.step-anchor>li.done>a:after{border-left-color:#f88c97!important}.wizard-light.sw-theme-default>ul.step-anchor>li.active>a{color:#f8f9fa!important}.wizard-light.sw-theme-default>ul.step-anchor>li.active>a:after{background:#f8f9fa}.wizard-light.sw-theme-default>ul.step-anchor>li.done>a{color:#fff!important}.wizard-light.sw-theme-default>ul.step-anchor>li.done>a:after{background:#fff!important}.wizard-light.sw-theme-arrows>ul.step-anchor>li.active>a{border-color:#f8f9fa!important;background:#f8f9fa!important}.wizard-light.sw-theme-arrows>ul.step-anchor>li.active>a:after{border-left-color:#f8f9fa!important}.wizard-light.sw-theme-arrows>ul.step-anchor>li.done>a{border-color:#fff!important;background:#fff!important}.wizard-light.sw-theme-arrows>ul.step-anchor>li.done>a:after{border-left-color:#fff!important}.wizard-dark.sw-theme-default>ul.step-anchor>li.active>a{color:#354052!important}.wizard-dark.sw-theme-default>ul.step-anchor>li.active>a:after{background:#354052}.wizard-dark.sw-theme-default>ul.step-anchor>li.done>a{color:#536480!important}.wizard-dark.sw-theme-default>ul.step-anchor>li.done>a:after{background:#536480!important}.wizard-dark.sw-theme-arrows>ul.step-anchor>li.active>a{border-color:#354052!important;background:#354052!important}.wizard-dark.sw-theme-arrows>ul.step-anchor>li.active>a:after{border-left-color:#354052!important}.wizard-dark.sw-theme-arrows>ul.step-anchor>li.done>a{border-color:#536480!important;background:#536480!important}.wizard-dark.sw-theme-arrows>ul.step-anchor>li.done>a:after{border-left-color:#536480!important}.wizard-tertiary.sw-theme-default>ul.step-anchor>li.active>a{color:#5fc27e!important}.wizard-tertiary.sw-theme-default>ul.step-anchor>li.active>a:after{background:#5fc27e}.wizard-tertiary.sw-theme-default>ul.step-anchor>li.done>a{color:#96d7ab!important}.wizard-tertiary.sw-theme-default>ul.step-anchor>li.done>a:after{background:#96d7ab!important}.wizard-tertiary.sw-theme-arrows>ul.step-anchor>li.active>a{border-color:#5fc27e!important;background:#5fc27e!important}.wizard-tertiary.sw-theme-arrows>ul.step-anchor>li.active>a:after{border-left-color:#5fc27e!important}.wizard-tertiary.sw-theme-arrows>ul.step-anchor>li.done>a{border-color:#96d7ab!important;background:#96d7ab!important}.wizard-tertiary.sw-theme-arrows>ul.step-anchor>li.done>a:after{border-left-color:#96d7ab!important}.wizard .step-content{padding:1.25rem!important}.wizard.sw-theme-arrows>ul.step-anchor{background:#fff;border-top:1px solid #dee2e6}.sw-theme-arrows>ul.step-anchor>li a,.sw-theme-arrows>ul.step-anchor>li a:hover{background:#fff}.sw-theme-arrows>ul.step-anchor>li a:after,.sw-theme-arrows>ul.step-anchor>li a:hover:after{border-left-color:#fff}
================================================
FILE: public/admin-theme/css/grapes-builder.css
================================================
:root {
--builder-background: #5e35b1;
--icon-selected: #b388ff;
--text-color: #d1c4e9;
--color3: #eed7ec;
}
.gjs-one-bg {
background-color: var(--builder-background);
}
.gjs-one-color {
color: var(--builder-background);
}
.gjs-one-color-h:hover {
color: var(--builder-background);
}
.gjs-two-bg {
background-color: var(--text-color);
}
.gjs-two-color {
color: var(--text-color);
}
.gjs-two-color-h:hover {
color: var(--text-color);
}
.gjs-three-bg {
background-color: var(--color3);
}
.gjs-three-color {
color: var(--color3);
}
.gjs-three-color-h:hover {
color: var(--color3);
}
.gjs-four-bg {
background-color: var(--icon-selected);
}
.gjs-four-color {
color: var(--icon-selected);
}
.gjs-four-color-h:hover {
color: var(--icon-selected);
}
.icon-add-comp::before,
.icon-comp100::before,
.icon-comp50::before,
.icon-comp30::before,
.icon-rm::before {
content: "";
}
.icon-add-comp {
background: url("../images/grapes-builder/icon-sq-a.png") no-repeat center;
}
.icon-comp100 {
background: url("../images/grapes-builder/icon-sq-1.png") no-repeat center;
}
.icon-comp50 {
background: url("../images/grapes-builder/icon-sq-2.png") no-repeat center;
}
.icon-comp30 {
background: url("../images/grapes-builder/icon-sq-3.png") no-repeat center;
}
.icon-rm {
background: url("../images/grapes-builder/icon-sq-r.png") no-repeat center;
}
.icons-flex {
background-size: 70% 65% !important;
height: 25px;
width: 27px;
opacity: 0.9;
}
.icon-dir-row {
background: url("../images/grapes-builder/flex-dir-row.png") no-repeat center;
}
.icon-dir-row-rev {
background: url("../images/grapes-builder/flex-dir-row-rev.png") no-repeat
center;
}
.icon-dir-col {
background: url("../images/grapes-builder/flex-dir-col.png") no-repeat center;
}
.icon-dir-col-rev {
background: url("../images/grapes-builder/flex-dir-col-rev.png") no-repeat
center;
}
.icon-just-start {
background: url("../images/grapes-builder/flex-just-start.png") no-repeat
center;
}
.icon-just-end {
background: url("../images/grapes-builder/flex-just-end.png") no-repeat center;
}
.icon-just-sp-bet {
background: url("../images/grapes-builder/flex-just-sp-bet.png") no-repeat
center;
}
.icon-just-sp-ar {
background: url("../images/grapes-builder/flex-just-sp-ar.png") no-repeat
center;
}
.icon-just-sp-cent {
background: url("../images/grapes-builder/flex-just-sp-cent.png") no-repeat
center;
}
.icon-al-start {
background: url("../images/grapes-builder/flex-al-start.png") no-repeat center;
}
.icon-al-end {
background: url("../images/grapes-builder/flex-al-end.png") no-repeat center;
}
.icon-al-str {
background: url("../images/grapes-builder/flex-al-str.png") no-repeat center;
}
.icon-al-center {
background: url("../images/grapes-builder/flex-al-center.png") no-repeat
center;
}
[data-tooltip]::after {
background: rgba(51, 51, 51, 0.9);
}
.gjs-pn-commands {
min-height: 40px;
}
#gjs-sm-float,
.gjs-pn-views .fa-cog {
display: none;
}
.gjs-am-preview-cont {
height: 100px;
width: 100%;
}
.gjs-logo-version {
background-color: #756467;
}
.gjs-pn-panel.gjs-pn-views {
padding: 0;
border-bottom: none;
}
.gjs-pn-btn.gjs-pn-active {
box-shadow: none;
}
.gjs-pn-views .gjs-pn-btn {
margin: 0;
height: 40px;
padding: 10px;
width: 33.3333%;
border-bottom: 2px solid rgba(0, 0, 0, 0.3);
}
.CodeMirror {
min-height: 450px;
margin-bottom: 8px;
}
.grp-handler-close {
background-color: transparent;
color: #ddd;
}
.grp-handler-cp-wrap {
border-color: transparent;
}
================================================
FILE: public/admin-theme/fonts/stylesheet.css
================================================
@font-face {
font-family: 'George Rounded';
src: url('GeorgeRoundedRegular.woff2') format('woff2'),
url('GeorgeRoundedRegular.woff') format('woff');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'George Rounded';
src: url('GeorgeRoundedLightItalic.woff2') format('woff2'),
url('GeorgeRoundedLightItalic.woff') format('woff');
font-weight: 300;
font-style: italic;
}
@font-face {
font-family: 'George Rounded';
src: url('GeorgeRoundedSemiboldItalic.woff2') format('woff2'),
url('GeorgeRoundedSemiboldItalic.woff') format('woff');
font-weight: 600;
font-style: italic;
}
@font-face {
font-family: 'George Rounded';
src: url('GeorgeRoundedLight.woff2') format('woff2'),
url('GeorgeRoundedLight.woff') format('woff');
font-weight: 300;
font-style: normal;
}
@font-face {
font-family: 'George Rounded';
src: url('GeorgeRoundedBold.woff2') format('woff2'),
url('GeorgeRoundedBold.woff') format('woff');
font-weight: bold;
font-style: normal;
}
@font-face {
font-family: 'George Rounded';
src: url('GeorgeRoundedBoldItalic.woff2') format('woff2'),
url('GeorgeRoundedBoldItalic.woff') format('woff');
font-weight: bold;
font-style: italic;
}
@font-face {
font-family: 'George Rounded';
src: url('GeorgeRoundedSemibold.woff2') format('woff2'),
url('GeorgeRoundedSemibold.woff') format('woff');
font-weight: 600;
font-style: normal;
}
@font-face {
font-family: 'George Rounded';
src: url('GeorgeRoundedItalic.woff2') format('woff2'),
url('GeorgeRoundedItalic.woff') format('woff');
font-weight: normal;
font-style: italic;
}
/* Nunito */
@font-face {
font-family: 'Nunito Sans';
src: url('NunitoSans-ExtraBoldItalic.woff2') format('woff2'),
url('NunitoSans-ExtraBoldItalic.woff') format('woff');
font-weight: 800;
font-style: italic;
}
@font-face {
font-family: 'Nunito Sans';
src: url('NunitoSans-Bold.woff2') format('woff2'),
url('NunitoSans-Bold.woff') format('woff');
font-weight: bold;
font-style: normal;
}
@font-face {
font-family: 'Nunito Sans';
src: url('NunitoSans-ExtraLightItalic.woff2') format('woff2'),
url('NunitoSans-ExtraLightItalic.woff') format('woff');
font-weight: 200;
font-style: italic;
}
@font-face {
font-family: 'Nunito Sans';
src: url('NunitoSans-Regular.woff2') format('woff2'),
url('NunitoSans-Regular.woff') format('woff');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'Nunito Sans';
src: url('NunitoSans-Black.woff2') format('woff2'),
url('NunitoSans-Black.woff') format('woff');
font-weight: 900;
font-style: normal;
}
@font-face {
font-family: 'Nunito Sans';
src: url('NunitoSans-LightItalic.woff2') format('woff2'),
url('NunitoSans-LightItalic.woff') format('woff');
font-weight: 300;
font-style: italic;
}
@font-face {
font-family: 'Nunito Sans';
src: url('NunitoSans-BlackItalic.woff2') format('woff2'),
url('NunitoSans-BlackItalic.woff') format('woff');
font-weight: 900;
font-style: italic;
}
@font-face {
font-family: 'Nunito Sans';
src: url('NunitoSans-Italic.woff2') format('woff2'),
url('NunitoSans-Italic.woff') format('woff');
font-weight: normal;
font-style: italic;
}
@font-face {
font-family: 'Nunito Sans';
src: url('NunitoSans-SemiBoldItalic.woff2') format('woff2'),
url('NunitoSans-SemiBoldItalic.woff') format('woff');
font-weight: 600;
font-style: italic;
}
@font-face {
font-family: 'Nunito Sans';
src: url('NunitoSans-ExtraLight.woff2') format('woff2'),
url('NunitoSans-ExtraLight.woff') format('woff');
font-weight: 200;
font-style: normal;
}
@font-face {
font-family: 'Nunito Sans';
src: url('NunitoSans-BoldItalic.woff2') format('woff2'),
url('NunitoSans-BoldItalic.woff') format('woff');
font-weight: bold;
font-style: italic;
}
@font-face {
font-family: 'Nunito Sans';
src: url('NunitoSans-SemiBold.woff2') format('woff2'),
url('NunitoSans-SemiBold.woff') format('woff');
font-weight: 600;
font-style: normal;
}
@font-face {
font-family: 'Nunito Sans';
src: url('NunitoSans-Light.woff2') format('woff2'),
url('NunitoSans-Light.woff') format('woff');
font-weight: 300;
font-style: normal;
}
@font-face {
font-family: 'Nunito Sans';
src: url('NunitoSans-ExtraBold.woff2') format('woff2'),
url('NunitoSans-ExtraBold.woff') format('woff');
font-weight: 800;
font-style: normal;
}
/* Visby Round CF */
@font-face {
font-family: 'Visby Round CF Demi';
src: url('VisbyRoundCF-DemiBold.woff2') format('woff2'),
url('VisbyRoundCF-DemiBold.woff') format('woff');
font-weight: 600;
font-style: normal;
}
@font-face {
font-family: 'Visby Round CF Extra';
src: url('VisbyRoundCF-ExtraBold.woff2') format('woff2'),
url('VisbyRoundCF-ExtraBold.woff') format('woff');
font-weight: 800;
font-style: normal;
}
@font-face {
font-family: 'Visby Round CF Extra';
src: url('VisbyRoundCF-ExtraLight.woff2') format('woff2'),
url('VisbyRoundCF-ExtraLight.woff') format('woff');
font-weight: 200;
font-style: normal;
}
@font-face {
font-family: 'Visby Round CF';
src: url('VisbyRoundCF-Regular.woff2') format('woff2'),
url('VisbyRoundCF-Regular.woff') format('woff');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'Visby Round CF';
src: url('VisbyRoundCF-Light.woff2') format('woff2'),
url('VisbyRoundCF-Light.woff') format('woff');
font-weight: 300;
font-style: normal;
}
@font-face {
font-family: 'Visby Round CF';
src: url('VisbyRoundCF-Heavy.woff2') format('woff2'),
url('VisbyRoundCF-Heavy.woff') format('woff');
font-weight: 900;
font-style: normal;
}
@font-face {
font-family: 'Visby Round CF';
src: url('VisbyRoundCF-Bold.woff2') format('woff2'),
url('VisbyRoundCF-Bold.woff') format('woff');
font-weight: bold;
font-style: normal;
}
@font-face {
font-family: 'Visby Round CF';
src: url('VisbyRoundCF-Medium.woff2') format('woff2'),
url('VisbyRoundCF-Medium.woff') format('woff');
font-weight: 500;
font-style: normal;
}
================================================
FILE: public/admin-theme/js/app.js
================================================
!function(t){var e={};function l(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,l),i.l=!0,i.exports}l.m=t,l.c=e,l.d=function(t,e,n){l.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},l.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},l.t=function(t,e){if(1&e&&(t=l(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(l.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)l.d(n,i,function(e){return t[e]}.bind(null,i));return n},l.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return l.d(e,"a",e),e},l.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},l.p="",l(l.s=136)}([function(t,e){t.exports=function(t){function e(t){"undefined"!=typeof console&&(console.error||console.log)("[Script Loader]",t)}try{"undefined"!=typeof execScript&&"undefined"!=typeof attachEvent&&"undefined"==typeof addEventListener?execScript(t):"undefined"!=typeof eval?eval.call(null,t):e("EvalError: No eval function available")}catch(t){e(t)}}},function(t,e,l){(function(e){t.exports=e.jQuery=l(25)}).call(this,l(2))},function(t,e){var l;l=function(){return this}();try{l=l||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(l=window)}t.exports=l},function(t,e,l){var n=l(5);t.exports=function(t){if(!n(t))throw TypeError(t+" is not an object!");return t}},function(t,e){var l=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=l)},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e,l){var n=l(17)("wks"),i=l(18),a=l(4).Symbol,r="function"==typeof a;(t.exports=function(t){return n[t]||(n[t]=r&&a[t]||(r?a:i)("Symbol."+t))}).store=n},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e){var l=t.exports={version:"2.6.5"};"number"==typeof __e&&(__e=l)},function(t,e){var l=Math.ceil,n=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?n:l)(t)}},function(t,e){t.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},function(t,e,l){"use strict";var n,i,a=l(33),r=RegExp.prototype.exec,o=String.prototype.replace,s=r,c=(n=/a/,i=/b*/g,r.call(n,"a"),r.call(i,"a"),0!==n.lastIndex||0!==i.lastIndex),u=void 0!==/()??/.exec("")[1];(c||u)&&(s=function(t){var e,l,n,i,s=this;return u&&(l=new RegExp("^"+s.source+"$(?!\\s)",a.call(s))),c&&(e=s.lastIndex),n=r.call(s,t),c&&n&&(s.lastIndex=s.global?n.index+n[0].length:e),u&&n&&n.length>1&&o.call(n[0],l,function(){for(i=1;i")}),d=function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var l="ab".split(t);return 2===l.length&&"a"===l[0]&&"b"===l[1]}();t.exports=function(t,e,l){var h=o(t),f=!a(function(){var e={};return e[h]=function(){return 7},7!=""[t](e)}),p=f?!a(function(){var e=!1,l=/a/;return l.exec=function(){return e=!0,null},"split"===t&&(l.constructor={},l.constructor[c]=function(){return l}),l[h](""),!e}):void 0;if(!f||!p||"replace"===t&&!u||"split"===t&&!d){var g=/./[h],m=l(r,h,""[t],function(t,e,l,n,i){return e.exec===s?f&&!i?{done:!0,value:g.call(e,l,n)}:{done:!0,value:t.call(l,e,n)}:{done:!1}}),b=m[0],v=m[1];n(String.prototype,t,b),i(RegExp.prototype,h,2==e?function(t,e){return v.call(t,this,e)}:function(t){return v.call(t,this)})}}},function(t,e){var l={}.toString;t.exports=function(t){return l.call(t).slice(8,-1)}},function(t,e,l){var n=l(8),i=l(4),a=i["__core-js_shared__"]||(i["__core-js_shared__"]={});(t.exports=function(t,e){return a[t]||(a[t]=void 0!==e?e:{})})("versions",[]).push({version:n.version,mode:l(29)?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},function(t,e){var l=0,n=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++l+n).toString(36))}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e,l){"use strict";var n=l(31)(!0);t.exports=function(t,e,l){return e+(l?n(t,e).length:1)}},function(t,e,l){var n=l(9),i=Math.min;t.exports=function(t){return t>0?i(n(t),9007199254740991):0}},function(t,e,l){var n=l(4),i=l(12),a=l(41),r=l(18)("src"),o=l(42),s=(""+o).split("toString");l(8).inspectSource=function(t){return o.call(t)},(t.exports=function(t,e,l,o){var c="function"==typeof l;c&&(a(l,"name")||i(l,"name",e)),t[e]!==l&&(c&&(a(l,r)||i(l,r,t[e]?""+t[e]:s.join(String(e)))),t===n?t[e]=l:o?t[e]?t[e]=l:i(t,e,l):(delete t[e],i(t,e,l)))})(Function.prototype,"toString",function(){return"function"==typeof this&&this[r]||o.call(this)})},function(t,e,l){(function(t){t.exports=function(){"use strict";var e,l;function n(){return e.apply(null,arguments)}function i(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function a(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function r(t){return void 0===t}function o(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function s(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function c(t,e){var l,n=[];for(l=0;l>>0,n=0;n0)for(l=0;l=0;return(a?l?"+":"":"-")+Math.pow(10,Math.max(0,i)).toString().substr(1)+n}var B=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,H=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,q={},Z={};function z(t,e,l,n){var i=n;"string"==typeof n&&(i=function(){return this[n]()}),t&&(Z[t]=i),e&&(Z[e[0]]=function(){return F(i.apply(this,arguments),e[1],e[2])}),l&&(Z[l]=function(){return this.localeData().ordinal(i.apply(this,arguments),t)})}function $(t,e){return t.isValid()?(e=Y(e,t.localeData()),q[e]=q[e]||function(t){var e,l,n,i=t.match(B);for(e=0,l=i.length;e=0&&H.test(t);)t=t.replace(H,n),H.lastIndex=0,l-=1;return t}var W=/\d/,V=/\d\d/,U=/\d{3}/,G=/\d{4}/,X=/[+-]?\d{6}/,K=/\d\d?/,Q=/\d\d\d\d?/,J=/\d\d\d\d\d\d?/,tt=/\d{1,3}/,et=/\d{1,4}/,lt=/[+-]?\d{1,6}/,nt=/\d+/,it=/[+-]?\d+/,at=/Z|[+-]\d\d:?\d\d/gi,rt=/Z|[+-]\d\d(?::?\d\d)?/gi,ot=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,st={};function ct(t,e,l){st[t]=A(e)?e:function(t,n){return t&&l?l:e}}function ut(t,e){return u(st,t)?st[t](e._strict,e._locale):new RegExp(dt(t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,l,n,i){return e||l||n||i})))}function dt(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var ht={};function ft(t,e){var l,n=e;for("string"==typeof t&&(t=[t]),o(e)&&(n=function(t,l){l[e]=w(t)}),l=0;l68?1900:2e3)};var Dt,Mt=At("FullYear",!0);function At(t,e){return function(l){return null!=l?(jt(this,t,l),n.updateOffset(this,e),this):Et(this,t)}}function Et(t,e){return t.isValid()?t._d["get"+(t._isUTC?"UTC":"")+e]():NaN}function jt(t,e,l){t.isValid()&&!isNaN(l)&&("FullYear"===e&&Tt(t.year())&&1===t.month()&&29===t.date()?t._d["set"+(t._isUTC?"UTC":"")+e](l,t.month(),It(l,t.month())):t._d["set"+(t._isUTC?"UTC":"")+e](l))}function It(t,e){if(isNaN(t)||isNaN(e))return NaN;var l,n=(e%(l=12)+l)%l;return t+=(e-n)/12,1===n?Tt(t)?29:28:31-n%7%2}Dt=Array.prototype.indexOf?Array.prototype.indexOf:function(t){var e;for(e=0;e=0){var l=Array.prototype.slice.call(arguments);l[0]=t+400,e=new Date(Date.UTC.apply(null,l)),isFinite(e.getUTCFullYear())&&e.setUTCFullYear(t)}else e=new Date(Date.UTC.apply(null,arguments));return e}function Zt(t,e,l){var n=7+e-l,i=(7+qt(t,0,n).getUTCDay()-e)%7;return-i+n-1}function zt(t,e,l,n,i){var a,r,o=(7+l-n)%7,s=Zt(t,n,i),c=1+7*(e-1)+o+s;return c<=0?r=Ct(a=t-1)+c:c>Ct(t)?(a=t+1,r=c-Ct(t)):(a=t,r=c),{year:a,dayOfYear:r}}function $t(t,e,l){var n,i,a=Zt(t.year(),e,l),r=Math.floor((t.dayOfYear()-a-1)/7)+1;return r<1?(i=t.year()-1,n=r+Yt(i,e,l)):r>Yt(t.year(),e,l)?(n=r-Yt(t.year(),e,l),i=t.year()+1):(i=t.year(),n=r),{week:n,year:i}}function Yt(t,e,l){var n=Zt(t,e,l),i=Zt(t+1,e,l);return(Ct(t)-n+i)/7}function Wt(t,e){return t.slice(e,7).concat(t.slice(0,e))}z("w",["ww",2],"wo","week"),z("W",["WW",2],"Wo","isoWeek"),P("week","w"),P("isoWeek","W"),N("week",5),N("isoWeek",5),ct("w",K),ct("ww",K,V),ct("W",K),ct("WW",K,V),pt(["w","ww","W","WW"],function(t,e,l,n){e[n.substr(0,1)]=w(t)}),z("d",0,"do","day"),z("dd",0,0,function(t){return this.localeData().weekdaysMin(this,t)}),z("ddd",0,0,function(t){return this.localeData().weekdaysShort(this,t)}),z("dddd",0,0,function(t){return this.localeData().weekdays(this,t)}),z("e",0,0,"weekday"),z("E",0,0,"isoWeekday"),P("day","d"),P("weekday","e"),P("isoWeekday","E"),N("day",11),N("weekday",11),N("isoWeekday",11),ct("d",K),ct("e",K),ct("E",K),ct("dd",function(t,e){return e.weekdaysMinRegex(t)}),ct("ddd",function(t,e){return e.weekdaysShortRegex(t)}),ct("dddd",function(t,e){return e.weekdaysRegex(t)}),pt(["dd","ddd","dddd"],function(t,e,l,n){var i=l._locale.weekdaysParse(t,n,l._strict);null!=i?e.d=i:f(l).invalidWeekday=t}),pt(["d","e","E"],function(t,e,l,n){e[n]=w(t)});var Vt="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Ut="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Gt="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Xt=ot,Kt=ot,Qt=ot;function Jt(){function t(t,e){return e.length-t.length}var e,l,n,i,a,r=[],o=[],s=[],c=[];for(e=0;e<7;e++)l=h([2e3,1]).day(e),n=this.weekdaysMin(l,""),i=this.weekdaysShort(l,""),a=this.weekdays(l,""),r.push(n),o.push(i),s.push(a),c.push(n),c.push(i),c.push(a);for(r.sort(t),o.sort(t),s.sort(t),c.sort(t),e=0;e<7;e++)o[e]=dt(o[e]),s[e]=dt(s[e]),c[e]=dt(c[e]);this._weekdaysRegex=new RegExp("^("+c.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+r.join("|")+")","i")}function te(){return this.hours()%12||12}function ee(t,e){z(t,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)})}function le(t,e){return e._meridiemParse}z("H",["HH",2],0,"hour"),z("h",["hh",2],0,te),z("k",["kk",2],0,function(){return this.hours()||24}),z("hmm",0,0,function(){return""+te.apply(this)+F(this.minutes(),2)}),z("hmmss",0,0,function(){return""+te.apply(this)+F(this.minutes(),2)+F(this.seconds(),2)}),z("Hmm",0,0,function(){return""+this.hours()+F(this.minutes(),2)}),z("Hmmss",0,0,function(){return""+this.hours()+F(this.minutes(),2)+F(this.seconds(),2)}),ee("a",!0),ee("A",!1),P("hour","h"),N("hour",13),ct("a",le),ct("A",le),ct("H",K),ct("h",K),ct("k",K),ct("HH",K,V),ct("hh",K,V),ct("kk",K,V),ct("hmm",Q),ct("hmmss",J),ct("Hmm",Q),ct("Hmmss",J),ft(["H","HH"],yt),ft(["k","kk"],function(t,e,l){var n=w(t);e[yt]=24===n?0:n}),ft(["a","A"],function(t,e,l){l._isPm=l._locale.isPM(t),l._meridiem=t}),ft(["h","hh"],function(t,e,l){e[yt]=w(t),f(l).bigHour=!0}),ft("hmm",function(t,e,l){var n=t.length-2;e[yt]=w(t.substr(0,n)),e[xt]=w(t.substr(n)),f(l).bigHour=!0}),ft("hmmss",function(t,e,l){var n=t.length-4,i=t.length-2;e[yt]=w(t.substr(0,n)),e[xt]=w(t.substr(n,2)),e[_t]=w(t.substr(i)),f(l).bigHour=!0}),ft("Hmm",function(t,e,l){var n=t.length-2;e[yt]=w(t.substr(0,n)),e[xt]=w(t.substr(n))}),ft("Hmmss",function(t,e,l){var n=t.length-4,i=t.length-2;e[yt]=w(t.substr(0,n)),e[xt]=w(t.substr(n,2)),e[_t]=w(t.substr(i))});var ne,ie=At("Hours",!0),ae={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Ot,monthsShort:Lt,week:{dow:0,doy:6},weekdays:Vt,weekdaysMin:Gt,weekdaysShort:Ut,meridiemParse:/[ap]\.?m?\.?/i},re={},oe={};function se(t){return t?t.toLowerCase().replace("_","-"):t}function ce(e){var l=null;if(!re[e]&&void 0!==t&&t&&t.exports)try{l=ne._abbr,!function(){var t=new Error("Cannot find module 'undefined'");throw t.code="MODULE_NOT_FOUND",t}(),ue(l)}catch(t){}return re[e]}function ue(t,e){var l;return t&&((l=r(e)?he(t):de(t,e))?ne=l:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+t+" not found. Did you forget to load it?")),ne._abbr}function de(t,e){if(null!==e){var l,n=ae;if(e.abbr=t,null!=re[t])M("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),n=re[t]._config;else if(null!=e.parentLocale)if(null!=re[e.parentLocale])n=re[e.parentLocale]._config;else{if(null==(l=ce(e.parentLocale)))return oe[e.parentLocale]||(oe[e.parentLocale]=[]),oe[e.parentLocale].push({name:t,config:e}),null;n=l._config}return re[t]=new j(E(n,e)),oe[t]&&oe[t].forEach(function(t){de(t.name,t.config)}),ue(t),re[t]}return delete re[t],null}function he(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return ne;if(!i(t)){if(e=ce(t))return e;t=[t]}return function(t){for(var e,l,n,i,a=0;a0;){if(n=ce(i.slice(0,e).join("-")))return n;if(l&&l.length>=e&&S(i,l,!0)>=e-1)break;e--}a++}return ne}(t)}function fe(t){var e,l=t._a;return l&&-2===f(t).overflow&&(e=l[bt]<0||l[bt]>11?bt:l[vt]<1||l[vt]>It(l[mt],l[bt])?vt:l[yt]<0||l[yt]>24||24===l[yt]&&(0!==l[xt]||0!==l[_t]||0!==l[wt])?yt:l[xt]<0||l[xt]>59?xt:l[_t]<0||l[_t]>59?_t:l[wt]<0||l[wt]>999?wt:-1,f(t)._overflowDayOfYear&&(evt)&&(e=vt),f(t)._overflowWeeks&&-1===e&&(e=St),f(t)._overflowWeekday&&-1===e&&(e=kt),f(t).overflow=e),t}function pe(t,e,l){return null!=t?t:null!=e?e:l}function ge(t){var e,l,i,a,r,o=[];if(!t._d){for(i=function(t){var e=new Date(n.now());return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}(t),t._w&&null==t._a[vt]&&null==t._a[bt]&&function(t){var e,l,n,i,a,r,o,s;if(null!=(e=t._w).GG||null!=e.W||null!=e.E)a=1,r=4,l=pe(e.GG,t._a[mt],$t(Ee(),1,4).year),n=pe(e.W,1),((i=pe(e.E,1))<1||i>7)&&(s=!0);else{a=t._locale._week.dow,r=t._locale._week.doy;var c=$t(Ee(),a,r);l=pe(e.gg,t._a[mt],c.year),n=pe(e.w,c.week),null!=e.d?((i=e.d)<0||i>6)&&(s=!0):null!=e.e?(i=e.e+a,(e.e<0||e.e>6)&&(s=!0)):i=a}n<1||n>Yt(l,a,r)?f(t)._overflowWeeks=!0:null!=s?f(t)._overflowWeekday=!0:(o=zt(l,n,i,a,r),t._a[mt]=o.year,t._dayOfYear=o.dayOfYear)}(t),null!=t._dayOfYear&&(r=pe(t._a[mt],i[mt]),(t._dayOfYear>Ct(r)||0===t._dayOfYear)&&(f(t)._overflowDayOfYear=!0),l=qt(r,0,t._dayOfYear),t._a[bt]=l.getUTCMonth(),t._a[vt]=l.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=o[e]=i[e];for(;e<7;e++)t._a[e]=o[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[yt]&&0===t._a[xt]&&0===t._a[_t]&&0===t._a[wt]&&(t._nextDay=!0,t._a[yt]=0),t._d=(t._useUTC?qt:function(t,e,l,n,i,a,r){var o;return t<100&&t>=0?(o=new Date(t+400,e,l,n,i,a,r),isFinite(o.getFullYear())&&o.setFullYear(t)):o=new Date(t,e,l,n,i,a,r),o}).apply(null,o),a=t._useUTC?t._d.getUTCDay():t._d.getDay(),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[yt]=24),t._w&&void 0!==t._w.d&&t._w.d!==a&&(f(t).weekdayMismatch=!0)}}var me=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,be=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ve=/Z|[+-]\d\d(?::?\d\d)?/,ye=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],xe=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],_e=/^\/?Date\((\-?\d+)/i;function we(t){var e,l,n,i,a,r,o=t._i,s=me.exec(o)||be.exec(o);if(s){for(f(t).iso=!0,e=0,l=ye.length;e0&&f(t).unusedInput.push(r),o=o.slice(o.indexOf(l)+l.length),c+=l.length),Z[a]?(l?f(t).empty=!1:f(t).unusedTokens.push(a),gt(a,l,t)):t._strict&&!l&&f(t).unusedTokens.push(a);f(t).charsLeftOver=s-c,o.length>0&&f(t).unusedInput.push(o),t._a[yt]<=12&&!0===f(t).bigHour&&t._a[yt]>0&&(f(t).bigHour=void 0),f(t).parsedDateParts=t._a.slice(0),f(t).meridiem=t._meridiem,t._a[yt]=(u=t._locale,d=t._a[yt],null==(h=t._meridiem)?d:null!=u.meridiemHour?u.meridiemHour(d,h):null!=u.isPM?((p=u.isPM(h))&&d<12&&(d+=12),p||12!==d||(d=0),d):d),ge(t),fe(t)}else Te(t);else we(t);var u,d,h,p}function Me(t){var e=t._i,l=t._f;return t._locale=t._locale||he(t._l),null===e||void 0===l&&""===e?g({nullInput:!0}):("string"==typeof e&&(t._i=e=t._locale.preparse(e)),x(e)?new y(fe(e)):(s(e)?t._d=e:i(l)?function(t){var e,l,n,i,a;if(0===t._f.length)return f(t).invalidFormat=!0,void(t._d=new Date(NaN));for(i=0;ithis?this:t:g()});function Pe(t,e){var l,n;if(1===e.length&&i(e[0])&&(e=e[0]),!e.length)return Ee();for(l=e[0],n=1;n=0?new Date(t+400,e,l)-rl:new Date(t,e,l).valueOf()}function cl(t,e,l){return t<100&&t>=0?Date.UTC(t+400,e,l)-rl:Date.UTC(t,e,l)}function ul(t,e){z(0,[t,t.length],0,e)}function dl(t,e,l,n,i){var a;return null==t?$t(this,n,i).year:(a=Yt(t,n,i),e>a&&(e=a),function(t,e,l,n,i){var a=zt(t,e,l,n,i),r=qt(a.year,0,a.dayOfYear);return this.year(r.getUTCFullYear()),this.month(r.getUTCMonth()),this.date(r.getUTCDate()),this}.call(this,t,e,l,n,i))}z(0,["gg",2],0,function(){return this.weekYear()%100}),z(0,["GG",2],0,function(){return this.isoWeekYear()%100}),ul("gggg","weekYear"),ul("ggggg","weekYear"),ul("GGGG","isoWeekYear"),ul("GGGGG","isoWeekYear"),P("weekYear","gg"),P("isoWeekYear","GG"),N("weekYear",1),N("isoWeekYear",1),ct("G",it),ct("g",it),ct("GG",K,V),ct("gg",K,V),ct("GGGG",et,G),ct("gggg",et,G),ct("GGGGG",lt,X),ct("ggggg",lt,X),pt(["gggg","ggggg","GGGG","GGGGG"],function(t,e,l,n){e[n.substr(0,2)]=w(t)}),pt(["gg","GG"],function(t,e,l,i){e[i]=n.parseTwoDigitYear(t)}),z("Q",0,"Qo","quarter"),P("quarter","Q"),N("quarter",7),ct("Q",W),ft("Q",function(t,e){e[bt]=3*(w(t)-1)}),z("D",["DD",2],"Do","date"),P("date","D"),N("date",9),ct("D",K),ct("DD",K,V),ct("Do",function(t,e){return t?e._dayOfMonthOrdinalParse||e._ordinalParse:e._dayOfMonthOrdinalParseLenient}),ft(["D","DD"],vt),ft("Do",function(t,e){e[vt]=w(t.match(K)[0])});var hl=At("Date",!0);z("DDD",["DDDD",3],"DDDo","dayOfYear"),P("dayOfYear","DDD"),N("dayOfYear",4),ct("DDD",tt),ct("DDDD",U),ft(["DDD","DDDD"],function(t,e,l){l._dayOfYear=w(t)}),z("m",["mm",2],0,"minute"),P("minute","m"),N("minute",14),ct("m",K),ct("mm",K,V),ft(["m","mm"],xt);var fl=At("Minutes",!1);z("s",["ss",2],0,"second"),P("second","s"),N("second",15),ct("s",K),ct("ss",K,V),ft(["s","ss"],_t);var pl,gl=At("Seconds",!1);for(z("S",0,0,function(){return~~(this.millisecond()/100)}),z(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),z(0,["SSS",3],0,"millisecond"),z(0,["SSSS",4],0,function(){return 10*this.millisecond()}),z(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),z(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),z(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),z(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),z(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),P("millisecond","ms"),N("millisecond",16),ct("S",tt,W),ct("SS",tt,V),ct("SSS",tt,U),pl="SSSS";pl.length<=9;pl+="S")ct(pl,nt);function ml(t,e){e[wt]=w(1e3*("0."+t))}for(pl="S";pl.length<=9;pl+="S")ft(pl,ml);var bl=At("Milliseconds",!1);z("z",0,0,"zoneAbbr"),z("zz",0,0,"zoneName");var vl=y.prototype;function yl(t){return t}vl.add=Ke,vl.calendar=function(t,e){var l=t||Ee(),i=qe(l,this).startOf("day"),a=n.calendarFormat(this,i)||"sameElse",r=e&&(A(e[a])?e[a].call(this,l):e[a]);return this.format(r||this.localeData().calendar(a,this,Ee(l)))},vl.clone=function(){return new y(this)},vl.diff=function(t,e,l){var n,i,a;if(!this.isValid())return NaN;if(!(n=qe(t,this)).isValid())return NaN;switch(i=6e4*(n.utcOffset()-this.utcOffset()),e=O(e)){case"year":a=Je(this,n)/12;break;case"month":a=Je(this,n);break;case"quarter":a=Je(this,n)/3;break;case"second":a=(this-n)/1e3;break;case"minute":a=(this-n)/6e4;break;case"hour":a=(this-n)/36e5;break;case"day":a=(this-n-i)/864e5;break;case"week":a=(this-n-i)/6048e5;break;default:a=this-n}return l?a:_(a)},vl.endOf=function(t){var e;if(void 0===(t=O(t))||"millisecond"===t||!this.isValid())return this;var l=this._isUTC?cl:sl;switch(t){case"year":e=l(this.year()+1,0,1)-1;break;case"quarter":e=l(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":e=l(this.year(),this.month()+1,1)-1;break;case"week":e=l(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":e=l(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":e=l(this.year(),this.month(),this.date()+1)-1;break;case"hour":e=this._d.valueOf(),e+=al-ol(e+(this._isUTC?0:this.utcOffset()*il),al)-1;break;case"minute":e=this._d.valueOf(),e+=il-ol(e,il)-1;break;case"second":e=this._d.valueOf(),e+=nl-ol(e,nl)-1}return this._d.setTime(e),n.updateOffset(this,!0),this},vl.format=function(t){t||(t=this.isUtc()?n.defaultFormatUtc:n.defaultFormat);var e=$(this,t);return this.localeData().postformat(e)},vl.from=function(t,e){return this.isValid()&&(x(t)&&t.isValid()||Ee(t).isValid())?We({to:this,from:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},vl.fromNow=function(t){return this.from(Ee(),t)},vl.to=function(t,e){return this.isValid()&&(x(t)&&t.isValid()||Ee(t).isValid())?We({from:this,to:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},vl.toNow=function(t){return this.to(Ee(),t)},vl.get=function(t){return A(this[t=O(t)])?this[t]():this},vl.invalidAt=function(){return f(this).overflow},vl.isAfter=function(t,e){var l=x(t)?t:Ee(t);return!(!this.isValid()||!l.isValid())&&("millisecond"===(e=O(e)||"millisecond")?this.valueOf()>l.valueOf():l.valueOf()9999?$(l,e?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):A(Date.prototype.toISOString)?e?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",$(l,"Z")):$(l,e?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},vl.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var t="moment",e="";this.isLocal()||(t=0===this.utcOffset()?"moment.utc":"moment.parseZone",e="Z");var l="["+t+'("]',n=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",i=e+'[")]';return this.format(l+n+"-MM-DD[T]HH:mm:ss.SSS"+i)},vl.toJSON=function(){return this.isValid()?this.toISOString():null},vl.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},vl.unix=function(){return Math.floor(this.valueOf()/1e3)},vl.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},vl.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},vl.year=Mt,vl.isLeapYear=function(){return Tt(this.year())},vl.weekYear=function(t){return dl.call(this,t,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},vl.isoWeekYear=function(t){return dl.call(this,t,this.isoWeek(),this.isoWeekday(),1,4)},vl.quarter=vl.quarters=function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},vl.month=Nt,vl.daysInMonth=function(){return It(this.year(),this.month())},vl.week=vl.weeks=function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},vl.isoWeek=vl.isoWeeks=function(t){var e=$t(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},vl.weeksInYear=function(){var t=this.localeData()._week;return Yt(this.year(),t.dow,t.doy)},vl.isoWeeksInYear=function(){return Yt(this.year(),1,4)},vl.date=hl,vl.day=vl.days=function(t){if(!this.isValid())return null!=t?this:NaN;var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=function(t,e){return"string"!=typeof t?t:isNaN(t)?"number"==typeof(t=e.weekdaysParse(t))?t:null:parseInt(t,10)}(t,this.localeData()),this.add(t-e,"d")):e},vl.weekday=function(t){if(!this.isValid())return null!=t?this:NaN;var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},vl.isoWeekday=function(t){if(!this.isValid())return null!=t?this:NaN;if(null!=t){var e=function(t,e){return"string"==typeof t?e.weekdaysParse(t)%7||7:isNaN(t)?null:t}(t,this.localeData());return this.day(this.day()%7?e:e-7)}return this.day()||7},vl.dayOfYear=function(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},vl.hour=vl.hours=ie,vl.minute=vl.minutes=fl,vl.second=vl.seconds=gl,vl.millisecond=vl.milliseconds=bl,vl.utcOffset=function(t,e,l){var i,a=this._offset||0;if(!this.isValid())return null!=t?this:NaN;if(null!=t){if("string"==typeof t){if(null===(t=He(rt,t)))return this}else Math.abs(t)<16&&!l&&(t*=60);return!this._isUTC&&e&&(i=Ze(this)),this._offset=t,this._isUTC=!0,null!=i&&this.add(i,"m"),a!==t&&(!e||this._changeInProgress?Xe(this,We(t-a,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,n.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?a:Ze(this)},vl.utc=function(t){return this.utcOffset(0,t)},vl.local=function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(Ze(this),"m")),this},vl.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var t=He(at,this._i);null!=t?this.utcOffset(t):this.utcOffset(0,!0)}return this},vl.hasAlignedHourOffset=function(t){return!!this.isValid()&&(t=t?Ee(t).utcOffset():0,(this.utcOffset()-t)%60==0)},vl.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},vl.isLocal=function(){return!!this.isValid()&&!this._isUTC},vl.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},vl.isUtc=ze,vl.isUTC=ze,vl.zoneAbbr=function(){return this._isUTC?"UTC":""},vl.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},vl.dates=C("dates accessor is deprecated. Use date instead.",hl),vl.months=C("months accessor is deprecated. Use month instead",Nt),vl.years=C("years accessor is deprecated. Use year instead",Mt),vl.zone=C("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}),vl.isDSTShifted=C("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!r(this._isDSTShifted))return this._isDSTShifted;var t={};if(b(t,this),(t=Me(t))._a){var e=t._isUTC?h(t._a):Ee(t._a);this._isDSTShifted=this.isValid()&&S(t._a,e.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted});var xl=j.prototype;function _l(t,e,l,n){var i=he(),a=h().set(n,e);return i[l](a,t)}function wl(t,e,l){if(o(t)&&(e=t,t=void 0),t=t||"",null!=e)return _l(t,e,l,"month");var n,i=[];for(n=0;n<12;n++)i[n]=_l(t,n,l,"month");return i}function Sl(t,e,l,n){"boolean"==typeof t?(o(e)&&(l=e,e=void 0),e=e||""):(l=e=t,t=!1,o(e)&&(l=e,e=void 0),e=e||"");var i,a=he(),r=t?a._week.dow:0;if(null!=l)return _l(e,(l+r)%7,n,"day");var s=[];for(i=0;i<7;i++)s[i]=_l(e,(i+r)%7,n,"day");return s}xl.calendar=function(t,e,l){var n=this._calendar[t]||this._calendar.sameElse;return A(n)?n.call(e,l):n},xl.longDateFormat=function(t){var e=this._longDateFormat[t],l=this._longDateFormat[t.toUpperCase()];return e||!l?e:(this._longDateFormat[t]=l.replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t])},xl.invalidDate=function(){return this._invalidDate},xl.ordinal=function(t){return this._ordinal.replace("%d",t)},xl.preparse=yl,xl.postformat=yl,xl.relativeTime=function(t,e,l,n){var i=this._relativeTime[l];return A(i)?i(t,e,l,n):i.replace(/%d/i,t)},xl.pastFuture=function(t,e){var l=this._relativeTime[t>0?"future":"past"];return A(l)?l(e):l.replace(/%s/i,e)},xl.set=function(t){var e,l;for(l in t)A(e=t[l])?this[l]=e:this["_"+l]=e;this._config=t,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},xl.months=function(t,e){return t?i(this._months)?this._months[t.month()]:this._months[(this._months.isFormat||Pt).test(e)?"format":"standalone"][t.month()]:i(this._months)?this._months:this._months.standalone},xl.monthsShort=function(t,e){return t?i(this._monthsShort)?this._monthsShort[t.month()]:this._monthsShort[Pt.test(e)?"format":"standalone"][t.month()]:i(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},xl.monthsParse=function(t,e,l){var n,i,a;if(this._monthsParseExact)return function(t,e,l){var n,i,a,r=t.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],n=0;n<12;++n)a=h([2e3,n]),this._shortMonthsParse[n]=this.monthsShort(a,"").toLocaleLowerCase(),this._longMonthsParse[n]=this.months(a,"").toLocaleLowerCase();return l?"MMM"===e?-1!==(i=Dt.call(this._shortMonthsParse,r))?i:null:-1!==(i=Dt.call(this._longMonthsParse,r))?i:null:"MMM"===e?-1!==(i=Dt.call(this._shortMonthsParse,r))?i:-1!==(i=Dt.call(this._longMonthsParse,r))?i:null:-1!==(i=Dt.call(this._longMonthsParse,r))?i:-1!==(i=Dt.call(this._shortMonthsParse,r))?i:null}.call(this,t,e,l);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),n=0;n<12;n++){if(i=h([2e3,n]),l&&!this._longMonthsParse[n]&&(this._longMonthsParse[n]=new RegExp("^"+this.months(i,"").replace(".","")+"$","i"),this._shortMonthsParse[n]=new RegExp("^"+this.monthsShort(i,"").replace(".","")+"$","i")),l||this._monthsParse[n]||(a="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[n]=new RegExp(a.replace(".",""),"i")),l&&"MMMM"===e&&this._longMonthsParse[n].test(t))return n;if(l&&"MMM"===e&&this._shortMonthsParse[n].test(t))return n;if(!l&&this._monthsParse[n].test(t))return n}},xl.monthsRegex=function(t){return this._monthsParseExact?(u(this,"_monthsRegex")||Ht.call(this),t?this._monthsStrictRegex:this._monthsRegex):(u(this,"_monthsRegex")||(this._monthsRegex=Bt),this._monthsStrictRegex&&t?this._monthsStrictRegex:this._monthsRegex)},xl.monthsShortRegex=function(t){return this._monthsParseExact?(u(this,"_monthsRegex")||Ht.call(this),t?this._monthsShortStrictRegex:this._monthsShortRegex):(u(this,"_monthsShortRegex")||(this._monthsShortRegex=Ft),this._monthsShortStrictRegex&&t?this._monthsShortStrictRegex:this._monthsShortRegex)},xl.week=function(t){return $t(t,this._week.dow,this._week.doy).week},xl.firstDayOfYear=function(){return this._week.doy},xl.firstDayOfWeek=function(){return this._week.dow},xl.weekdays=function(t,e){var l=i(this._weekdays)?this._weekdays:this._weekdays[t&&!0!==t&&this._weekdays.isFormat.test(e)?"format":"standalone"];return!0===t?Wt(l,this._week.dow):t?l[t.day()]:l},xl.weekdaysMin=function(t){return!0===t?Wt(this._weekdaysMin,this._week.dow):t?this._weekdaysMin[t.day()]:this._weekdaysMin},xl.weekdaysShort=function(t){return!0===t?Wt(this._weekdaysShort,this._week.dow):t?this._weekdaysShort[t.day()]:this._weekdaysShort},xl.weekdaysParse=function(t,e,l){var n,i,a;if(this._weekdaysParseExact)return function(t,e,l){var n,i,a,r=t.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],n=0;n<7;++n)a=h([2e3,1]).day(n),this._minWeekdaysParse[n]=this.weekdaysMin(a,"").toLocaleLowerCase(),this._shortWeekdaysParse[n]=this.weekdaysShort(a,"").toLocaleLowerCase(),this._weekdaysParse[n]=this.weekdays(a,"").toLocaleLowerCase();return l?"dddd"===e?-1!==(i=Dt.call(this._weekdaysParse,r))?i:null:"ddd"===e?-1!==(i=Dt.call(this._shortWeekdaysParse,r))?i:null:-1!==(i=Dt.call(this._minWeekdaysParse,r))?i:null:"dddd"===e?-1!==(i=Dt.call(this._weekdaysParse,r))?i:-1!==(i=Dt.call(this._shortWeekdaysParse,r))?i:-1!==(i=Dt.call(this._minWeekdaysParse,r))?i:null:"ddd"===e?-1!==(i=Dt.call(this._shortWeekdaysParse,r))?i:-1!==(i=Dt.call(this._weekdaysParse,r))?i:-1!==(i=Dt.call(this._minWeekdaysParse,r))?i:null:-1!==(i=Dt.call(this._minWeekdaysParse,r))?i:-1!==(i=Dt.call(this._weekdaysParse,r))?i:-1!==(i=Dt.call(this._shortWeekdaysParse,r))?i:null}.call(this,t,e,l);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),n=0;n<7;n++){if(i=h([2e3,1]).day(n),l&&!this._fullWeekdaysParse[n]&&(this._fullWeekdaysParse[n]=new RegExp("^"+this.weekdays(i,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[n]=new RegExp("^"+this.weekdaysShort(i,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[n]=new RegExp("^"+this.weekdaysMin(i,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[n]||(a="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[n]=new RegExp(a.replace(".",""),"i")),l&&"dddd"===e&&this._fullWeekdaysParse[n].test(t))return n;if(l&&"ddd"===e&&this._shortWeekdaysParse[n].test(t))return n;if(l&&"dd"===e&&this._minWeekdaysParse[n].test(t))return n;if(!l&&this._weekdaysParse[n].test(t))return n}},xl.weekdaysRegex=function(t){return this._weekdaysParseExact?(u(this,"_weekdaysRegex")||Jt.call(this),t?this._weekdaysStrictRegex:this._weekdaysRegex):(u(this,"_weekdaysRegex")||(this._weekdaysRegex=Xt),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)},xl.weekdaysShortRegex=function(t){return this._weekdaysParseExact?(u(this,"_weekdaysRegex")||Jt.call(this),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(u(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Kt),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},xl.weekdaysMinRegex=function(t){return this._weekdaysParseExact?(u(this,"_weekdaysRegex")||Jt.call(this),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(u(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Qt),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},xl.isPM=function(t){return"p"===(t+"").toLowerCase().charAt(0)},xl.meridiem=function(t,e,l){return t>11?l?"pm":"PM":l?"am":"AM"},ue("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,l=1===w(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+l}}),n.lang=C("moment.lang is deprecated. Use moment.locale instead.",ue),n.langData=C("moment.langData is deprecated. Use moment.localeData instead.",he);var kl=Math.abs;function Cl(t,e,l,n){var i=We(e,l);return t._milliseconds+=n*i._milliseconds,t._days+=n*i._days,t._months+=n*i._months,t._bubble()}function Tl(t){return t<0?Math.floor(t):Math.ceil(t)}function Dl(t){return 4800*t/146097}function Ml(t){return 146097*t/4800}function Al(t){return function(){return this.as(t)}}var El=Al("ms"),jl=Al("s"),Il=Al("m"),Pl=Al("h"),Ol=Al("d"),Ll=Al("w"),Rl=Al("M"),Nl=Al("Q"),Fl=Al("y");function Bl(t){return function(){return this.isValid()?this._data[t]:NaN}}var Hl=Bl("milliseconds"),ql=Bl("seconds"),Zl=Bl("minutes"),zl=Bl("hours"),$l=Bl("days"),Yl=Bl("months"),Wl=Bl("years"),Vl=Math.round,Ul={ss:44,s:45,m:45,h:22,d:26,M:11},Gl=Math.abs;function Xl(t){return(t>0)-(t<0)||+t}function Kl(){if(!this.isValid())return this.localeData().invalidDate();var t,e,l=Gl(this._milliseconds)/1e3,n=Gl(this._days),i=Gl(this._months);t=_(l/60),e=_(t/60),l%=60,t%=60;var a=_(i/12),r=i%=12,o=n,s=e,c=t,u=l?l.toFixed(3).replace(/\.?0+$/,""):"",d=this.asSeconds();if(!d)return"P0D";var h=d<0?"-":"",f=Xl(this._months)!==Xl(d)?"-":"",p=Xl(this._days)!==Xl(d)?"-":"",g=Xl(this._milliseconds)!==Xl(d)?"-":"";return h+"P"+(a?f+a+"Y":"")+(r?f+r+"M":"")+(o?p+o+"D":"")+(s||c||u?"T":"")+(s?g+s+"H":"")+(c?g+c+"M":"")+(u?g+u+"S":"")}var Ql=Le.prototype;return Ql.isValid=function(){return this._isValid},Ql.abs=function(){var t=this._data;return this._milliseconds=kl(this._milliseconds),this._days=kl(this._days),this._months=kl(this._months),t.milliseconds=kl(t.milliseconds),t.seconds=kl(t.seconds),t.minutes=kl(t.minutes),t.hours=kl(t.hours),t.months=kl(t.months),t.years=kl(t.years),this},Ql.add=function(t,e){return Cl(this,t,e,1)},Ql.subtract=function(t,e){return Cl(this,t,e,-1)},Ql.as=function(t){if(!this.isValid())return NaN;var e,l,n=this._milliseconds;if("month"===(t=O(t))||"quarter"===t||"year"===t)switch(e=this._days+n/864e5,l=this._months+Dl(e),t){case"month":return l;case"quarter":return l/3;case"year":return l/12}else switch(e=this._days+Math.round(Ml(this._months)),t){case"week":return e/7+n/6048e5;case"day":return e+n/864e5;case"hour":return 24*e+n/36e5;case"minute":return 1440*e+n/6e4;case"second":return 86400*e+n/1e3;case"millisecond":return Math.floor(864e5*e)+n;default:throw new Error("Unknown unit "+t)}},Ql.asMilliseconds=El,Ql.asSeconds=jl,Ql.asMinutes=Il,Ql.asHours=Pl,Ql.asDays=Ol,Ql.asWeeks=Ll,Ql.asMonths=Rl,Ql.asQuarters=Nl,Ql.asYears=Fl,Ql.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*w(this._months/12):NaN},Ql._bubble=function(){var t,e,l,n,i,a=this._milliseconds,r=this._days,o=this._months,s=this._data;return a>=0&&r>=0&&o>=0||a<=0&&r<=0&&o<=0||(a+=864e5*Tl(Ml(o)+r),r=0,o=0),s.milliseconds=a%1e3,t=_(a/1e3),s.seconds=t%60,e=_(t/60),s.minutes=e%60,l=_(e/60),s.hours=l%24,r+=_(l/24),i=_(Dl(r)),o+=i,r-=Tl(Ml(i)),n=_(o/12),o%=12,s.days=r,s.months=o,s.years=n,this},Ql.clone=function(){return We(this)},Ql.get=function(t){return t=O(t),this.isValid()?this[t+"s"]():NaN},Ql.milliseconds=Hl,Ql.seconds=ql,Ql.minutes=Zl,Ql.hours=zl,Ql.days=$l,Ql.weeks=function(){return _(this.days()/7)},Ql.months=Yl,Ql.years=Wl,Ql.humanize=function(t){if(!this.isValid())return this.localeData().invalidDate();var e=this.localeData(),l=function(t,e,l){var n=We(t).abs(),i=Vl(n.as("s")),a=Vl(n.as("m")),r=Vl(n.as("h")),o=Vl(n.as("d")),s=Vl(n.as("M")),c=Vl(n.as("y")),u=i<=Ul.ss&&["s",i]||i0,u[4]=l,function(t,e,l,n,i){return i.relativeTime(e||1,!!l,t,n)}.apply(null,u)}(this,!t,e);return t&&(l=e.pastFuture(+this,l)),e.postformat(l)},Ql.toISOString=Kl,Ql.toString=Kl,Ql.toJSON=Kl,Ql.locale=tl,Ql.localeData=ll,Ql.toIsoString=C("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Kl),Ql.lang=el,z("X",0,0,"unix"),z("x",0,0,"valueOf"),ct("x",it),ct("X",/[+-]?\d+(\.\d{1,3})?/),ft("X",function(t,e,l){l._d=new Date(1e3*parseFloat(t,10))}),ft("x",function(t,e,l){l._d=new Date(w(t))}),n.version="2.24.0",e=Ee,n.fn=vl,n.min=function(){return Pe("isBefore",[].slice.call(arguments,0))},n.max=function(){return Pe("isAfter",[].slice.call(arguments,0))},n.now=function(){return Date.now?Date.now():+new Date},n.utc=h,n.unix=function(t){return Ee(1e3*t)},n.months=function(t,e){return wl(t,e,"months")},n.isDate=s,n.locale=ue,n.invalid=g,n.duration=We,n.isMoment=x,n.weekdays=function(t,e,l){return Sl(t,e,l,"weekdays")},n.parseZone=function(){return Ee.apply(null,arguments).parseZone()},n.localeData=he,n.isDuration=Re,n.monthsShort=function(t,e){return wl(t,e,"monthsShort")},n.weekdaysMin=function(t,e,l){return Sl(t,e,l,"weekdaysMin")},n.defineLocale=de,n.updateLocale=function(t,e){if(null!=e){var l,n,i=ae;null!=(n=ce(t))&&(i=n._config),e=E(i,e),(l=new j(e)).parentLocale=re[t],re[t]=l,ue(t)}else null!=re[t]&&(null!=re[t].parentLocale?re[t]=re[t].parentLocale:null!=re[t]&&delete re[t]);return re[t]},n.locales=function(){return T(re)},n.weekdaysShort=function(t,e,l){return Sl(t,e,l,"weekdaysShort")},n.normalizeUnits=O,n.relativeTimeRounding=function(t){return void 0===t?Vl:"function"==typeof t&&(Vl=t,!0)},n.relativeTimeThreshold=function(t,e){return void 0!==Ul[t]&&(void 0===e?Ul[t]:(Ul[t]=e,"s"===t&&(Ul.ss=e-1),!0))},n.calendarFormat=function(t,e){var l=t.diff(e,"days",!0);return l<-6?"sameElse":l<-1?"lastWeek":l<0?"lastDay":l<1?"sameDay":l<2?"nextDay":l<7?"nextWeek":"sameElse"},n.prototype=vl,n.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},n}()}).call(this,l(68)(t))},function(t,e,l){var n;"undefined"!=typeof self&&self,n=function(){return function(t){var e={};function l(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,l),i.l=!0,i.exports}return l.m=t,l.c=e,l.d=function(t,e,n){l.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},l.r=function(t){Object.defineProperty(t,"__esModule",{value:!0})},l.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return l.d(e,"a",e),e},l.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},l.p="",l(l.s=0)}({"./dist/icons.json":
/*!*************************!*\
!*** ./dist/icons.json ***!
\*************************/
/*! exports provided: activity, airplay, alert-circle, alert-octagon, alert-triangle, align-center, align-justify, align-left, align-right, anchor, aperture, archive, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, award, bar-chart-2, bar-chart, battery-charging, battery, bell-off, bell, bluetooth, bold, book-open, book, bookmark, box, briefcase, calendar, camera-off, camera, cast, check-circle, check-square, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, chrome, circle, clipboard, clock, cloud-drizzle, cloud-lightning, cloud-off, cloud-rain, cloud-snow, cloud, code, codepen, codesandbox, coffee, columns, command, compass, copy, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, cpu, credit-card, crop, crosshair, database, delete, disc, dollar-sign, download-cloud, download, droplet, edit-2, edit-3, edit, external-link, eye-off, eye, facebook, fast-forward, feather, figma, file-minus, file-plus, file-text, file, film, filter, flag, folder-minus, folder-plus, folder, frown, gift, git-branch, git-commit, git-merge, git-pull-request, github, gitlab, globe, grid, hard-drive, hash, headphones, heart, help-circle, hexagon, home, image, inbox, info, instagram, italic, key, layers, layout, life-buoy, link-2, link, linkedin, list, loader, lock, log-in, log-out, mail, map-pin, map, maximize-2, maximize, meh, menu, message-circle, message-square, mic-off, mic, minimize-2, minimize, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, mouse-pointer, move, music, navigation-2, navigation, octagon, package, paperclip, pause-circle, pause, pen-tool, percent, phone-call, phone-forwarded, phone-incoming, phone-missed, phone-off, phone-outgoing, phone, pie-chart, play-circle, play, plus-circle, plus-square, plus, pocket, power, printer, radio, refresh-ccw, refresh-cw, repeat, rewind, rotate-ccw, rotate-cw, rss, save, scissors, search, send, server, settings, share-2, share, shield-off, shield, shopping-bag, shopping-cart, shuffle, sidebar, skip-back, skip-forward, slack, slash, sliders, smartphone, smile, speaker, square, star, stop-circle, sun, sunrise, sunset, tablet, tag, target, terminal, thermometer, thumbs-down, thumbs-up, toggle-left, toggle-right, trash-2, trash, trello, trending-down, trending-up, triangle, truck, tv, twitter, type, umbrella, underline, unlock, upload-cloud, upload, user-check, user-minus, user-plus, user-x, user, users, video-off, video, voicemail, volume-1, volume-2, volume-x, volume, watch, wifi-off, wifi, wind, x-circle, x-octagon, x-square, x, youtube, zap-off, zap, zoom-in, zoom-out, default */function(t){t.exports={activity:'',airplay:'',"alert-circle":'',"alert-octagon":'',"alert-triangle":'',"align-center":'',"align-justify":'',"align-left":'',"align-right":'',anchor:'',aperture:'',archive:'',"arrow-down-circle":'',"arrow-down-left":'',"arrow-down-right":'',"arrow-down":'',"arrow-left-circle":'',"arrow-left":'',"arrow-right-circle":'',"arrow-right":'',"arrow-up-circle":'',"arrow-up-left":'',"arrow-up-right":'',"arrow-up":'',"at-sign":'',award:'',"bar-chart-2":'',"bar-chart":'',"battery-charging":'',battery:'',"bell-off":'',bell:'',bluetooth:'',bold:'',"book-open":'',book:'',bookmark:'',box:'',briefcase:'',calendar:'',"camera-off":'',camera:'',cast:'',"check-circle":'',"check-square":'',check:'',"chevron-down":'',"chevron-left":'',"chevron-right":'',"chevron-up":'',"chevrons-down":'',"chevrons-left":'',"chevrons-right":'',"chevrons-up":'',chrome:'',circle:'',clipboard:'',clock:'',"cloud-drizzle":'',"cloud-lightning":'',"cloud-off":'',"cloud-rain":'',"cloud-snow":'',cloud:'',code:'',codepen:'',codesandbox:'',coffee:'',columns:'',command:'',compass:'',copy:'',"corner-down-left":'',"corner-down-right":'',"corner-left-down":'',"corner-left-up":'',"corner-right-down":'',"corner-right-up":'',"corner-up-left":'',"corner-up-right":'',cpu:'',"credit-card":'',crop:'',crosshair:'',database:'',delete:'',disc:'',"dollar-sign":'',"download-cloud":'',download:'',droplet:'',"edit-2":'',"edit-3":'',edit:'',"external-link":'',"eye-off":'',eye:'',facebook:'',"fast-forward":'',feather:'',figma:'',"file-minus":'',"file-plus":'',"file-text":'',file:'',film:'',filter:'',flag:'',"folder-minus":'',"folder-plus":'',folder:'',frown:'',gift:'',"git-branch":'',"git-commit":'',"git-merge":'',"git-pull-request":'',github:'',gitlab:'',globe:'',grid:'',"hard-drive":'',hash:'',headphones:'',heart:'',"help-circle":'',hexagon:'',home:'',image:'',inbox:'',info:'',instagram:'',italic:'',key:'',layers:'',layout:'',"life-buoy":'',"link-2":'',link:'',linkedin:'',list:'',loader:'',lock:'',"log-in":'',"log-out":'',mail:'',"map-pin":'',map:'',"maximize-2":'',maximize:'',meh:'',menu:'',"message-circle":'',"message-square":'',"mic-off":'',mic:'',"minimize-2":'',minimize:'',"minus-circle":'',"minus-square":'',minus:'',monitor:'',moon:'',"more-horizontal":'',"more-vertical":'',"mouse-pointer":'',move:'',music:'',"navigation-2":'',navigation:'',octagon:'',package:'',paperclip:'',"pause-circle":'',pause:'',"pen-tool":'',percent:'',"phone-call":'',"phone-forwarded":'',"phone-incoming":'',"phone-missed":'',"phone-off":'',"phone-outgoing":'',phone:'',"pie-chart":'',"play-circle":'',play:'',"plus-circle":'',"plus-square":'',plus:'',pocket:'',power:'',printer:'',radio:'',"refresh-ccw":'',"refresh-cw":'',repeat:'',rewind:'',"rotate-ccw":'',"rotate-cw":'',rss:'',save:'',scissors:'',search:'',send:'',server:'',settings:'',"share-2":'',share:'',"shield-off":'',shield:'',"shopping-bag":'',"shopping-cart":'',shuffle:'',sidebar:'',"skip-back":'',"skip-forward":'',slack:'',slash:'',sliders:'',smartphone:'',smile:'',speaker:'',square:'',star:'',"stop-circle":'',sun:'',sunrise:'',sunset:'',tablet:'',tag:'',target:'',terminal:'',thermometer:'',"thumbs-down":'',"thumbs-up":'',"toggle-left":'',"toggle-right":'',"trash-2":'',trash:'',trello:'',"trending-down":'',"trending-up":'',triangle:'',truck:'',tv:'',twitter:'',type:'',umbrella:'',underline:'',unlock:'',"upload-cloud":'',upload:'',"user-check":'',"user-minus":'',"user-plus":'',"user-x":'',user:'',users:'',"video-off":'',video:'',voicemail:'',"volume-1":'',"volume-2":'',"volume-x":'',volume:'',watch:'',"wifi-off":'',wifi:'',wind:'',"x-circle":'',"x-octagon":'',"x-square":'',x:'',youtube:'',"zap-off":'',zap:'',"zoom-in":'',"zoom-out":''}},"./node_modules/classnames/dedupe.js":
/*!*******************************************!*\
!*** ./node_modules/classnames/dedupe.js ***!
\*******************************************/
/*! no static exports found */function(t,e,l){var n;
/*!
Copyright (c) 2016 Jed Watson.
Licensed under the MIT License (MIT), see
http://jedwatson.github.io/classnames
*/
/*!
Copyright (c) 2016 Jed Watson.
Licensed under the MIT License (MIT), see
http://jedwatson.github.io/classnames
*/
!function(){"use strict";var l=function(){function t(){}function e(t,e){for(var l=e.length,n=0;nu;)if((o=s[u++])!=o)return!0}else for(;c>u;u++)if((t||u in s)&&s[u]===l)return t||u||0;return!t&&-1}}},"./node_modules/core-js/modules/_classof.js":
/*!**************************************************!*\
!*** ./node_modules/core-js/modules/_classof.js ***!
\**************************************************/
/*! no static exports found */function(t,e,l){var n=l(/*! ./_cof */"./node_modules/core-js/modules/_cof.js"),i=l(/*! ./_wks */"./node_modules/core-js/modules/_wks.js")("toStringTag"),a="Arguments"==n(function(){return arguments}());t.exports=function(t){var e,l,r;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(l=function(t,e){try{return t[e]}catch(t){}}(e=Object(t),i))?l:a?n(e):"Object"==(r=n(e))&&"function"==typeof e.callee?"Arguments":r}},"./node_modules/core-js/modules/_cof.js":
/*!**********************************************!*\
!*** ./node_modules/core-js/modules/_cof.js ***!
\**********************************************/
/*! no static exports found */function(t,e){var l={}.toString;t.exports=function(t){return l.call(t).slice(8,-1)}},"./node_modules/core-js/modules/_core.js":
/*!***********************************************!*\
!*** ./node_modules/core-js/modules/_core.js ***!
\***********************************************/
/*! no static exports found */function(t,e){var l=t.exports={version:"2.5.6"};"number"==typeof __e&&(__e=l)},"./node_modules/core-js/modules/_create-property.js":
/*!**********************************************************!*\
!*** ./node_modules/core-js/modules/_create-property.js ***!
\**********************************************************/
/*! no static exports found */function(t,e,l){"use strict";var n=l(/*! ./_object-dp */"./node_modules/core-js/modules/_object-dp.js"),i=l(/*! ./_property-desc */"./node_modules/core-js/modules/_property-desc.js");t.exports=function(t,e,l){e in t?n.f(t,e,i(0,l)):t[e]=l}},"./node_modules/core-js/modules/_ctx.js":
/*!**********************************************!*\
!*** ./node_modules/core-js/modules/_ctx.js ***!
\**********************************************/
/*! no static exports found */function(t,e,l){var n=l(/*! ./_a-function */"./node_modules/core-js/modules/_a-function.js");t.exports=function(t,e,l){if(n(t),void 0===e)return t;switch(l){case 1:return function(l){return t.call(e,l)};case 2:return function(l,n){return t.call(e,l,n)};case 3:return function(l,n,i){return t.call(e,l,n,i)}}return function(){return t.apply(e,arguments)}}},"./node_modules/core-js/modules/_defined.js":
/*!**************************************************!*\
!*** ./node_modules/core-js/modules/_defined.js ***!
\**************************************************/
/*! no static exports found */function(t,e){t.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},"./node_modules/core-js/modules/_descriptors.js":
/*!******************************************************!*\
!*** ./node_modules/core-js/modules/_descriptors.js ***!
\******************************************************/
/*! no static exports found */function(t,e,l){t.exports=!l(/*! ./_fails */"./node_modules/core-js/modules/_fails.js")(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},"./node_modules/core-js/modules/_dom-create.js":
/*!*****************************************************!*\
!*** ./node_modules/core-js/modules/_dom-create.js ***!
\*****************************************************/
/*! no static exports found */function(t,e,l){var n=l(/*! ./_is-object */"./node_modules/core-js/modules/_is-object.js"),i=l(/*! ./_global */"./node_modules/core-js/modules/_global.js").document,a=n(i)&&n(i.createElement);t.exports=function(t){return a?i.createElement(t):{}}},"./node_modules/core-js/modules/_enum-bug-keys.js":
/*!********************************************************!*\
!*** ./node_modules/core-js/modules/_enum-bug-keys.js ***!
\********************************************************/
/*! no static exports found */function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},"./node_modules/core-js/modules/_export.js":
/*!*************************************************!*\
!*** ./node_modules/core-js/modules/_export.js ***!
\*************************************************/
/*! no static exports found */function(t,e,l){var n=l(/*! ./_global */"./node_modules/core-js/modules/_global.js"),i=l(/*! ./_core */"./node_modules/core-js/modules/_core.js"),a=l(/*! ./_hide */"./node_modules/core-js/modules/_hide.js"),r=l(/*! ./_redefine */"./node_modules/core-js/modules/_redefine.js"),o=l(/*! ./_ctx */"./node_modules/core-js/modules/_ctx.js"),s=function(t,e,l){var c,u,d,h,f=t&s.F,p=t&s.G,g=t&s.S,m=t&s.P,b=t&s.B,v=p?n:g?n[e]||(n[e]={}):(n[e]||{}).prototype,y=p?i:i[e]||(i[e]={}),x=y.prototype||(y.prototype={});for(c in p&&(l=e),l)d=((u=!f&&v&&void 0!==v[c])?v:l)[c],h=b&&u?o(d,n):m&&"function"==typeof d?o(Function.call,d):d,v&&r(v,c,d,t&s.U),y[c]!=d&&a(y,c,h),m&&x[c]!=d&&(x[c]=d)};n.core=i,s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,s.U=64,s.R=128,t.exports=s},"./node_modules/core-js/modules/_fails.js":
/*!************************************************!*\
!*** ./node_modules/core-js/modules/_fails.js ***!
\************************************************/
/*! no static exports found */function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},"./node_modules/core-js/modules/_global.js":
/*!*************************************************!*\
!*** ./node_modules/core-js/modules/_global.js ***!
\*************************************************/
/*! no static exports found */function(t,e){var l=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=l)},"./node_modules/core-js/modules/_has.js":
/*!**********************************************!*\
!*** ./node_modules/core-js/modules/_has.js ***!
\**********************************************/
/*! no static exports found */function(t,e){var l={}.hasOwnProperty;t.exports=function(t,e){return l.call(t,e)}},"./node_modules/core-js/modules/_hide.js":
/*!***********************************************!*\
!*** ./node_modules/core-js/modules/_hide.js ***!
\***********************************************/
/*! no static exports found */function(t,e,l){var n=l(/*! ./_object-dp */"./node_modules/core-js/modules/_object-dp.js"),i=l(/*! ./_property-desc */"./node_modules/core-js/modules/_property-desc.js");t.exports=l(/*! ./_descriptors */"./node_modules/core-js/modules/_descriptors.js")?function(t,e,l){return n.f(t,e,i(1,l))}:function(t,e,l){return t[e]=l,t}},"./node_modules/core-js/modules/_html.js":
/*!***********************************************!*\
!*** ./node_modules/core-js/modules/_html.js ***!
\***********************************************/
/*! no static exports found */function(t,e,l){var n=l(/*! ./_global */"./node_modules/core-js/modules/_global.js").document;t.exports=n&&n.documentElement},"./node_modules/core-js/modules/_ie8-dom-define.js":
/*!*********************************************************!*\
!*** ./node_modules/core-js/modules/_ie8-dom-define.js ***!
\*********************************************************/
/*! no static exports found */function(t,e,l){t.exports=!l(/*! ./_descriptors */"./node_modules/core-js/modules/_descriptors.js")&&!l(/*! ./_fails */"./node_modules/core-js/modules/_fails.js")(function(){return 7!=Object.defineProperty(l(/*! ./_dom-create */"./node_modules/core-js/modules/_dom-create.js")("div"),"a",{get:function(){return 7}}).a})},"./node_modules/core-js/modules/_iobject.js":
/*!**************************************************!*\
!*** ./node_modules/core-js/modules/_iobject.js ***!
\**************************************************/
/*! no static exports found */function(t,e,l){var n=l(/*! ./_cof */"./node_modules/core-js/modules/_cof.js");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==n(t)?t.split(""):Object(t)}},"./node_modules/core-js/modules/_is-array-iter.js":
/*!********************************************************!*\
!*** ./node_modules/core-js/modules/_is-array-iter.js ***!
\********************************************************/
/*! no static exports found */function(t,e,l){var n=l(/*! ./_iterators */"./node_modules/core-js/modules/_iterators.js"),i=l(/*! ./_wks */"./node_modules/core-js/modules/_wks.js")("iterator"),a=Array.prototype;t.exports=function(t){return void 0!==t&&(n.Array===t||a[i]===t)}},"./node_modules/core-js/modules/_is-object.js":
/*!****************************************************!*\
!*** ./node_modules/core-js/modules/_is-object.js ***!
\****************************************************/
/*! no static exports found */function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},"./node_modules/core-js/modules/_iter-call.js":
/*!****************************************************!*\
!*** ./node_modules/core-js/modules/_iter-call.js ***!
\****************************************************/
/*! no static exports found */function(t,e,l){var n=l(/*! ./_an-object */"./node_modules/core-js/modules/_an-object.js");t.exports=function(t,e,l,i){try{return i?e(n(l)[0],l[1]):e(l)}catch(e){var a=t.return;throw void 0!==a&&n(a.call(t)),e}}},"./node_modules/core-js/modules/_iter-create.js":
/*!******************************************************!*\
!*** ./node_modules/core-js/modules/_iter-create.js ***!
\******************************************************/
/*! no static exports found */function(t,e,l){"use strict";var n=l(/*! ./_object-create */"./node_modules/core-js/modules/_object-create.js"),i=l(/*! ./_property-desc */"./node_modules/core-js/modules/_property-desc.js"),a=l(/*! ./_set-to-string-tag */"./node_modules/core-js/modules/_set-to-string-tag.js"),r={};l(/*! ./_hide */"./node_modules/core-js/modules/_hide.js")(r,l(/*! ./_wks */"./node_modules/core-js/modules/_wks.js")("iterator"),function(){return this}),t.exports=function(t,e,l){t.prototype=n(r,{next:i(1,l)}),a(t,e+" Iterator")}},"./node_modules/core-js/modules/_iter-define.js":
/*!******************************************************!*\
!*** ./node_modules/core-js/modules/_iter-define.js ***!
\******************************************************/
/*! no static exports found */function(t,e,l){"use strict";var n=l(/*! ./_library */"./node_modules/core-js/modules/_library.js"),i=l(/*! ./_export */"./node_modules/core-js/modules/_export.js"),a=l(/*! ./_redefine */"./node_modules/core-js/modules/_redefine.js"),r=l(/*! ./_hide */"./node_modules/core-js/modules/_hide.js"),o=l(/*! ./_iterators */"./node_modules/core-js/modules/_iterators.js"),s=l(/*! ./_iter-create */"./node_modules/core-js/modules/_iter-create.js"),c=l(/*! ./_set-to-string-tag */"./node_modules/core-js/modules/_set-to-string-tag.js"),u=l(/*! ./_object-gpo */"./node_modules/core-js/modules/_object-gpo.js"),d=l(/*! ./_wks */"./node_modules/core-js/modules/_wks.js")("iterator"),h=!([].keys&&"next"in[].keys()),f=function(){return this};t.exports=function(t,e,l,p,g,m,b){s(l,e,p);var v,y,x,_=function(t){if(!h&&t in C)return C[t];switch(t){case"keys":case"values":return function(){return new l(this,t)}}return function(){return new l(this,t)}},w=e+" Iterator",S="values"==g,k=!1,C=t.prototype,T=C[d]||C["@@iterator"]||g&&C[g],D=T||_(g),M=g?S?_("entries"):D:void 0,A="Array"==e&&C.entries||T;if(A&&(x=u(A.call(new t)))!==Object.prototype&&x.next&&(c(x,w,!0),n||"function"==typeof x[d]||r(x,d,f)),S&&T&&"values"!==T.name&&(k=!0,D=function(){return T.call(this)}),n&&!b||!h&&!k&&C[d]||r(C,d,D),o[e]=D,o[w]=f,g)if(v={values:S?D:_("values"),keys:m?D:_("keys"),entries:M},b)for(y in v)y in C||a(C,y,v[y]);else i(i.P+i.F*(h||k),e,v);return v}},"./node_modules/core-js/modules/_iter-detect.js":
/*!******************************************************!*\
!*** ./node_modules/core-js/modules/_iter-detect.js ***!
\******************************************************/
/*! no static exports found */function(t,e,l){var n=l(/*! ./_wks */"./node_modules/core-js/modules/_wks.js")("iterator"),i=!1;try{var a=[7][n]();a.return=function(){i=!0},Array.from(a,function(){throw 2})}catch(t){}t.exports=function(t,e){if(!e&&!i)return!1;var l=!1;try{var a=[7],r=a[n]();r.next=function(){return{done:l=!0}},a[n]=function(){return r},t(a)}catch(t){}return l}},"./node_modules/core-js/modules/_iterators.js":
/*!****************************************************!*\
!*** ./node_modules/core-js/modules/_iterators.js ***!
\****************************************************/
/*! no static exports found */function(t,e){t.exports={}},"./node_modules/core-js/modules/_library.js":
/*!**************************************************!*\
!*** ./node_modules/core-js/modules/_library.js ***!
\**************************************************/
/*! no static exports found */function(t,e){t.exports=!1},"./node_modules/core-js/modules/_object-create.js":
/*!********************************************************!*\
!*** ./node_modules/core-js/modules/_object-create.js ***!
\********************************************************/
/*! no static exports found */function(t,e,l){var n=l(/*! ./_an-object */"./node_modules/core-js/modules/_an-object.js"),i=l(/*! ./_object-dps */"./node_modules/core-js/modules/_object-dps.js"),a=l(/*! ./_enum-bug-keys */"./node_modules/core-js/modules/_enum-bug-keys.js"),r=l(/*! ./_shared-key */"./node_modules/core-js/modules/_shared-key.js")("IE_PROTO"),o=function(){},s=function(){var t,e=l(/*! ./_dom-create */"./node_modules/core-js/modules/_dom-create.js")("iframe"),n=a.length;for(e.style.display="none",l(/*! ./_html */"./node_modules/core-js/modules/_html.js").appendChild(e),e.src="javascript:",(t=e.contentWindow.document).open(),t.write("