/*! elementor-pro - v3.17.0 - 25-10-2023 */
@charset "UTF-8";.elementor-widget-loop-grid{scroll-margin-top:var(--auto-scroll-offset,initial)}.elementor-widget-loop-grid-1 .elementor-grid{grid-template-columns:repeat(1,minmax(0,1fr))}.elementor-widget-loop-grid-2 .elementor-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.elementor-widget-loop-grid-3 .elementor-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.elementor-widget-loop-grid-4 .elementor-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.elementor-widget-loop-grid-5 .elementor-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.elementor-widget-loop-grid-6 .elementor-grid{grid-template-columns:repeat(6,minmax(0,1fr))}.elementor-widget-loop-grid-7 .elementor-grid{grid-template-columns:repeat(7,minmax(0,1fr))}.elementor-widget-loop-grid-8 .elementor-grid{grid-template-columns:repeat(8,minmax(0,1fr))}.elementor-widget-loop-grid-9 .elementor-grid{grid-template-columns:repeat(9,minmax(0,1fr))}.elementor-widget-loop-grid-10 .elementor-grid{grid-template-columns:repeat(10,minmax(0,1fr))}.elementor-widget-loop-grid-11 .elementor-grid{grid-template-columns:repeat(11,minmax(0,1fr))}.elementor-widget-loop-grid-12 .elementor-grid{grid-template-columns:repeat(12,minmax(0,1fr))}@media (min-width:-1){.elementor-widget-loop-grid-widescreen-1 .elementor-grid{grid-template-columns:repeat(1,minmax(0,1fr))}.elementor-widget-loop-grid-widescreen-2 .elementor-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.elementor-widget-loop-grid-widescreen-3 .elementor-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.elementor-widget-loop-grid-widescreen-4 .elementor-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.elementor-widget-loop-grid-widescreen-5 .elementor-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.elementor-widget-loop-grid-widescreen-6 .elementor-grid{grid-template-columns:repeat(6,minmax(0,1fr))}.elementor-widget-loop-grid-widescreen-7 .elementor-grid{grid-template-columns:repeat(7,minmax(0,1fr))}.elementor-widget-loop-grid-widescreen-8 .elementor-grid{grid-template-columns:repeat(8,minmax(0,1fr))}.elementor-widget-loop-grid-widescreen-9 .elementor-grid{grid-template-columns:repeat(9,minmax(0,1fr))}.elementor-widget-loop-grid-widescreen-10 .elementor-grid{grid-template-columns:repeat(10,minmax(0,1fr))}.elementor-widget-loop-grid-widescreen-11 .elementor-grid{grid-template-columns:repeat(11,minmax(0,1fr))}.elementor-widget-loop-grid-widescreen-12 .elementor-grid{grid-template-columns:repeat(12,minmax(0,1fr))}}@media (max-width:-1){.elementor-widget-loop-grid-laptop-1 .elementor-grid{grid-template-columns:repeat(1,minmax(0,1fr))}.elementor-widget-loop-grid-laptop-2 .elementor-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.elementor-widget-loop-grid-laptop-3 .elementor-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.elementor-widget-loop-grid-laptop-4 .elementor-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.elementor-widget-loop-grid-laptop-5 .elementor-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.elementor-widget-loop-grid-laptop-6 .elementor-grid{grid-template-columns:repeat(6,minmax(0,1fr))}.elementor-widget-loop-grid-laptop-7 .elementor-grid{grid-template-columns:repeat(7,minmax(0,1fr))}.elementor-widget-loop-grid-laptop-8 .elementor-grid{grid-template-columns:repeat(8,minmax(0,1fr))}.elementor-widget-loop-grid-laptop-9 .elementor-grid{grid-template-columns:repeat(9,minmax(0,1fr))}.elementor-widget-loop-grid-laptop-10 .elementor-grid{grid-template-columns:repeat(10,minmax(0,1fr))}.elementor-widget-loop-grid-laptop-11 .elementor-grid{grid-template-columns:repeat(11,minmax(0,1fr))}.elementor-widget-loop-grid-laptop-12 .elementor-grid{grid-template-columns:repeat(12,minmax(0,1fr))}}@media (max-width:-1){.elementor-widget-loop-grid-tablet_extra-1 .elementor-grid{grid-template-columns:repeat(1,minmax(0,1fr))}.elementor-widget-loop-grid-tablet_extra-2 .elementor-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.elementor-widget-loop-grid-tablet_extra-3 .elementor-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.elementor-widget-loop-grid-tablet_extra-4 .elementor-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.elementor-widget-loop-grid-tablet_extra-5 .elementor-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.elementor-widget-loop-grid-tablet_extra-6 .elementor-grid{grid-template-columns:repeat(6,minmax(0,1fr))}.elementor-widget-loop-grid-tablet_extra-7 .elementor-grid{grid-template-columns:repeat(7,minmax(0,1fr))}.elementor-widget-loop-grid-tablet_extra-8 .elementor-grid{grid-template-columns:repeat(8,minmax(0,1fr))}.elementor-widget-loop-grid-tablet_extra-9 .elementor-grid{grid-template-columns:repeat(9,minmax(0,1fr))}.elementor-widget-loop-grid-tablet_extra-10 .elementor-grid{grid-template-columns:repeat(10,minmax(0,1fr))}.elementor-widget-loop-grid-tablet_extra-11 .elementor-grid{grid-template-columns:repeat(11,minmax(0,1fr))}.elementor-widget-loop-grid-tablet_extra-12 .elementor-grid{grid-template-columns:repeat(12,minmax(0,1fr))}}@media (max-width:1024px){.elementor-widget-loop-grid-tablet-1 .elementor-grid{grid-template-columns:repeat(1,minmax(0,1fr))}.elementor-widget-loop-grid-tablet-2 .elementor-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.elementor-widget-loop-grid-tablet-3 .elementor-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.elementor-widget-loop-grid-tablet-4 .elementor-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.elementor-widget-loop-grid-tablet-5 .elementor-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.elementor-widget-loop-grid-tablet-6 .elementor-grid{grid-template-columns:repeat(6,minmax(0,1fr))}.elementor-widget-loop-grid-tablet-7 .elementor-grid{grid-template-columns:repeat(7,minmax(0,1fr))}.elementor-widget-loop-grid-tablet-8 .elementor-grid{grid-template-columns:repeat(8,minmax(0,1fr))}.elementor-widget-loop-grid-tablet-9 .elementor-grid{grid-template-columns:repeat(9,minmax(0,1fr))}.elementor-widget-loop-grid-tablet-10 .elementor-grid{grid-template-columns:repeat(10,minmax(0,1fr))}.elementor-widget-loop-grid-tablet-11 .elementor-grid{grid-template-columns:repeat(11,minmax(0,1fr))}.elementor-widget-loop-grid-tablet-12 .elementor-grid{grid-template-columns:repeat(12,minmax(0,1fr))}}@media (max-width:-1){.elementor-widget-loop-grid-mobile_extra-1 .elementor-grid{grid-template-columns:repeat(1,minmax(0,1fr))}.elementor-widget-loop-grid-mobile_extra-2 .elementor-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.elementor-widget-loop-grid-mobile_extra-3 .elementor-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.elementor-widget-loop-grid-mobile_extra-4 .elementor-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.elementor-widget-loop-grid-mobile_extra-5 .elementor-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.elementor-widget-loop-grid-mobile_extra-6 .elementor-grid{grid-template-columns:repeat(6,minmax(0,1fr))}.elementor-widget-loop-grid-mobile_extra-7 .elementor-grid{grid-template-columns:repeat(7,minmax(0,1fr))}.elementor-widget-loop-grid-mobile_extra-8 .elementor-grid{grid-template-columns:repeat(8,minmax(0,1fr))}.elementor-widget-loop-grid-mobile_extra-9 .elementor-grid{grid-template-columns:repeat(9,minmax(0,1fr))}.elementor-widget-loop-grid-mobile_extra-10 .elementor-grid{grid-template-columns:repeat(10,minmax(0,1fr))}.elementor-widget-loop-grid-mobile_extra-11 .elementor-grid{grid-template-columns:repeat(11,minmax(0,1fr))}.elementor-widget-loop-grid-mobile_extra-12 .elementor-grid{grid-template-columns:repeat(12,minmax(0,1fr))}}@media (max-width:767px){.elementor-widget-loop-grid-mobile-1 .elementor-grid{grid-template-columns:repeat(1,minmax(0,1fr))}.elementor-widget-loop-grid-mobile-2 .elementor-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.elementor-widget-loop-grid-mobile-3 .elementor-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.elementor-widget-loop-grid-mobile-4 .elementor-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.elementor-widget-loop-grid-mobile-5 .elementor-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.elementor-widget-loop-grid-mobile-6 .elementor-grid{grid-template-columns:repeat(6,minmax(0,1fr))}.elementor-widget-loop-grid-mobile-7 .elementor-grid{grid-template-columns:repeat(7,minmax(0,1fr))}.elementor-widget-loop-grid-mobile-8 .elementor-grid{grid-template-columns:repeat(8,minmax(0,1fr))}.elementor-widget-loop-grid-mobile-9 .elementor-grid{grid-template-columns:repeat(9,minmax(0,1fr))}.elementor-widget-loop-grid-mobile-10 .elementor-grid{grid-template-columns:repeat(10,minmax(0,1fr))}.elementor-widget-loop-grid-mobile-11 .elementor-grid{grid-template-columns:repeat(11,minmax(0,1fr))}.elementor-widget-loop-grid-mobile-12 .elementor-grid{grid-template-columns:repeat(12,minmax(0,1fr))}}.elementor-widget-loop-grid .elementor-grid{grid-column-gap:var(--grid-column-gap,30px);grid-row-gap:var(--grid-row-gap,30px)}.elementor-widget-loop-grid.e-loading-overlay{animation:loadingOpacityAnimation 1s infinite alternate}.elementor-widget-loop-grid .e-loop__load-more{text-align:var(--load-more-button-align)}.elementor-widget-loop-grid .e-loop__load-more .elementor-button{width:var(--load-more-button-width)}.elementor-widget-loop-grid.e-load-more-pagination-loading>.elementor-widget-container{cursor:default}.elementor-widget-loop-grid.e-load-more-pagination-loading>.elementor-widget-container .e-load-more-spinner{margin-top:var(--load-more—spacing,30px)}.elementor-widget-loop-grid.e-load-more-pagination-loading>.elementor-widget-container .e-load-more-spinner i,.elementor-widget-loop-grid.e-load-more-pagination-loading>.elementor-widget-container .e-load-more-spinner svg{display:flex}.elementor-widget-loop-grid.e-load-more-pagination-loading>.elementor-widget-container>.elementor-button-wrapper .elementor-button-content-wrapper{visibility:hidden}.elementor-widget-loop-grid.e-load-more-pagination-end>.elementor-widget-container>.elementor-button-wrapper{display:none}.elementor-widget-loop-grid.e-load-more-pagination-end>.elementor-widget-container>.e-load-more-message{display:block}.elementor-widget-loop-grid.e-load-more-no-spinner>.elementor-widget-container>.elementor-button-wrapper .elementor-button-content-wrapper{visibility:visible}.elementor-widget-loop-grid>.elementor-widget-container .e-load-more-spinner{display:flex}.elementor-widget-loop-grid>.elementor-widget-container .e-load-more-spinner i,.elementor-widget-loop-grid>.elementor-widget-container .e-load-more-spinner svg{margin:0 auto;display:none}.elementor-widget-loop-grid>.elementor-widget-container .e-load-more-spinner i{color:var(--load-more-spinner-color)}.elementor-widget-loop-grid>.elementor-widget-container .e-load-more-spinner svg{fill:var(--load-more-spinner-color);height:1em;width:1em}.elementor-widget-loop-grid>.elementor-widget-container .e-load-more-message{color:var(--load-more-message-color);text-align:var(--load-more-message-alignment,center);display:none;margin-top:var(--load-more—spacing,30px)}.elementor-widget-loop-grid>.elementor-widget-container>.elementor-button-wrapper{margin-top:var(--load-more—spacing,30px)}.elementor-widget-loop-grid>.elementor-widget-container>.elementor-button-wrapper .e-load-more-spinner{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);margin:inherit}.elementor-widget-loop-grid>.elementor-widget-container>.elementor-button-wrapper .elementor-button{cursor:pointer;position:relative}.elementor-loop-container.elementor-posts-masonry{align-items:flex-start}.elementor-loop-container:not(.elementor-posts-masonry){align-items:stretch}@keyframes loadingOpacityAnimation{0%,to{opacity:1}50%{opacity:.6}}.elementor-widget-loop-carousel{--swiper-pagination-size:0;--swiper-pagination-spacing:10px;--swiper-slides-gap:10px;--swiper-offset-size:0;height:-moz-fit-content;height:fit-content;--swiper-padding-bottom:calc(var(--swiper-pagination-size) + var(--swiper-pagination-spacing));--arrow-prev-top-align:50%;--arrow-prev-top-position:0px;--arrow-prev-caption-spacing:15px;--arrow-next-top-align:50%;--arrow-next-top-position:0px;--arrow-next-caption-spacing:15px;--arrow-prev-left-align:0px;--arrow-prev-left-position:0px;--arrow-next-right-align:0px;--arrow-next-right-position:0px;--arrow-next-translate-x:0px;--arrow-next-translate-y:0px;--arrow-prev-translate-x:0px;--arrow-prev-translate-y:0px;--dots-vertical-position:100%;--dots-vertical-offset:0px;--dots-horizontal-position:50%;--dots-horizontal-offset:0px;--dots-horizontal-transform:-50%;--dots-vertical-transform:-100%;--fraction-vertical-position:100%;--fraction-vertical-offset:0px;--fraction-horizontal-position:50%;--fraction-horizontal-offset:0px;--fraction-horizontal-transform:-50%;--fraction-vertical-transform:-100%;--horizontal-transform-modifier:1}.elementor-widget-loop-carousel.elementor-pagination-type-bullets{--swiper-pagination-size:6px}.elementor-widget-loop-carousel.elementor-pagination-type-fraction{--swiper-pagination-size:16px}.elementor-widget-loop-carousel.elementor-pagination-type-progressbar{--swiper-pagination-size:4px}.elementor-widget-loop-carousel .elementor-loop-container>.swiper-wrapper>.swiper-slide-active.elementor-edit-area-active{overflow:initial}.elementor-widget-loop-carousel .elementor-loop-container.offset-left{padding-inline-start:var(--swiper-offset-size,0)}.elementor-widget-loop-carousel .elementor-loop-container.offset-right{padding-inline-end:var(--swiper-offset-size,0)}.elementor-widget-loop-carousel .elementor-loop-container.offset-both{padding-inline-start:var(--swiper-offset-size,0);padding-inline-end:var(--swiper-offset-size,0)}.elementor-widget-loop-carousel .swiper-container:not(.swiper-container-initialized)>.swiper-wrapper,.elementor-widget-loop-carousel .swiper:not(.swiper-initialized)>.swiper-wrapper{gap:var(--swiper-slides-gap);overflow:hidden}.elementor-widget-loop-carousel .swiper-container:not(.swiper-container-initialized)>.swiper-wrapper>.swiper--slide,.elementor-widget-loop-carousel .swiper:not(.swiper-initialized)>.swiper-wrapper>.swiper--slide{--number-of-gaps:max(calc(var(--swiper-slides-to-display) - 1),0);--gaps-width-total:calc(var(--number-of-gaps) * var(--swiper-slides-gap));max-width:calc((100% - var(--gaps-width-total)) / var(--swiper-slides-to-display, 1))}.elementor-widget-loop-carousel .e-loop-first-edit{min-width:33%;margin-block-start:23px}.elementor-widget-loop-carousel .swiper-wrapper .swiper-slide a.e-con{display:var(--display)}.elementor-widget-loop-carousel .elementor-swiper-button.elementor-swiper-button-next,.elementor-widget-loop-carousel .elementor-swiper-button.elementor-swiper-button-prev{font-size:var(--arrow-size,25px);color:var(--arrow-normal-color,hsla(0,0%,93.3%,.9));border-style:var(--arrow-normal-border-type);transition-duration:.25s;z-index:2}.elementor-widget-loop-carousel .elementor-swiper-button.elementor-swiper-button-next svg,.elementor-widget-loop-carousel .elementor-swiper-button.elementor-swiper-button-prev svg{fill:var(--arrow-normal-color,hsla(0,0%,93.3%,.9))}.elementor-widget-loop-carousel .elementor-swiper-button.elementor-swiper-button-next:hover,.elementor-widget-loop-carousel .elementor-swiper-button.elementor-swiper-button-prev:hover{color:var(--arrow-hover-color,hsla(0,0%,93.3%,.9));border-style:var(--arrow-hover-border-type)}.elementor-widget-loop-carousel .elementor-swiper-button.elementor-swiper-button-next:hover svg,.elementor-widget-loop-carousel .elementor-swiper-button.elementor-swiper-button-prev:hover svg{fill:var(--arrow-hover-color,hsla(0,0%,93.3%,.9))}.elementor-widget-loop-carousel.elementor-element :is(.swiper,.swiper-container)~.elementor-swiper-button-next{top:calc(var(--arrow-next-top-align) + var(--arrow-next-top-position) - var(--arrow-next-caption-spacing));right:calc(var(--arrow-next-right-align) + var(--arrow-next-right-position));transform:translate(var(--arrow-next-translate-x),var(--arrow-next-translate-y))}.elementor-widget-loop-carousel.elementor-element :is(.swiper,.swiper-container)~.elementor-swiper-button-prev{top:calc(var(--arrow-prev-top-align) + var(--arrow-prev-top-position) - var(--arrow-prev-caption-spacing));left:calc(var(--arrow-prev-left-align) + var(--arrow-prev-left-position));transform:translate(var(--arrow-prev-translate-x),var(--arrow-prev-translate-y))}.elementor-widget-loop-carousel .swiper-container-horizontal~.swiper-pagination-progressbar,.elementor-widget-loop-carousel .swiper-horizontal~.swiper-pagination-progressbar{height:var(--swiper-pagination-size)}.elementor-widget-loop-carousel .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--progressbar-normal-color,#000)}.elementor-widget-loop-carousel .swiper-pagination-progressbar .swiper-pagination-progressbar-fill:hover{background:var(--progressbar-hover-color,#000)}.elementor-widget-loop-carousel .swiper-pagination-fraction{color:var(--fraction-color,#000)}.elementor-widget-loop-carousel .swiper-pagination-bullet{width:var(--swiper-pagination-size);height:var(--swiper-pagination-size);background:var(--dots-normal-color,#000)}.elementor-widget-loop-carousel .swiper-pagination-bullet:hover{background:var(--dots-hover-color,#000);opacity:1}.elementor-widget-loop-carousel.elementor-in-place-template-editable .elementor-loop-container{overflow:visible;overflow-x:clip}.elementor-widget-loop-carousel .swiper-horizontal>.swiper-pagination-bullets,.elementor-widget-loop-carousel .swiper-pagination,.elementor-widget-loop-carousel .swiper-pagination-bullets.swiper-pagination-horizontal,.elementor-widget-loop-carousel .swiper-pagination-custom,.elementor-widget-loop-carousel .swiper-pagination-fraction{font-size:var(--swiper-pagination-size);line-height:var(--swiper-pagination-size)}.elementor-widget-loop-carousel.elementor-pagination-position-outside>.elementor-widget-container>.swiper,.elementor-widget-loop-carousel.elementor-pagination-position-outside>.elementor-widget-container>.swiper-container{padding-bottom:var(--swiper-padding-bottom)}.elementor-widget-loop-carousel.elementor-pagination-position-outside>.elementor-widget-container>.swiper-container .elementor-background-slideshow,.elementor-widget-loop-carousel.elementor-pagination-position-outside>.elementor-widget-container>.swiper .elementor-background-slideshow{padding-bottom:0}.elementor-widget-loop-carousel.elementor-pagination-position-outside>.elementor-widget-container .swiper-pagination-bullet{vertical-align:top}.elementor-widget-loop-carousel .swiper-pagination-bullets{top:calc(var(--dots-vertical-position) + var(--dots-vertical-offset));left:calc(var(--dots-horizontal-position) + var(--dots-horizontal-offset));transform:translate(calc(var(--dots-horizontal-transform) * var(--horizontal-transform-modifier)),var(--dots-vertical-transform));width:-moz-max-content;width:max-content;height:-moz-max-content;height:max-content;z-index:3}.elementor-widget-loop-carousel .swiper-pagination-fraction{top:calc(var(--fraction-vertical-position) + var(--fraction-vertical-offset));left:calc(var(--fraction-horizontal-position) + var(--fraction-horizontal-offset));transform:translate(calc(var(--fraction-horizontal-transform) * var(--horizontal-transform-modifier)),var(--fraction-vertical-transform));width:-moz-max-content;width:max-content;height:-moz-max-content;height:max-content;z-index:3}.e-loop-item *{word-break:break-word}[class*=elementor-widget-loop] .elementor-page-title,[class*=elementor-widget-loop] .product_title.entry-title{display:initial}.e-loop-template-canvas{display:flex;align-items:center;justify-content:center;min-height:100vh}.e-loop-template-canvas [data-elementor-type=loop-item].e-loop-item{max-width:var(--preview-width,410px);width:var(--preview-width,410px)}.e-loop-template-canvas [data-elementor-type=loop-item].e-loop-item #elementor-add-new-section{width:var(--preview-width,410px)}
/**
* WooCommerce Cart Functions
*
* Functions for cart specific things.
*
* @package WooCommerce\Functions
* @version 2.5.0
*/
use Automattic\Jetpack\Constants;
defined( 'ABSPATH' ) || exit;
/**
* Prevent password protected products being added to the cart.
*
* @param bool $passed Validation.
* @param int $product_id Product ID.
* @return bool
*/
function wc_protected_product_add_to_cart( $passed, $product_id ) {
if ( post_password_required( $product_id ) ) {
$passed = false;
wc_add_notice( __( 'This product is protected and cannot be purchased.', 'woocommerce' ), 'error' );
}
return $passed;
}
add_filter( 'woocommerce_add_to_cart_validation', 'wc_protected_product_add_to_cart', 10, 2 );
/**
* Clears the cart session when called.
*/
function wc_empty_cart() {
if ( ! isset( WC()->cart ) || '' === WC()->cart ) {
WC()->cart = new WC_Cart();
}
WC()->cart->empty_cart( false );
}
/**
* Load the persistent cart.
*
* @param string $user_login User login.
* @param WP_User $user User data.
* @deprecated 2.3
*/
function wc_load_persistent_cart( $user_login, $user ) {
if ( ! $user || ! apply_filters( 'woocommerce_persistent_cart_enabled', true ) ) {
return;
}
$saved_cart = get_user_meta( $user->ID, '_woocommerce_persistent_cart_' . get_current_blog_id(), true );
if ( ! $saved_cart ) {
return;
}
$cart = WC()->session->cart;
if ( empty( $cart ) || ! is_array( $cart ) || 0 === count( $cart ) ) {
WC()->session->cart = $saved_cart['cart'];
}
}
/**
* Retrieves unvalidated referer from '_wp_http_referer' or HTTP referer.
*
* Do not use for redirects, use {@see wp_get_referer()} instead.
*
* @since 2.6.1
* @return string|false Referer URL on success, false on failure.
*/
function wc_get_raw_referer() {
if ( function_exists( 'wp_get_raw_referer' ) ) {
return wp_get_raw_referer();
}
if ( ! empty( $_REQUEST['_wp_http_referer'] ) ) { // WPCS: input var ok, CSRF ok.
return wp_unslash( $_REQUEST['_wp_http_referer'] ); // WPCS: input var ok, CSRF ok, sanitization ok.
} elseif ( ! empty( $_SERVER['HTTP_REFERER'] ) ) { // WPCS: input var ok, CSRF ok.
return wp_unslash( $_SERVER['HTTP_REFERER'] ); // WPCS: input var ok, CSRF ok, sanitization ok.
}
return false;
}
/**
* Add to cart messages.
*
* @param int|array $products Product ID list or single product ID.
* @param bool $show_qty Should quantities be shown? Added in 2.6.0.
* @param bool $return Return message rather than add it.
*
* @return mixed
*/
function wc_add_to_cart_message( $products, $show_qty = false, $return = false ) {
$titles = array();
$count = 0;
if ( ! is_array( $products ) ) {
$products = array( $products => 1 );
$show_qty = false;
}
if ( ! $show_qty ) {
$products = array_fill_keys( array_keys( $products ), 1 );
}
foreach ( $products as $product_id => $qty ) {
/* translators: %s: product name */
$titles[] = apply_filters( 'woocommerce_add_to_cart_qty_html', ( $qty > 1 ? absint( $qty ) . ' × ' : '' ), $product_id ) . apply_filters( 'woocommerce_add_to_cart_item_name_in_quotes', sprintf( _x( '“%s”', 'Item name in quotes', 'woocommerce' ), strip_tags( get_the_title( $product_id ) ) ), $product_id );
$count += $qty;
}
$titles = array_filter( $titles );
/* translators: %s: product name */
$added_text = sprintf( _n( '%s has been added to your cart.', '%s have been added to your cart.', $count, 'woocommerce' ), wc_format_list_of_items( $titles ) );
// Output success messages.
if ( 'yes' === get_option( 'woocommerce_cart_redirect_after_add' ) ) {
$return_to = apply_filters( 'woocommerce_continue_shopping_redirect', wc_get_raw_referer() ? wp_validate_redirect( wc_get_raw_referer(), false ) : wc_get_page_permalink( 'shop' ) );
$message = sprintf( '%s %s', esc_url( $return_to ), esc_html__( 'Continue shopping', 'woocommerce' ), esc_html( $added_text ) );
} else {
$message = sprintf( '%s %s', esc_url( wc_get_cart_url() ), esc_html__( 'View cart', 'woocommerce' ), esc_html( $added_text ) );
}
if ( has_filter( 'wc_add_to_cart_message' ) ) {
wc_deprecated_function( 'The wc_add_to_cart_message filter', '3.0', 'wc_add_to_cart_message_html' );
$message = apply_filters( 'wc_add_to_cart_message', $message, $product_id );
}
$message = apply_filters( 'wc_add_to_cart_message_html', $message, $products, $show_qty );
if ( $return ) {
return $message;
} else {
wc_add_notice( $message, apply_filters( 'woocommerce_add_to_cart_notice_type', 'success' ) );
}
}
/**
* Comma separate a list of item names, and replace final comma with 'and'.
*
* @param array $items Cart items.
* @return string
*/
function wc_format_list_of_items( $items ) {
$item_string = '';
foreach ( $items as $key => $item ) {
$item_string .= $item;
if ( count( $items ) === $key + 2 ) {
$item_string .= ' ' . __( 'and', 'woocommerce' ) . ' ';
} elseif ( count( $items ) !== $key + 1 ) {
$item_string .= ', ';
}
}
return $item_string;
}
/**
* Clear cart after payment.
*/
function wc_clear_cart_after_payment() {
global $wp;
if ( ! empty( $wp->query_vars['order-received'] ) ) {
$order_id = absint( $wp->query_vars['order-received'] );
$order_key = isset( $_GET['key'] ) ? wc_clean( wp_unslash( $_GET['key'] ) ) : ''; // WPCS: input var ok, CSRF ok.
if ( $order_id > 0 ) {
$order = wc_get_order( $order_id );
if ( $order && hash_equals( $order->get_order_key(), $order_key ) ) {
WC()->cart->empty_cart();
}
}
}
if ( WC()->session->order_awaiting_payment > 0 ) {
$order = wc_get_order( WC()->session->order_awaiting_payment );
if ( $order && $order->get_id() > 0 ) {
// If the order has not failed, or is not pending, the order must have gone through.
if ( ! $order->has_status( array( 'failed', 'pending', 'cancelled' ) ) ) {
WC()->cart->empty_cart();
}
}
}
}
add_action( 'template_redirect', 'wc_clear_cart_after_payment', 20 );
/**
* Get the subtotal.
*/
function wc_cart_totals_subtotal_html() {
echo WC()->cart->get_cart_subtotal(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
}
/**
* Get shipping methods.
*/
function wc_cart_totals_shipping_html() {
$packages = WC()->shipping()->get_packages();
$first = true;
foreach ( $packages as $i => $package ) {
$chosen_method = isset( WC()->session->chosen_shipping_methods[ $i ] ) ? WC()->session->chosen_shipping_methods[ $i ] : '';
$product_names = array();
if ( count( $packages ) > 1 ) {
foreach ( $package['contents'] as $item_id => $values ) {
$product_names[ $item_id ] = $values['data']->get_name() . ' ×' . $values['quantity'];
}
$product_names = apply_filters( 'woocommerce_shipping_package_details_array', $product_names, $package );
}
wc_get_template(
'cart/cart-shipping.php',
array(
'package' => $package,
'available_methods' => $package['rates'],
'show_package_details' => count( $packages ) > 1,
'show_shipping_calculator' => is_cart() && apply_filters( 'woocommerce_shipping_show_shipping_calculator', $first, $i, $package ),
'package_details' => implode( ', ', $product_names ),
/* translators: %d: shipping package number */
'package_name' => apply_filters( 'woocommerce_shipping_package_name', ( ( $i + 1 ) > 1 ) ? sprintf( _x( 'Shipping %d', 'shipping packages', 'woocommerce' ), ( $i + 1 ) ) : _x( 'Shipping', 'shipping packages', 'woocommerce' ), $i, $package ),
'index' => $i,
'chosen_method' => $chosen_method,
'formatted_destination' => WC()->countries->get_formatted_address( $package['destination'], ', ' ),
'has_calculated_shipping' => WC()->customer->has_calculated_shipping(),
)
);
$first = false;
}
}
/**
* Get taxes total.
*/
function wc_cart_totals_taxes_total_html() {
echo apply_filters( 'woocommerce_cart_totals_taxes_total_html', wc_price( WC()->cart->get_taxes_total() ) ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
}
/**
* Get a coupon label.
*
* @param string|WC_Coupon $coupon Coupon data or code.
* @param bool $echo Echo or return.
*
* @return string
*/
function wc_cart_totals_coupon_label( $coupon, $echo = true ) {
if ( is_string( $coupon ) ) {
$coupon = new WC_Coupon( $coupon );
}
/* translators: %s: coupon code */
$label = apply_filters( 'woocommerce_cart_totals_coupon_label', sprintf( esc_html__( 'Coupon: %s', 'woocommerce' ), $coupon->get_code() ), $coupon );
if ( $echo ) {
echo $label; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
} else {
return $label;
}
}
/**
* Get coupon display HTML.
*
* @param string|WC_Coupon $coupon Coupon data or code.
*/
function wc_cart_totals_coupon_html( $coupon ) {
if ( is_string( $coupon ) ) {
$coupon = new WC_Coupon( $coupon );
}
$discount_amount_html = '';
$amount = WC()->cart->get_coupon_discount_amount( $coupon->get_code(), WC()->cart->display_cart_ex_tax );
$discount_amount_html = '-' . wc_price( $amount );
if ( $coupon->get_free_shipping() && empty( $amount ) ) {
$discount_amount_html = __( 'Free shipping coupon', 'woocommerce' );
}
$discount_amount_html = apply_filters( 'woocommerce_coupon_discount_amount_html', $discount_amount_html, $coupon );
$coupon_html = $discount_amount_html . ' ' . __( '[Remove]', 'woocommerce' ) . ' ';
echo wp_kses( apply_filters( 'woocommerce_cart_totals_coupon_html', $coupon_html, $coupon, $discount_amount_html ), array_replace_recursive( wp_kses_allowed_html( 'post' ), array( 'a' => array( 'data-coupon' => true ) ) ) ); // phpcs:ignore PHPCompatibility.PHP.NewFunctions.array_replace_recursiveFound
}
/**
* Get order total html including inc tax if needed.
*/
function wc_cart_totals_order_total_html() {
$value = '' . WC()->cart->get_total() . ' ';
// If prices are tax inclusive, show taxes here.
if ( wc_tax_enabled() && WC()->cart->display_prices_including_tax() ) {
$tax_string_array = array();
$cart_tax_totals = WC()->cart->get_tax_totals();
if ( get_option( 'woocommerce_tax_total_display' ) === 'itemized' ) {
foreach ( $cart_tax_totals as $code => $tax ) {
$tax_string_array[] = sprintf( '%s %s', $tax->formatted_amount, $tax->label );
}
} elseif ( ! empty( $cart_tax_totals ) ) {
$tax_string_array[] = sprintf( '%s %s', wc_price( WC()->cart->get_taxes_total( true, true ) ), WC()->countries->tax_or_vat() );
}
if ( ! empty( $tax_string_array ) ) {
$taxable_address = WC()->customer->get_taxable_address();
if ( WC()->customer->is_customer_outside_base() && ! WC()->customer->has_calculated_shipping() ) {
$country = WC()->countries->estimated_for_prefix( $taxable_address[0] ) . WC()->countries->countries[ $taxable_address[0] ];
/* translators: 1: tax amount 2: country name */
$tax_text = wp_kses_post( sprintf( __( '(includes %1$s estimated for %2$s)', 'woocommerce' ), implode( ', ', $tax_string_array ), $country ) );
} else {
/* translators: %s: tax amount */
$tax_text = wp_kses_post( sprintf( __( '(includes %s)', 'woocommerce' ), implode( ', ', $tax_string_array ) ) );
}
$value .= '' . $tax_text . ' ';
}
}
echo apply_filters( 'woocommerce_cart_totals_order_total_html', $value ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
}
/**
* Get the fee value.
*
* @param object $fee Fee data.
*/
function wc_cart_totals_fee_html( $fee ) {
$cart_totals_fee_html = WC()->cart->display_prices_including_tax() ? wc_price( $fee->total + $fee->tax ) : wc_price( $fee->total );
echo apply_filters( 'woocommerce_cart_totals_fee_html', $cart_totals_fee_html, $fee ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
}
/**
* Get a shipping methods full label including price.
*
* @param WC_Shipping_Rate $method Shipping method rate data.
* @return string
*/
function wc_cart_totals_shipping_method_label( $method ) {
$label = $method->get_label();
$has_cost = 0 < $method->cost;
$hide_cost = ! $has_cost && in_array( $method->get_method_id(), array( 'free_shipping', 'local_pickup' ), true );
if ( $has_cost && ! $hide_cost ) {
if ( WC()->cart->display_prices_including_tax() ) {
$label .= ': ' . wc_price( $method->cost + $method->get_shipping_tax() );
if ( $method->get_shipping_tax() > 0 && ! wc_prices_include_tax() ) {
$label .= ' ' . WC()->countries->inc_tax_or_vat() . ' ';
}
} else {
$label .= ': ' . wc_price( $method->cost );
if ( $method->get_shipping_tax() > 0 && wc_prices_include_tax() ) {
$label .= ' ' . WC()->countries->ex_tax_or_vat() . ' ';
}
}
}
return apply_filters( 'woocommerce_cart_shipping_method_full_label', $label, $method );
}
/**
* Round discount.
*
* @param double $value Amount to round.
* @param int $precision DP to round.
* @return float
*/
function wc_cart_round_discount( $value, $precision ) {
return wc_round_discount( $value, $precision );
}
/**
* Gets chosen shipping method IDs from chosen_shipping_methods session, without instance IDs.
*
* @since 2.6.2
* @return string[]
*/
function wc_get_chosen_shipping_method_ids() {
$method_ids = array();
$chosen_methods = WC()->session->get( 'chosen_shipping_methods', array() );
foreach ( $chosen_methods as $chosen_method ) {
$chosen_method = explode( ':', $chosen_method );
$method_ids[] = current( $chosen_method );
}
return $method_ids;
}
/**
* Get chosen method for package from session.
*
* @since 3.2.0
* @param int $key Key of package.
* @param array $package Package data array.
* @return string|bool
*/
function wc_get_chosen_shipping_method_for_package( $key, $package ) {
$chosen_methods = WC()->session->get( 'chosen_shipping_methods' );
$chosen_method = isset( $chosen_methods[ $key ] ) ? $chosen_methods[ $key ] : false;
$changed = wc_shipping_methods_have_changed( $key, $package );
// This is deprecated but here for BW compat. TODO: Remove in 4.0.0.
$method_counts = WC()->session->get( 'shipping_method_counts' );
if ( ! empty( $method_counts[ $key ] ) ) {
$method_count = absint( $method_counts[ $key ] );
} else {
$method_count = 0;
}
// If not set, not available, or available methods have changed, set to the DEFAULT option.
if ( ! $chosen_method || $changed || ! isset( $package['rates'][ $chosen_method ] ) || count( $package['rates'] ) !== $method_count ) {
$chosen_method = wc_get_default_shipping_method_for_package( $key, $package, $chosen_method );
$chosen_methods[ $key ] = $chosen_method;
$method_counts[ $key ] = count( $package['rates'] );
WC()->session->set( 'chosen_shipping_methods', $chosen_methods );
WC()->session->set( 'shipping_method_counts', $method_counts );
do_action( 'woocommerce_shipping_method_chosen', $chosen_method );
}
return $chosen_method;
}
/**
* Choose the default method for a package.
*
* @since 3.2.0
* @param int $key Key of package.
* @param array $package Package data array.
* @param string $chosen_method Chosen method id.
* @return string
*/
function wc_get_default_shipping_method_for_package( $key, $package, $chosen_method ) {
$rate_keys = array_keys( $package['rates'] );
$default = current( $rate_keys );
$coupons = WC()->cart->get_coupons();
foreach ( $coupons as $coupon ) {
if ( $coupon->get_free_shipping() ) {
foreach ( $rate_keys as $rate_key ) {
if ( 0 === stripos( $rate_key, 'free_shipping' ) ) {
$default = $rate_key;
break;
}
}
break;
}
}
return apply_filters( 'woocommerce_shipping_chosen_method', $default, $package['rates'], $chosen_method );
}
/**
* See if the methods have changed since the last request.
*
* @since 3.2.0
* @param int $key Key of package.
* @param array $package Package data array.
* @return bool
*/
function wc_shipping_methods_have_changed( $key, $package ) {
// Lookup previous methods from session.
$previous_shipping_methods = WC()->session->get( 'previous_shipping_methods' );
// Get new and old rates.
$new_rates = array_keys( $package['rates'] );
$prev_rates = isset( $previous_shipping_methods[ $key ] ) ? $previous_shipping_methods[ $key ] : false;
// Update session.
$previous_shipping_methods[ $key ] = $new_rates;
WC()->session->set( 'previous_shipping_methods', $previous_shipping_methods );
return $new_rates !== $prev_rates;
}
/**
* Gets a hash of important product data that when changed should cause cart items to be invalidated.
*
* The woocommerce_cart_item_data_to_validate filter can be used to add custom properties.
*
* @param WC_Product $product Product object.
* @return string
*/
function wc_get_cart_item_data_hash( $product ) {
return md5(
wp_json_encode(
apply_filters(
'woocommerce_cart_item_data_to_validate',
array(
'type' => $product->get_type(),
'attributes' => 'variation' === $product->get_type() ? $product->get_variation_attributes() : '',
),
$product
)
)
);
}
“How You Can Login To Mostbet Online From Overseas With A Vpn - Murat Makara Elektrik Uzatma Makaraları
“How You Can Login To Mostbet Online From Overseas With A Vpn
Home » “How You Can Login To Mostbet Online From Overseas With A Vpn
23 Ocak 2025
- 472
seyyar
For example, if you’re from the UNITED KINGDOM" "in addition to travel overseas, you’d need to connect to a VPN server in the UK to obtain a UK IP address. You should then have the ability to access the same betting markets while you would back again home, regardless regarding your current physical location. Technically speaking, a person can open the free account on Mostbet and live coverage sports for totally free. However, you do need to have funds deposited within the account or even to have made a bet inside the last 24 hours in order to access the available live streams. There are also a few geographic restrictions to take into account. However, these can be bypassed by using a VPN to connect to some sort of server in one more location.
Tom Yum Soup Anyone looking to sign in to Mostbet with a VPN ought to ensure they only do so if they happen to be a resident of your country where interacting with Mostbet is legitimate. Using a VPN to access Mostbet services should certainly not be considered some sort of workaround for the particular purposes of illegal online gambling. However being in a more rural area gives the food to staying many meat plus potatoes variety. The location" "has been right on Primary Street and the particular atmosphere was appealing. Definitely a family group run business with great care obtained to authentic meals from the place. It was some sort of pleasant surprise in addition to a nice change of pace through the other area dining places and the price was just right.
Crunchy Shrimp Roll - Hand For safety measures, NordVPN utilizes SSL-secured 256-bit encryption. This is among typically the strongest types of files" "protection around, securing your information with strong cryptographic keys. Mostbet can be found in dozens of nations around the world but is based live casino immersive roulette in the BRITISH. In here an individual can taste fresh sashimi and leading of Asian food culinary. Flexor is usually a super flexible responsive theme which has a modest design feel. It offers outstanding privacy features and is also currently available in a discounted level.
Discover Our Food Sites just like Mostbet read your current IP address to determine your geographic place. As your IP address is assigned to you by your local internet connection provider, this will be not something you can easily change. If Mostbet sees that you are connecting coming from a country where its site is just not currently available for use, you might not become able to see what the site has to offer.
Rolls Do be aware that you will certainly need to possess your account set way up before traveling." Therefore, it is always far better to check with Mostbet directly just before attempting to entry their services through a VPN. It offers outstanding privacy features and is currently available in a discounted price. Geographic written content blocking will prevent through logging directly into your account. The connection was refused because this country is blocked in the Geolocation adjustments. Using a VPN may let you wager from Nyc whenever you change your current location to an additional state. By using a VPN, you may hide your existing IP address and create it appear to Mostbet that you will be browsing from one more country. We advise NordVPN as the particular best VPN for logging in Mostbet from abroad, and we’ll go into a lot more detail as to be able to why later throughout this article. Do note that you can need to possess your account set upwards before traveling."
Sites like Mostbet read your IP address to determine your geographic spot. For protection, NordVPN utilizes SSL-secured 256-bit encryption. This is among the strongest types of info" "security around, securing your information with strong cryptographic keys. But as I went home in typically the cold with our wet pant leg, I don't believe I'd do that again. To locate out more, take a look in our VPN tests methodology. Is Mostbet Legal Throughout New York? Furthermore, the services allows you in order to connect up to six devices simultaneously. This means you’ll always be able to use your Mostbet consideration from multiple gadgets at the same time mostbet . For velocity, NordVPN boasts unrestricted bandwidth, no files caps, and many of the fastest servers on the market. While hardware speed may differ relying on a significant number of elements, we found that will NordVPN beat typically the majority of the competitors in our extensive VPN speed tests.
Which Countries Is Usually Mostbet Available Throughout? To discover out more, consider a look in our VPN tests methodology. In order to examine VPN for logging within to Mostbet coming from abroad, we experienced to test VPNs together with the betting system. Below, you’ll notice our methodology, which usually led us to be able to pick NordVPN, which fortunately ticked each of the boxes.
We recommend NordVPN as typically the best VPN for logging into Mostbet from abroad, in addition to we’ll go into even more detail as in order to why later inside this article. They generally offer less band width and often consist of significant data caps that limit your own capacity to access all of what Mostbet has to offer you. So if you’re by London and about holiday in the particular U. S., you could connect to a remote server inside the UK and even still access Mostbet as usual. Mostbet is not going to clearly ban VPN utilization and will not typically take motion against customers for using a VPN. In here an individual can taste refreshing sashimi and top rated of Asian meals culinary. You can restore it by selecting the ‘Having trouble signing in? You’ll then receive an email for resetting your username and password and accessing your best casino bonuses ireland Mostbet account. If you’re still possessing trouble, you have to contact Mostbet, which must be able to provide more assistance.
Our Restaurant NordVPN is providing a new fully-featured risk-free 30-day trial in the event you sign up at this particular page. You may use the VPN rated #1 intended for Mostbet without any constraints for a total month. This is incredibly helpful if you’re taking a quick trip abroad plus still desire to place a few bets. You’ll be in a position to access almost all parts of the particular Mostbet website, regardless of your geographic location. If you have betting balances with other businesses, this method will still work.
In several cases, it could be against the website’s use terms for an individual to make gambling bets and play video games if you are not actually in a country wherever the site is definitely allowed. Doing thus may be throughout violation of individuals TOCs and may well result in the particular website revoking your current account along with your entry. Mostbet is fully legal in a number of dozens of countries and blocked in just as numerous. Regarding Mostbet within New York, however, the solution is “no”.
However, in the event that you are a citizen of your country where Mostbet is usually legal, using a VPN to access an online site you are legally allowed to access ought to be fine. A VPN will assist you to acquire past geographic content-blocking websites like Mostbet use by firmly connecting you in order to a web-based server in addition to assigning you a new Internet protocol address. Your IP address should come from whatever local ISP that of which remote server is connected to. So if you’re from London and on holiday in typically the U. S., you could connect to a new remote server throughout the UK plus still access Mostbet as usual. If you use a VPN that functions with Mostbet, then yes, you’ll possess access to the particular same betting markets from home while you’re abroad.
For example of this, we successfully reached Mostbet abroad" "utilizing the same method. The connection was rejected because this region is blocked within the Geolocation options. The online gambling sector is ever-growing and even complex, with different states having their own polices and rules. Ultimately, whether you can use some sort of VPN with Mostbet will depend on individual circumstances plus local regulations.
The Best Vpn For Mostbet: Nordvpn Regarding Mostbet within New York, regrettably, the answer is “no”. Technically speaking, you can open a new free account on Mostbet and streaming coverage sports for free. You’ll be ready to access all parts of the particular Mostbet website, irregardless of your geographic location. However, you do need to have funds deposited in the account or even to have built a bet throughout the last twenty four hours in order to access the offered live streams. Furthermore, the service allows you to be able to connect approximately 6 devices simultaneously. If Mostbet sees that you are connecting by a country wherever its site is not really currently available with regard to use, you might not become able to discover the particular site has to offer. "You’ll have the alternative to utilize possibly free or paid out VPN services. While free services can be easy on the wallet, they’re much from secure, plus most are low quality. Free VPN providers often draw coming from a restricted pool involving IP addresses, meaning a number of these IP tackles are well-known and often blocked by simply filters. They usually offer less band width and often contain significant data shelves that limit your current ability to access almost all of what Mostbet has to offer. Additionally, most totally free VPNs lack the high-level security in addition to encryption features a person might want and wish. The content obstructing Mostbet imposes is merely as a method of cooperating along with governments which may have made online gambling constraints on its own citizens.
While the scope regarding legal gambling activities varies by" "location, online casino video games are not lawfully offered in New York. This consists of card games for instance poker or black jack, slot machines, and even other types of betting. Although on top that looks like a person can connect whilst in the U. S., you’ll quickly find this is not the case. Geographic content blocking will avoid through logging in to your account. NordVPN is multi-functional, and so you will get which it works in almost every operating-system. The service also includes a helpful application for both Google android and iOS devices.
Mostbet is not going to clearly ban VPN use and will not typically take motion against customers intended for by using a VPN. However, the application of certain VPNs is prohibited within certain countries, plus Mostbet may prevent an account if they suspect it is definitely being used in violation associated with regional laws or even regulations. You should contact their consumer service team to be able to discuss your options if this is the situation. Due to local gambling restrictions, Mostbet isn’t available almost everywhere.