/* Widget Name: Button Description: Create a custom button with flexible styling, icon support, and click tracking functionality. Author: SiteOrigin Author URI: https://siteorigin.com Documentation: https://siteorigin.com/widgets-bundle/button-widget-documentation/ Keywords: event, icon, link */ class SiteOrigin_Widget_Button_Widget extends SiteOrigin_Widget { public function __construct() { parent::__construct( 'sow-button', __( 'SiteOrigin Button', 'so-widgets-bundle' ), array( 'description' => __( 'Create a custom button with flexible styling, icon support, and click tracking functionality.', 'so-widgets-bundle' ), 'help' => 'https://siteorigin.com/widgets-bundle/button-widget-documentation/', ), array( ), false, plugin_dir_path( __FILE__ ) ); } public function get_settings_form() { return array( 'responsive_breakpoint' => array( 'type' => 'measurement', 'label' => __( 'Responsive Breakpoint', 'so-widgets-bundle' ), 'default' => '780px', 'description' => __( 'This setting controls when the Mobile Align setting will be used. The default value is 780px.', 'so-widgets-bundle' ), ), ); } public function initialize() { $this->register_frontend_styles( array( array( 'sow-button-base', plugin_dir_url( __FILE__ ) . 'css/style.css', array(), SOW_BUNDLE_VERSION, ), ) ); } public function get_widget_form() { return array( 'text' => array( 'type' => 'text', 'label' => __( 'Button Text', 'so-widgets-bundle' ), ), 'url' => array( 'type' => 'link', 'label' => __( 'Destination URL', 'so-widgets-bundle' ), 'allow_shortcode' => true, ), 'new_window' => array( 'type' => 'checkbox', 'default' => false, 'label' => __( 'Open in a new window', 'so-widgets-bundle' ), ), 'download' => array( 'type' => 'checkbox', 'default' => false, 'label' => __( 'Download', 'so-widgets-bundle' ), 'description' => __( 'The Destination URL will be downloaded when a user clicks on the button.', 'so-widgets-bundle' ), ), 'button_icon' => array( 'type' => 'section', 'label' => __( 'Icon', 'so-widgets-bundle' ), 'fields' => array( 'icon_selected' => array( 'type' => 'icon', 'label' => __( 'Icon', 'so-widgets-bundle' ), ), 'icon_color' => array( 'type' => 'color', 'label' => __( 'Icon Color', 'so-widgets-bundle' ), ), 'icon' => array( 'type' => 'media', 'label' => __( 'Image Icon', 'so-widgets-bundle' ), 'description' => __( 'Replaces the icon with your own image icon.', 'so-widgets-bundle' ), ), 'icon_placement' => array( 'type' => 'select', 'label' => __( 'Icon Placement', 'so-widgets-bundle' ), 'default' => 'left', 'options' => array( 'top' => __( 'Top', 'so-widgets-bundle' ), 'right' => __( 'Right', 'so-widgets-bundle' ), 'bottom' => __( 'Bottom', 'so-widgets-bundle' ), 'left' => __( 'Left', 'so-widgets-bundle' ), ), ), ), ), 'design' => array( 'type' => 'section', 'label' => __( 'Design and Layout', 'so-widgets-bundle' ), 'hide' => true, 'fields' => array( 'width' => array( 'type' => 'measurement', 'label' => __( 'Width', 'so-widgets-bundle' ), 'description' => __( 'Leave blank to let the button resize according to content.', 'so-widgets-bundle' ), ), 'align' => array( 'type' => 'select', 'label' => __( 'Align', 'so-widgets-bundle' ), 'default' => 'center', 'options' => array( 'left' => __( 'Left', 'so-widgets-bundle' ), 'right' => __( 'Right', 'so-widgets-bundle' ), 'center' => __( 'Center', 'so-widgets-bundle' ), 'justify' => __( 'Full Width', 'so-widgets-bundle' ), ), ), 'mobile_align' => array( 'type' => 'select', 'label' => __( 'Mobile Align', 'so-widgets-bundle' ), 'default' => 'center', 'options' => array( 'left' => __( 'Left', 'so-widgets-bundle' ), 'right' => __( 'Right', 'so-widgets-bundle' ), 'center' => __( 'Center', 'so-widgets-bundle' ), 'justify' => __( 'Full Width', 'so-widgets-bundle' ), ), ), 'theme' => array( 'type' => 'select', 'label' => __( 'Button Theme', 'so-widgets-bundle' ), 'default' => 'flat', 'options' => array( 'atom' => __( 'Atom', 'so-widgets-bundle' ), 'flat' => __( 'Flat', 'so-widgets-bundle' ), 'wire' => __( 'Wire', 'so-widgets-bundle' ), ), ), 'button_color' => array( 'type' => 'color', 'label' => __( 'Button Color', 'so-widgets-bundle' ), ), 'text_color' => array( 'type' => 'color', 'label' => __( 'Text Color', 'so-widgets-bundle' ), ), 'hover' => array( 'type' => 'checkbox', 'default' => true, 'label' => __( 'Use hover effects', 'so-widgets-bundle' ), 'state_emitter' => array( 'callback' => 'conditional', 'args' => array( 'hover[show]: val', 'hover[hide]: ! val', ), ), ), 'hover_background_color' => array( 'type' => 'color', 'label' => __( 'Hover Background Color', 'so-widgets-bundle' ), 'state_handler' => array( 'hover[show]' => array( 'show' ), 'hover[hide]' => array( 'hide' ), ), ), 'hover_text_color' => array( 'type' => 'color', 'label' => __( 'Hover Text Color', 'so-widgets-bundle' ), 'state_handler' => array( 'hover[show]' => array( 'show' ), 'hover[hide]' => array( 'hide' ), ), ), 'font' => array( 'type' => 'font', 'label' => __( 'Font', 'so-widgets-bundle' ), 'default' => 'default', ), 'font_size' => array( 'type' => 'measurement', 'label' => __( 'Font Size', 'so-widgets-bundle' ), 'default' => '1em', ), 'icon_size' => array( 'type' => 'measurement', 'label' => __( 'Icon Size', 'so-widgets-bundle' ), 'default' => '1.3em', ), 'padding' => array( 'type' => 'measurement', 'label' => __( 'Padding', 'so-widgets-bundle' ), 'default' => '1em', ), 'rounding' => array( 'type' => 'multi-measurement', 'label' => __( 'Rounding', 'so-widgets-bundle' ), 'default' => '0.25em 0.25em 0.25em 0.25em', 'measurements' => array( 'top' => array( 'label' => __( 'Top', 'so-widgets-bundle' ), ), 'right' => array( 'label' => __( 'Right', 'so-widgets-bundle' ), ), 'bottom' => array( 'label' => __( 'Bottom', 'so-widgets-bundle' ), ), 'left' => array( 'label' => __( 'Left', 'so-widgets-bundle' ), ), ), ), ), ), 'attributes' => array( 'type' => 'section', 'label' => __( 'Other Attributes and SEO', 'so-widgets-bundle' ), 'hide' => true, 'fields' => array( 'id' => array( 'type' => 'text', 'label' => __( 'Button ID', 'so-widgets-bundle' ), 'description' => __( 'An ID attribute allows you to target this button in JavaScript.', 'so-widgets-bundle' ), ), 'classes' => array( 'type' => 'text', 'label' => __( 'Button Classes', 'so-widgets-bundle' ), 'description' => __( 'Additional CSS classes added to the button link.', 'so-widgets-bundle' ), ), 'title' => array( 'type' => 'text', 'label' => __( 'Title Attribute', 'so-widgets-bundle' ), 'description' => __( 'Adds a title attribute to the button link.', 'so-widgets-bundle' ), ), 'on_click' => array( 'type' => 'text', 'label' => __( 'Onclick', 'so-widgets-bundle' ), 'description' => __( 'Run this JavaScript when the button is clicked. Ideal for tracking.', 'so-widgets-bundle' ), 'onclick' => true, ), 'rel' => array( 'type' => 'text', 'label' => __( 'Rel Attribute', 'so-widgets-bundle' ), 'description' => __( 'Adds a rel attribute to the button link.', 'so-widgets-bundle' ), ), ), ), ); } public function get_style_name( $instance ) { if ( empty( $instance['design']['theme'] ) ) { return 'atom'; } return $instance['design']['theme']; } /** * Get the variables for the Button Widget. * * @return array */ public function get_template_variables( $instance, $args ) { $button_attributes = array(); $attributes = $instance['attributes']; $classes = ! empty( $attributes['classes'] ) ? $attributes['classes'] : ''; if ( ! empty( $classes ) ) { $classes .= ' '; } $classes .= 'sowb-button ow-icon-placement-' . $instance['button_icon']['icon_placement']; if ( ! empty( $instance['design']['hover'] ) ) { $classes .= ' ow-button-hover'; } $button_attributes['class'] = implode( ' ', array_map( 'sanitize_html_class', explode( ' ', $classes ) ) ); if ( ! empty( $instance['new_window'] ) ) { $button_attributes['target'] = '_blank'; $button_attributes['rel'] = 'noopener noreferrer'; } if ( ! empty( $instance['download'] ) ) { $button_attributes['download'] = null; } if ( ! empty( $attributes['id'] ) ) { $button_attributes['id'] = $attributes['id']; } if ( ! empty( $attributes['title'] ) ) { $button_attributes['title'] = $attributes['title']; } if ( ! empty( $attributes['rel'] ) ) { if ( isset( $button_attributes['rel'] ) ) { $button_attributes['rel'] .= " $attributes[rel]"; } else { $button_attributes['rel'] = $attributes['rel']; } } $icon_image_url = ''; if ( ! empty( $instance['button_icon']['icon'] ) ) { $attachment = wp_get_attachment_image_src( $instance['button_icon']['icon'] ); if ( ! empty( $attachment ) ) { $icon_image_url = $attachment[0]; } } return array( 'button_attributes' => apply_filters( 'siteorigin_widgets_button_attributes', $button_attributes, $instance ), 'href' => ! empty( $instance['url'] ) ? $instance['url'] : '', 'on_click' => ! empty( $attributes['on_click'] ) ? $attributes['on_click'] : '', 'align' => $instance['design']['align'], 'icon_image_url' => $icon_image_url, 'icon' => $instance['button_icon']['icon_selected'], 'icon_color' => $instance['button_icon']['icon_color'], 'text' => $instance['text'], ); } /** * Get the variables that we'll be injecting into the less stylesheet. * * @return array */ public function get_less_variables( $instance ) { if ( empty( $instance ) || empty( $instance['design'] ) ) { return array(); } $text_color = isset( $instance['design']['text_color'] ) ? $instance['design']['text_color'] : ''; $button_color = isset( $instance['design']['button_color'] ) ? $instance['design']['button_color'] : ''; $less_vars = array( 'button_width' => isset( $instance['design']['width'] ) ? $instance['design']['width'] : '', 'button_color' => $button_color, 'text_color' => $text_color, 'icon_size' => ! empty( $instance['design']['icon_size'] ) ? $instance['design']['icon_size'] : '1.3em', 'hover_text_color' => ! empty( $instance['design']['hover_text_color'] ) ? $instance['design']['hover_text_color'] : $text_color, 'hover_background_color' => ! empty( $instance['design']['hover_background_color'] ) ? $instance['design']['hover_background_color'] : $button_color, 'font_size' => isset( $instance['design']['font_size'] ) ? $instance['design']['font_size'] : '', 'rounding' => isset( $instance['design']['rounding'] ) ? $instance['design']['rounding'] : '', 'padding' => isset( $instance['design']['padding'] ) ? $instance['design']['padding'] : '', 'has_text' => empty( $instance['text'] ) ? 'false' : 'true', 'responsive_breakpoint' => $this->get_global_settings( 'responsive_breakpoint' ), 'align' => ! empty( $instance['design']['align'] ) ? $instance['design']['align'] : 'center', 'mobile_align' => ! empty( $instance['design']['mobile_align'] ) ? $instance['design']['mobile_align'] : 'center', 'has_button_icon' => empty( $instance['button_icon']['icon_selected'] ) ? 'false' : 'true', ); if ( ! empty( $instance['design']['font'] ) ) { $font = siteorigin_widget_get_font( $instance['design']['font'] ); $less_vars['button_font'] = $font['family']; if ( ! empty( $font['weight'] ) ) { $less_vars['button_font_weight'] = $font['weight_raw']; $less_vars['button_font_style'] = $font['style']; } } return $less_vars; } /** * Make sure the instance is the most up to date version. * * @return mixed */ public function modify_instance( $instance ) { if ( empty( $instance ) ) { return array(); } $migrate_props = array( 'button_icon' => array( 'icon_selected', 'icon_color', 'icon', ), 'design' => array( 'align', 'theme', 'button_color', 'text_color', 'hover', 'hover_text_color', 'hover_background_color', 'font_size', 'rounding', 'padding', ), 'attributes' => array( 'id', ), ); foreach ( $migrate_props as $prop => $sub_props ) { if ( empty( $instance[ $prop ] ) ) { $instance[ $prop ] = array(); foreach ( $sub_props as $sub_prop ) { if ( isset( $instance[ $sub_prop ] ) ) { $instance[ $prop ][ $sub_prop ] = $instance[ $sub_prop ]; unset( $instance[ $sub_prop ] ); } } } } // Migrate onclick setting to prevent Wordfence flag. if ( ! empty( $instance['attributes'] ) && ! empty( $instance['attributes']['onclick'] ) ) { $instance['attributes']['on_click'] = $instance['attributes']['onclick']; } // If the mobile_align setting isn't set, set it to the same value as the align value. if ( ! empty( $instance['design'] ) && ! empty( $instance['design']['align'] ) && empty( $instance['design']['mobile_align'] ) ) { $instance['design']['mobile_align'] = $instance['design']['align']; } // Migrate predefined settings to more customizable settings. if ( ! empty( $instance['design']['font_size'] ) && is_numeric( $instance['design']['font_size'] ) ) { $instance['design']['font_size'] .= 'em'; } if ( ! empty( $instance['design']['padding'] ) && is_numeric( $instance['design']['padding'] ) ) { $instance['design']['padding'] .= 'em'; } if ( ! empty( $instance['design']['rounding'] ) && is_numeric( $instance['design']['rounding'] ) ) { $instance['design']['rounding'] = $instance['design']['rounding'] . 'em ' . $instance['design']['rounding'] . 'em ' . $instance['design']['rounding'] . 'em ' . $instance['design']['rounding'] . 'em'; } if ( empty( $instance['design']['icon_size'] ) ) { $instance['design']['icon_size'] = '1.3em'; } return $instance; } public function get_form_teaser() { if ( class_exists( 'SiteOrigin_Premium' ) ) { return false; } return array( sprintf( __( 'Add a beautiful tooltip to the Button Widget with %sSiteOrigin Premium%s', 'so-widgets-bundle' ), '', '' ), ); } } siteorigin_widget_register( 'sow-button', __FILE__, 'SiteOrigin_Widget_Button_Widget' );{"id":98128,"date":"2026-05-24T15:18:41","date_gmt":"2026-05-24T15:18:41","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=98128"},"modified":"2026-05-24T15:18:42","modified_gmt":"2026-05-24T15:18:42","slug":"18-dos-donts-slot-information-by-the-slot-expert-john-grochowski-2024","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/18-dos-donts-slot-information-by-the-slot-expert-john-grochowski-2024\/","title":{"rendered":"18 Do’s & Don’ts Slot Information by the Slot Expert John Grochowski 2024"},"content":{"rendered":"

While they wear\u2019t be certain that gains, it reduce the household boundary consequently they are will preferred by members trying optimize its money over extended play. Instance, good 96% RTP slot yields $96 per $a hundred gambled normally, even though individual results differ. That it guarantees equity but also setting no slot should be \u201cdue\u201d hitting. Check out Ports Heaven Local casino to play slot online game of all types on line.<\/p>\n

Modern jackpots eg Mega Moolah and Hall out of Blood Suckers hr\u00e1t<\/a> Gods build most of the day a gamble is positioned up until some one strikes. Jackpots is actually caused by getting a fantastic mix of ideal-expenses icons all over a good payline, otherwise by way of a plus feature that provides a lot more possibilities to hit an enormous payment. Start with opting for position game with a high RTPs. Various other states, you could potentially enjoy ports from the personal casinos and sweepstakes gambling enterprises, that do bring awards. Have fun with free slot games to check headings ahead of betting a real income. Some highest-RTP slots give straightforward gameplay that is good for newbies.<\/p>\n

Their games typically emphasize bold layouts, strong styled voice structure, and you can bonus-motivated gameplay that closely reflects the feel of Konami machines into U.S. local casino floor. Prominent titles such as for example Bucks Servers, Smokin Sensuous Jewels, and you will Multiple Jackpot Gems offer recognizable local casino-flooring templates on the on the internet play. New game typically highlight straightforward game play, strong added bonus causes, and you will average-to-highest volatility, directly mirroring the feel of conventional You.S. gambling enterprise slots. The company is recognized for the tale-determined position collection and distinctive letters, also common franchises such as Publication off Deceased, Reactoonz, while the Steeped Wilde adventure games. Common headings like Doors from Olympus, Nice Bonanza, and you will Large Bass Bonanza has helped present brand new provider\u2019s reputation for bold layouts, fast-moving game play, and you may highly repeatable incentive enjoys. This new studio is widely known because of its function-steeped, high-volatility ports, which often tend to be Incentive Purchase alternatives, higher multipliers, and you will cascading reels.<\/p>\n

The latest slot is approximately some put-back fruity entertainment you to\u2019s juiced right up of the a small number of from inside the-online game boosters to set your right up getting big successful opportunities. Delight in very unstable game play toward an effective step three\u00d73 grid with 5 betways and you can 95.66% RTP. The newest Kalshi advice password ROTOWIRE gets a good $ten bonus for brand new profiles whom exchange $10 into the agreements. The main is to find video game with large strike cost minimizing volatility if you wish to victory with greater regularity. Sure, you could winnings at the online slots games, and several of the very well-known video game spend typically 97-98% for every single money spent.<\/p>\n

Expertise position terms is essential having improving your game play and you can promoting the profits. Popular live broker game become classics particularly blackjack and roulette, adapted for an engaging on the internet structure, including some online casino games. Many ports software and you may dining table online game appear on the cellular systems, ensuring a wealthy gaming feel. Having mobile playing, you could potentially gamble ports at your discretion, if or not you\u2019re yourself, on vacation where you work, or commuting. Cellular harbors programs render unequaled benefits, making it possible for professionals to enjoy their most favorite video game without the need to see an actual place. These types of video game are known for their pleasing game play together with potential so you can earn big, which makes them a prominent certainly position lovers.<\/p>\n

Layouts help you find an educated position video game to you. The more members watching a chance throughout these games, the greater the possibility victory. It\u2019s slot video game online, Virgin-style. That\u2019s as to the reasons our slot online game start from large-label exclusives in order to progressive jackpots, themed favourites plus. Kickstart your own playing feel and you may twist all of our most useful on line slot online game to your possibility to rediscover classics or find a different sort of favourite.<\/p>\n

Another title you to definitely matches our very own variety of greatest real cash harbors to play on line, you’ll like Starburst because of its convenience, colourful grid, and you may extremely versatile gaming assortment. And you may instead of progressives, it doesn\u2019t amount in the event the games recently dropped a good jackpot since your chances going to it remain the same. Why are they the professionals\u2019 most readily useful option is the excellent jackpot one\u2019s at risk.<\/p>\n

If your\u2019re also trying violation committed, mention the new titles, otherwise rating at ease with casinos on the internet, free online ports bring a straightforward and enjoyable answer to play. Access to of several templates \u2013 Out-of antique good fresh fruit servers in order to labeled clips slots and jackpots Risk-totally free amusement \u2013 Take advantage of the game play without the likelihood of taking a loss As zero put otherwise betting will become necessary, they\u2019re also available, low-tension, and you may perfect for beginners and you will experienced participants the exact same.<\/p>\n

The following post refers to in more detail why by a gaming strategy. When you are position RTP and you will volatility apply to an individual game bullet, brand new RTP and you will volatility out of betting approach apply at the entire games session or local casino visit. Although not, one doesn\u2019t mean that you might\u2019t influence the probability with the proper betting means and you may selecting the right game playing. We tested each of them using my own simulation application playing with reverse-engineered position video game. To attenuate the total sum of the bets, you have to attempt to dump your financial allowance that have only a small amount playing as possible. When you wager $dos on a single line, your average win is greater (and less constant) as once you bet $0.20 to your 10 lines.<\/p>\n

Have fun with the better progressive jackpot harbors at the our very own best-rated companion casinos now. Within VegasSlotsOnline, i wear\u2019t simply opinion ports\u2014we love to experience him or her. There’s absolutely no bucks getting claimed when you enjoy free position online game enjoyment just.<\/p>\n

These position templates come in all of our ideal checklist because people continue going back to them. Wilds stay in set across multiple spins getting larger earn potential. Progressive online ports become laden up with fun have designed to boost your successful prospective and keep maintaining gameplay new. First off to play your preferred free harbors, search through the collection, strike the enjoy switch and you are ready to go. Availableness this new free slot game and attempt demo versions out of real Las vegas gambling enterprise harbors on this page.<\/p>\n

Barz is actually a typical example of an online casino that professionally combines a good amount of game with great possibilities. Finest gambling enterprises are good on providing pros such as for instance 100 percent free revolves while making their promo accessible to most users. With so many possibilities, looking a good position websites in britain is not difficult. I and like to see prominent video game used in competitions, along with headings of top builders particularly NetEnt, Pragmatic Play, IGT, and you can Video game In the world.<\/p>\n

Games categories, local casino advertisements, fee procedures and you can trick has actually are defined in a way that helps men and women take a look at alternatives just before begin playing. If you are searching for more than simply ports, we’ve got lots of selection. Our very own experts’ choice defense all the various parts, as well as Megaways, party will pay, and you will antique ports.<\/p>\n

Constructed on a secure, fully authorized program, i submit smooth access round the both desktop computer and cellular, ensuring participants can enjoy a wide variety of online game while they including! With normally a lot of+ slots at sweeps casinos, you\u2019ll get a hold of multiple 100 percent free slot game to select from. On the web position game come in all types of categories and you may themes \u2013 of Old Egypt to help you amber-green Irish favourites \u2013 which\u2019s 1 \/ 2 of the enjoyment. Of several professionals check for simple tips to win within ports or just how to pick a casino slot games that\u2019s gonna strike, hoping there\u2019s a low profile key otherwise development trailing the brand new reels.<\/p>\n","protected":false},"excerpt":{"rendered":"

While they wear\u2019t be certain that gains, it reduce the household boundary consequently they are will preferred by members trying optimize its money over extended play. Instance, good 96% RTP slot yields $96 per $a hundred gambled normally, even though individual results differ. That it guarantees equity but also setting\u2026<\/p>\n

Continue reading<\/span><\/i><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-98128","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/98128","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/comments?post=98128"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/98128\/revisions"}],"predecessor-version":[{"id":98129,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/98128\/revisions\/98129"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=98128"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=98128"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=98128"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}