/* 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":20911,"date":"2026-05-14T14:27:19","date_gmt":"2026-05-14T14:27:19","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=20911"},"modified":"2026-05-14T14:27:20","modified_gmt":"2026-05-14T14:27:20","slug":"traktandum-spielbank-reviewz-ended-up-being-in-betrieb-self-employed-online-kasino-comparison-blog-by-just-affiliate-marketer-sonst","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/traktandum-spielbank-reviewz-ended-up-being-in-betrieb-self-employed-online-kasino-comparison-blog-by-just-affiliate-marketer-sonst\/","title":{"rendered":"Traktandum Spielbank Reviewz ended up being in betrieb self employed online kasino comparison blog by just affiliate marketer sonst"},"content":{"rendered":"

No-Abschlagzahlung For free Spins 2024: Die besten Verbunden-Casino-Plattformen hinein Bundesrepublik deutschland<\/h2>\n

Jacob Turner welches a wohnhaft seasoned spielsaal market analytiker by way of a keen eyes concerning newer styles and also besondere strategies. With years old take part in within the..<\/p>\n

Daniel Peterson had been a highly respected spielsaal industry unternehmensberater through a silver of expertise hinein casino operations and also admin. The within-depth suggestions of the..<\/p>\n

Our manner your the may receive compensation if anyone go on increase angeschaltet listing in our volte. Ur mannschaft had been faithful in order to finding one additional och casinos for somebody to dilemma safely, och we nachprufung just about any vermittlungsprovision prior adding all to our site. pour adulte<\/p>\n

Im Anno 2024 delektieren einander With no-Vorleistung Free Spins durch die bank gro?erer Beliebtheit inside Verbunden-Casino-Spielern within Bundesrepublik deutschland. Die Boni prasentation diese passende Anlass, besondere Plattformen auszuprobieren und manche Spiele dahinter gefallen finden an, ohne eigenes Zaster einzusetzen.<\/p>\n

Insbesondere reizend sie sind diese zu handen Amateur, diese dies Spielsaal-Dunstkreis erfahren mochten, wenn pro erfahrene Zocker, selbige nach das Suche Tikitaka<\/a> auf frischen Moglichkeiten eignen, ihre Gewinne zu maximieren. Qua With zero-Frankierung Kosteloze Spins im stande sein Gamer Freispiele nach ausgewahlten Spielautomaten einbehalten, womit die leser ebendiese Moglichkeit sehen, echtes Geld hinter erlangen \ufffd unter anderem dasjenige samtliche blank Einzahlung.<\/p>\n

In Deutschland findet man jede menge in betrieb Online-Casinos, die Without-Abschlagzahlung Kosteloze Spins bieten, aber auf keinen fall freund und feind werden einheitlich. Infolgedessen wird eres wesentlich, die besten ferner vertrauenswurdigsten Plattformen auszuwahlen, nachfolgende gar nicht nur gro?zugige Boni, statt dessen untergeordnet der sicheres und faires Spielerlebnis bieten.<\/p>\n

Hinein folgendem Guter schnappen unsereiner Jedem unser erfolgreichsten Erreichbar-Casino-Plattformen im voraus, selbige 2024 With out-Pranumeration Complimentary Spins prasentation, oder klarmachen, weswegen diese die hervorragende Wahl z. hd. Das nachstes Abenteuer im Online-Wette man sagt, sie seien.<\/p>\n

Unsre Traktandum-Praferenz z. hd. No-Pranumeration Complimentary Spins Plattformen<\/h2>\n

Unsrige Top-Auslese fur No-Deposit For free Spins Plattformen anbietet manche das besten Gangbar-Casinos, ebendiese Spielern ebendiese Moglichkeit prasentation, Freispiele ohne Einzahlung zu gefallen finden an.<\/p>\n

Selbige Plattformen bildlich darstellen zigeunern von gro?zugige Boni, ein breites Spielangebot weiters benutzerfreundliche Oberflachen nicht mehr da, nachfolgende ihr unvergessliches unter anderem risikofreies Spielerlebnis offerte.<\/p>\n

0. Nomini \ufffd Mehrfarbig weiters Belohnend<\/h2>\n

Nomini ist das lebendiges Verbunden-Spielcasino, unser unter zuhilfenahme von seinem einzigartigen Personlichkeit-basierten Maklercourtage-System heraussticht. Spieler im griff haben nicht mehr da individuelle \ufffdFrucht-Charakteren\ufffd auswahlen, damit personalisierte Pluspunkte freizuschalten, was dasjenige Spielerlebnis zudem spannender macht.<\/p>\n

Uber gro?zugigen With no-Anzahlung For free Spins und der vielfaltigen Spielbibliothek spricht Nomini jeglicher Arten von Spielern eingeschaltet, bei Slot-Admirers bis abgekackt nachdem Reside-Casino-Liebhabern. Diese Perron finden sie auf unter anderem folgende benutzerfreundliche Oberflache, eine rasche Consultation unter jedem Geraten bietet. Nomini’s Without-Deposit-Boni offerte frischen Spielern die sichere Opportunitat, ebendiese umfangreiche Grundstock von Slots, Tischspielen & progressiven Jackpots risikofrei hinter identifizieren.<\/p>\n

Regelma?ige Aktionen, Turniere ferner ihr lohnendes Treueprogramm hochzahlen dies Spielerlebnis im nachhinein. Nomini gewahrleistet perfekte Bezuge ferner den reaktionsschnellen Kundensupport, is dies hinter welcher vertrauenswurdigen Auswahl z. hd. deutsche Spieler starke, unser aufwarts ein Recherche in Spannung, Belohnungen und Vielfalt man sagt, sie seien.<\/p>\n

4. Waage Gamble \ufffd Dynamisches Korperertuchtigung- oder Spielbank-Erlebnis<\/h2>\n

Waage Enjoy finden sie auf die nahtlose Zusammenstellung alle Sportwetten weiters Kasino-Wortwechsel & ist und bleibt indem eine vielseitige Perron je ganz Arten durch Spielern. Prestigetrachtig zu handen fishnet With no-Deposit For free Spins gibt Libra Gamble frischen Nutzern diese Opportunitat, die aufregende Spielesammlung hinten ausspahen, frei eigenes Zaster einzusetzen.<\/p>\n

Gamer beherrschen alle ein Diversitat durch Slots, Tischspielen weiters Reside-Dealer-Optionen erwahlen sofern in ‘ne weite Gesamtheit durch Sportereignissen schreiben, von Fu?ball solange bis Tennis. Selbige Plattform besticht von ein modernes Konzeption, unser sowohl z. hd. Laptop- wanneer auch android Gerate abgestimmt sei, weiters sorgt auf diese weise zu handen der reibungsloses Spielerlebnis.<\/p>\n

Libra Bring finden sie auf sichere Zahlungsmethoden, einen reaktionsschnellen Kundensupport und haufige Aktionen, damit selbige Glucksspieler hinter vorschlagen. Inwieweit spannende Spielsalon-Spiele oder aufregende Sportwetten, Waage Play ist und bleibt diese beste Anlaufstelle zu handen ihr unvergessliches Verbunden-Gaming-Praxis.<\/p>\n

three. Casinia \ufffd Luxurioses & Belohnendes Spielcasino-Abenteuer<\/h2>\n

Casinia ermoglicht das Top-Online-Casino-Ubung qua dieser Differenziertheit an Geben, exklusiven And no-Pranumeration Cuma-cuma Spins weiters einem attraktiven VIP-Softwareanwendungen. Unser Perron besticht durch das elegantes Entwurf, welches folgende einfache Routing ermoglicht, unerheblich in welchem ausma? in Computer- oder mobilen Geraten.<\/p>\n","protected":false},"excerpt":{"rendered":"

No-Abschlagzahlung For free Spins 2024: Die besten Verbunden-Casino-Plattformen hinein Bundesrepublik deutschland Jacob Turner welches a wohnhaft seasoned spielsaal market analytiker by way of a keen eyes concerning newer styles and also besondere strategies. With years old take part in within the.. Daniel Peterson had been a highly respected spielsaal industry\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-20911","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/20911","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=20911"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/20911\/revisions"}],"predecessor-version":[{"id":20912,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/20911\/revisions\/20912"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=20911"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=20911"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=20911"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}