declare (strict_types=1);
namespace ElementorDeps\DI;
use ElementorDeps\DI\Definition\ArrayDefinitionExtension;
use ElementorDeps\DI\Definition\EnvironmentVariableDefinition;
use ElementorDeps\DI\Definition\Helper\AutowireDefinitionHelper;
use ElementorDeps\DI\Definition\Helper\CreateDefinitionHelper;
use ElementorDeps\DI\Definition\Helper\FactoryDefinitionHelper;
use ElementorDeps\DI\Definition\Reference;
use ElementorDeps\DI\Definition\StringDefinition;
use ElementorDeps\DI\Definition\ValueDefinition;
if (!\function_exists('ElementorDeps\\DI\\value')) {
/**
* Helper for defining a value.
*
* @param mixed $value
*/
function value($value) : ValueDefinition
{
return new ValueDefinition($value);
}
}
if (!\function_exists('ElementorDeps\\DI\\create')) {
/**
* Helper for defining an object.
*
* @param string|null $className Class name of the object.
* If null, the name of the entry (in the container) will be used as class name.
*/
function create(string $className = null) : CreateDefinitionHelper
{
return new CreateDefinitionHelper($className);
}
}
if (!\function_exists('ElementorDeps\\DI\\autowire')) {
/**
* Helper for autowiring an object.
*
* @param string|null $className Class name of the object.
* If null, the name of the entry (in the container) will be used as class name.
*/
function autowire(string $className = null) : AutowireDefinitionHelper
{
return new AutowireDefinitionHelper($className);
}
}
if (!\function_exists('ElementorDeps\\DI\\factory')) {
/**
* Helper for defining a container entry using a factory function/callable.
*
* @param callable $factory The factory is a callable that takes the container as parameter
* and returns the value to register in the container.
*/
function factory($factory) : FactoryDefinitionHelper
{
return new FactoryDefinitionHelper($factory);
}
}
if (!\function_exists('ElementorDeps\\DI\\decorate')) {
/**
* Decorate the previous definition using a callable.
*
* Example:
*
* 'foo' => decorate(function ($foo, $container) {
* return new CachedFoo($foo, $container->get('cache'));
* })
*
* @param callable $callable The callable takes the decorated object as first parameter and
* the container as second.
*/
function decorate($callable) : FactoryDefinitionHelper
{
return new FactoryDefinitionHelper($callable, \true);
}
}
if (!\function_exists('ElementorDeps\\DI\\get')) {
/**
* Helper for referencing another container entry in an object definition.
*/
function get(string $entryName) : Reference
{
return new Reference($entryName);
}
}
if (!\function_exists('ElementorDeps\\DI\\env')) {
/**
* Helper for referencing environment variables.
*
* @param string $variableName The name of the environment variable.
* @param mixed $defaultValue The default value to be used if the environment variable is not defined.
*/
function env(string $variableName, $defaultValue = null) : EnvironmentVariableDefinition
{
// Only mark as optional if the default value was *explicitly* provided.
$isOptional = 2 === \func_num_args();
return new EnvironmentVariableDefinition($variableName, $isOptional, $defaultValue);
}
}
if (!\function_exists('ElementorDeps\\DI\\add')) {
/**
* Helper for extending another definition.
*
* Example:
*
* 'log.backends' => DI\add(DI\get('My\Custom\LogBackend'))
*
* or:
*
* 'log.backends' => DI\add([
* DI\get('My\Custom\LogBackend')
* ])
*
* @param mixed|array $values A value or an array of values to add to the array.
*
* @since 5.0
*/
function add($values) : ArrayDefinitionExtension
{
if (!\is_array($values)) {
$values = [$values];
}
return new ArrayDefinitionExtension($values);
}
}
if (!\function_exists('ElementorDeps\\DI\\string')) {
/**
* Helper for concatenating strings.
*
* Example:
*
* 'log.filename' => DI\string('{app.path}/app.log')
*
* @param string $expression A string expression. Use the `{}` placeholders to reference other container entries.
*
* @since 5.0
*/
function string(string $expression) : StringDefinition
{
return new StringDefinition($expression);
}
}
use Nextend\SmartSlider3\Platform\SmartSlider3Platform;
use Nextend\SmartSlider3\SmartSlider3Info;
add_action('plugins_loaded', 'smart_slider_3_plugins_loaded', 30);
function smart_slider_3_plugins_loaded() {
define('NEXTEND_SMARTSLIDER_3', dirname(__FILE__) . DIRECTORY_SEPARATOR);
define('NEXTEND_SMARTSLIDER_3_BASENAME', NEXTEND_SMARTSLIDER_3_FREE_BASENAME);
define('NEXTEND_SMARTSLIDER_3_SLUG', NEXTEND_SMARTSLIDER_3_FREE_SLUG);
require_once dirname(__FILE__) . '/Defines.php';
require_once(SMARTSLIDER3_LIBRARY_PATH . '/Autoloader.php');
SmartSlider3Platform::getInstance();
add_filter("plugin_action_links_" . NEXTEND_SMARTSLIDER_3_BASENAME, 'N2_SMARTSLIDER_3_UPGRADE_TO_PRO');
function N2_SMARTSLIDER_3_UPGRADE_TO_PRO($links) {
if (function_exists('is_plugin_active') && !is_plugin_active('nextend-smart-slider3-pro/nextend-smart-slider3-pro.php')) {
if (!is_array($links)) {
$links = array();
}
$params = array(
'utm_source' => 'plugin-list',
'utm_medium' => 'smartslider-wordpress-free',
'utm_campaign' => 'smartslider3'
);
$links[] = '' . "Go Pro" . '';
}
return $links;
}
}
/*! elementor - v3.27.0 - 16-02-2025 */
.elementor-alert{border-left:5px solid transparent;padding:15px;position:relative;text-align:start}.elementor-alert .elementor-alert-title{display:block;font-weight:700}.elementor-alert .elementor-alert-description{font-size:13px}.elementor-alert button.elementor-alert-dismiss{background:transparent;border:none;color:var(--dismiss-icon-normal-color,inherit);cursor:pointer;font-size:var(--dismiss-icon-size,20px);line-height:1;padding:3px;position:absolute;right:var(--dismiss-icon-horizontal-position,10px);top:var(--dismiss-icon-vertical-position,10px);transition-duration:var(--dismiss-icon-hover-transition-duration,.3s)}.elementor-alert button.elementor-alert-dismiss:hover{color:var(--dismiss-icon-hover-color,inherit)}.elementor-alert button.elementor-alert-dismiss svg{height:var(--dismiss-icon-size,20px);width:var(--dismiss-icon-size,20px);fill:var(--dismiss-icon-normal-color,currentColor);transition-duration:var(--dismiss-icon-hover-transition-duration,.3s)}.elementor-alert button.elementor-alert-dismiss svg:hover{fill:var(--dismiss-icon-hover-color,currentColor)}.elementor-alert-info .elementor-alert{background-color:#d9edf7;border-color:#bcdff1;color:#31708f}.elementor-alert-success .elementor-alert{background-color:#dff0d8;border-color:#cae6be;color:#3c763d}.elementor-alert-warning .elementor-alert{background-color:#fcf8e3;border-color:#f9f0c3;color:#8a6d3b}.elementor-alert-danger .elementor-alert{background-color:#f2dede;border-color:#e8c4c4;color:#a94442}@media (max-width:767px){.elementor-alert{padding:10px}.elementor-alert button.elementor-alert-dismiss{right:7px;top:7px}}
namespace Elementor;
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}
/**
* Elementor skin base.
*
* An abstract class to register new skins for Elementor widgets. Skins allows
* you to add new templates, set custom controls and more.
*
* To register new skins for your widget use the `add_skin()` method inside the
* widget's `register_skins()` method.
*
* @since 1.0.0
* @abstract
*/
abstract class Skin_Base extends Sub_Controls_Stack {
/**
* Parent widget.
*
* Holds the parent widget of the skin. Default value is null, no parent widget.
*
* @access protected
*
* @var Widget_Base|null
*/
protected $parent = null;
/**
* Skin base constructor.
*
* Initializing the skin base class by setting parent widget and registering
* controls actions.
*
* @since 1.0.0
* @access public
* @param Widget_Base $element_parent
*/
public function __construct( Widget_Base $element_parent ) {
parent::__construct( $element_parent );
$this->_register_controls_actions();
}
/**
* Render skin.
*
* Generates the final HTML on the frontend.
*
* @since 1.0.0
* @access public
* @abstract
*/
abstract public function render();
/**
* Render element in static mode.
*
* If not inherent will call the base render.
*/
public function render_static() {
$this->render();
}
/**
* Determine the render logic.
*/
public function render_by_mode() {
if ( Plugin::$instance->frontend->is_static_render_mode() ) {
$this->render_static();
return;
}
$this->render();
}
/**
* Register skin controls actions.
*
* Run on init and used to register new skins to be injected to the widget.
* This method is used to register new actions that specify the location of
* the skin in the widget.
*
* Example usage:
* `add_action( 'elementor/element/{widget_id}/{section_id}/before_section_end', [ $this, 'register_controls' ] );`
*
* @since 1.0.0
* @access protected
*/
protected function _register_controls_actions() {}
/**
* Get skin control ID.
*
* Retrieve the skin control ID. Note that skin controls have special prefix
* to distinguish them from regular controls, and from controls in other
* skins.
*
* @since 1.0.0
* @access protected
*
* @param string $control_base_id Control base ID.
*
* @return string Control ID.
*/
protected function get_control_id( $control_base_id ) {
$skin_id = str_replace( '-', '_', $this->get_id() );
return $skin_id . '_' . $control_base_id;
}
/**
* Get skin settings.
*
* Retrieve all the skin settings or, when requested, a specific setting.
*
* @since 1.0.0
* @TODO: rename to get_setting() and create backward compatibility.
*
* @access public
*
* @param string $control_base_id Control base ID.
*
* @return mixed
*/
public function get_instance_value( $control_base_id ) {
$control_id = $this->get_control_id( $control_base_id );
return $this->parent->get_settings( $control_id );
}
/**
* Start skin controls section.
*
* Used to add a new section of controls to the skin.
*
* @since 1.3.0
* @access public
*
* @param string $id Section ID.
* @param array $args Section arguments.
*/
public function start_controls_section( $id, $args = [] ) {
$args['condition']['_skin'] = $this->get_id();
parent::start_controls_section( $id, $args );
}
/**
* Add new skin control.
*
* Register a single control to the allow the user to set/update skin data.
*
* @param string $id Control ID.
* @param array $args Control arguments.
* @param array $options
*
* @return bool True if skin added, False otherwise.
* @since 3.0.0 New `$options` parameter added.
* @access public
*/
public function add_control( $id, $args = [], $options = [] ) {
$args['condition']['_skin'] = $this->get_id();
return parent::add_control( $id, $args, $options );
}
/**
* Update skin control.
*
* Change the value of an existing skin control.
*
* @since 1.3.0
* @since 1.8.1 New `$options` parameter added.
*
* @access public
*
* @param string $id Control ID.
* @param array $args Control arguments. Only the new fields you want to update.
* @param array $options Optional. Some additional options.
*/
public function update_control( $id, $args, array $options = [] ) {
$args['condition']['_skin'] = $this->get_id();
parent::update_control( $id, $args, $options );
}
/**
* Add new responsive skin control.
*
* Register a set of controls to allow editing based on user screen size.
*
* @param string $id Responsive control ID.
* @param array $args Responsive control arguments.
* @param array $options
*
* @since 1.0.5
* @access public
*/
public function add_responsive_control( $id, $args, $options = [] ) {
$args['condition']['_skin'] = $this->get_id();
parent::add_responsive_control( $id, $args );
}
/**
* Start skin controls tab.
*
* Used to add a new tab inside a group of tabs.
*
* @since 1.5.0
* @access public
*
* @param string $id Control ID.
* @param array $args Control arguments.
*/
public function start_controls_tab( $id, $args ) {
$args['condition']['_skin'] = $this->get_id();
parent::start_controls_tab( $id, $args );
}
/**
* Start skin controls tabs.
*
* Used to add a new set of tabs inside a section.
*
* @since 1.5.0
* @access public
*
* @param string $id Control ID.
*/
public function start_controls_tabs( $id ) {
$args['condition']['_skin'] = $this->get_id();
parent::start_controls_tabs( $id );
}
/**
* Add new group control.
*
* Register a set of related controls grouped together as a single unified
* control.
*
* @param string $group_name Group control name.
* @param array $args Group control arguments. Default is an empty array.
* @param array $options
*
* @since 1.0.0
* @access public
*/
final public function add_group_control( $group_name, $args = [], $options = [] ) {
$args['condition']['_skin'] = $this->get_id();
parent::add_group_control( $group_name, $args );
}
/**
* Set parent widget.
*
* Used to define the parent widget of the skin.
*
* @since 1.0.0
* @access public
*
* @param Widget_Base $element_parent Parent widget.
*/
public function set_parent( $element_parent ) {
$this->parent = $element_parent;
}
}
Nơi hội tụ những giấc mơ đổi đời trong thế giới giải trí của mcw casino sống động. Giới thiệu về mcw casino Lịch sử hình thành của mcw casino Các loại trò chơi tại mcw casino Ưu đãi và khuyến mãi hấp dẫn dành cho người chơi Khám phá cộng đồng game thủ tại mcw casino Sự kiện và
Najlepsze Kasyna Online w Polsce w 2025 ▶️ GRAĆ Содержимое Wybór Najlepszych Kasyn Online Wady i Zalety Kasyn Online Bezpieczeństwo i Autentyczność Kasyn Online Zakończenie: Wybór Kasyna Online Wskazówki przy wyborze kasyna online W Polsce coraz więcej ludzi decyduje się na grę w kasyno online, aby zyskać pieniądze lub po prostu zrelaksować się. Wśród wielu dostępnych opcji, ważne jest wybór
Mostbet w Polsce – metody płatności ▶️ GRAĆ Содержимое Przelewy bankowe w Mostbet Karty płatnicze w Mostbet Mostbet – karty płatnicze Mostbet, jeden z najpopularniejszych operatorów bukmacherskich na świecie, oferuje swoim klientom wiele możliwości płatności. W Polsce, gdzie hazard jest coraz bardziej popularny, Mostbet jest jednym z największych operatorów bukmacherskich, oferującym swoim klientom szeroki wybór możliwości płatności. Wśród możliwości płatności
1win Online Betting and Casino Official site in India ▶️ PLAY Содержимое Why Choose 1win for Online Betting and Casino Games Why Choose 1win? Features and Benefits of 1win Online Betting and Casino Benefits of 1win Online Betting and Casino How to Register and Start Playing at 1win Online Betting and Casino How to Log In to Your 1win Account
1win Online Betting and Casino Official site in India ▶️ PLAY Содержимое Why Choose 1win for Online Betting and Casino Games How to Register and Start Playing at 1win India Official Site How to Use the 1win App Benefits of Playing at 1win India Official Site Are you ready to experience the thrill of online betting and casino games in
R7 онлайн казино – служба поддержки и способы связи с оператором ▶️ ИГРАТЬ Содержимое R7 Онлайн Казино: Служба Поддержки и Способы Связи с Оператором Способы Связи с Оператором Как Получить Помощь от Службы Поддержки R7 Казино Возможные Способы Связи с Оператором Важно! Оценка Качества Службы Поддержки R7 Онлайн Казино Способы связи с оператором Качество и быстродействие ответов В мире онлайн-казино
Лучшие казино онлайн 2025 года – большой выбор слотов и бонусов ▶️ ИГРАТЬ Содержимое Топ-5 казино с лучшими условиями для игроков Как выбрать лучшее казино онлайн: советы и рекомендации Лучшие слоты и бонусы в казино онлайн: обзор и сравнение Слоты с высоким коэффициентом выигрыша В наше время интернета и технологий, казино онлайн стали все более популярными. Многие игроки предпочитают играть
Mostbet Casino PT – Login no Casino Most Bet Portugal ▶️ JOGAR Содержимое Registo e Login no Casino Most Bet Portugal Como Criar uma Conta no Casino Most Bet Portugal Passos para criar uma conta no Casino Most Bet Portugal Benefícios do Registo no Casino Most Bet Portugal Conselhos para Novos Jogadores no Casino Most Bet Portugal Conclusão – Registo
Вавада Казино Официальный Сайт – Вход на Рабочее Зеркало Vavada (2025) ▶️ ИГРАТЬ Содержимое Vavada Casino Official Website: Access to the Working Mirror Vavada (2025) Официальный Сайт Вавада Казино Возможности и Функции Вавада Казино Как Зайти на Рабочее Зеркало Vavada Важные советы для входа на рабочее зеркало Vavada Безопасность и Надежность Как мы обеспечиваем безопасность В последние годы казино Vavada
Polskie kasyna online z wysokimi bonusami powitalnymi ▶️ GRAĆ Содержимое Wielkie możliwości w kasynach online Możliwości gry w kasynach online Wybór najlepszych kasyn online Wskazówki przed wyborem kasyna online W dzisiejszym świecie, gdzie internet jest nieodłącznym elementem naszego życia, kasyna online stały się coraz bardziej popularne. W Polsce, w szczególności, kasyna online są coraz częściej wybierane przez graczy, którzy szukają