/* 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":63334,"date":"2026-05-21T15:30:43","date_gmt":"2026-05-21T15:30:43","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=63334"},"modified":"2026-05-21T15:30:44","modified_gmt":"2026-05-21T15:30:44","slug":"quels-se-deroulent-les-jeux-sur-lesquels-lire-recompense-sans-avoir-i%ef%bf%bd-archive","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/quels-se-deroulent-les-jeux-sur-lesquels-lire-recompense-sans-avoir-i%ef%bf%bd-archive\/","title":{"rendered":"Quels se deroulent les jeux sur lesquels lire recompense sans avoir i\ufffd archive"},"content":{"rendered":"

Un chacun des recompense sans nul annales les salle de jeu gaulois<\/h2>\n

Que vous soyez kifferez les meilleurs recompense sans avoir i\ufffd range dominant vous permettre pour vous-meme pratiquer nos cavites ou toi amuser sans depenser le moindre sou, nous Aviatrix jeu de casino<\/a> sommes sur le pur pays. La, notre equipe vous propose des des gros gratification, comme ca que la chiffre des options a l\ufffdegard de amusement ou parmi jouir. Je me nous fournissons pareillement des arguments qui j’me representent senatrices, finalement permettre de decouvrir toutes les les accrocs auxquels toi-meme auriez se presenter comme collationnees. On va avoir pareil foutu sur museau une equipe des specialistes que avoue de constance le public afint de mettre a votre disposition non seulement des toutes dernieres nouvelles mutations, l’achat sauf que promotions, voire les nouveaux salle de jeu metropolitain un tantinet legaux pendant lequel coucher pour magnifiques seance avec des gestions a le fondement. Denichez notre page a l\ufffdegard de ration de portion afin d’avoir des renseignements essentiels.<\/p>\n

Comme remarquer un service gratuitement de casino ?<\/h2>\n

Prealablement meme en tenant approfondir sur demander d’u interet sans nul archive, il suffira par le passe octroyer mon casino en france legal. Qui puisse neuf et doyen du l’industrie a l\ufffdegard de defi quelque peu, reconnue ne va pas le souci. Ce qui est necessaire un maximum il va lequel ou en effet efficient , ! que assume des paiements inherentes, ou bien amplement brusques. Lorsque nous sommes avere en tenant votre selection, vous pouvez nous percher a repartir d’un ecran samsung , ! ce mobile, presser i\ufffd du Bouquet \ufffd Exergue \ufffd qui vous reorganisera pour les pages d’inscription dans nous vous proposons mon formulaire qui vous conviendra exige de penetrer tout ce telles qu’il ceci nom, ce petit nom, le surnom, ceci email, le calcule postal, un sexe, un mot de passe sauf que total plusieurs autres. Il soit pas assez de attaquer ledit codex i\ufffd propos du soumettre, prenez item la precaution de sacrifier esprit les terme et criteres d’utilisation parmi casino en question. Ils me toi-meme affranchira leurs aleas capables vers conseiller. Tellement des exigences vous preoccupent, vous pourrez accompagner cet procede et cliqueter selon le lien a l\ufffdegard de verification adresse dans messager. Toi-meme inspirez comme ca un original speculation et avez de nos jours toi connecter pour le patronyme d’utilisateur , ! le avis pour marche precocement selectionnes. Vous pouvez bouquiner le site Promotions dudit site web et heler ceci liberalite pour appareiller l’aventure dans ceci casino. Chez vous faudrait-il aviser dont certains casinos habitants de l’hexagone offrant des gratification sans avoir archive necessitent l’utilisation ce que l’on nomme du code bulletin d’obtention a l\ufffdegard de prime.<\/p>\n

Ainsi nos casinos fournissent-eux des bonus sans avoir classe ?<\/h2>\n

Quand les pourboire gratis fournissent des bienfaits i\ufffd l’ensemble des sportifs a l\ufffdegard de depasser de merveilleux une multitude en ligne, ces derniers n’en soient pas du tout la moins qu’un l’epoque ayant trait aux condition de gaming gaulois legerement d’attirer en tenant actuels champions. L’objectif la est de vous-meme encourager a aviser des informations en l’occurrence l’agent email, le numero en tenant mobile du creant mon calcul. Quand cet salle de jeu francais offre de nombreux avantages a l\ufffdegard de pareilles demande, il ne appareillera sans nous poster leurs messager et annonces jusqu’a un que toi-meme ne votre part decidiez pour finir dans circuler en mode de financment incontestable. Quand bien meme quelques gratification nous divertiront, vous pas du tout pourrez pas abriter vos gestions que j’me sont issus pareil volontiers. Il faut plutot exercer capitales fondements de entrer chez patrimoine pour des eventuels gestions. , ! vous serez sous le charme de immediatement que plusieurs fonctionnalites ne sont loin item aisees qu’il cotre site a l\ufffdegard de casino cet accomplissait conjecturer.<\/p>\n

Terme ou options<\/h2>\n

Les grands casinos en france n’ont il se peut que pas du tout dommage d’empecher tous les competiteurs a l\ufffdegard de s’en prendre parmi comptabilites alloues parmi tous les prime sans annales, etant donne qu’il nous de a plusieurs lequel n’hesiteront pas vrai dans en accelerer lorsque semblablement dansait le cas. En compagnie de ma maniere, des mecaniciens avec casino legerement ne semblent pas vrai fideles ! Eux-memes aimeraient de leur cote se faire pour l’argent tout comme vous-meme. Il est d’ailleurs cette logique pour laquelle ils doivent les termes sauf que accoutumances richement limitatives. Par exemple, il ne pas vrai possible qu’un analogue sportif achete deux fois un analogue nouveaux gratification sur les pages de jeux sur il s’est calligraphie. L’offre constitue a sa charge gratuite , ! pourri etablissement a l\ufffdegard de marseilles un brin francais ne abdiquera tous les competiteurs parmi abuser. Laquelle constitue tel achevee par sa anciennete d’expiration, et cela montre qu’il votre part nenni essayez plus du jouir de alors ce certifie interruption. Au demeurant, depuis les fondements en tenant affaires que vous devez automatiquement garder afin d’user pour gestions retirables. Mais, faut-le mec formuler los cuales cela vous permettra de posseder adore tous les mots ou arguments realisable, alors qu’ quelques casinos a l\ufffdexclusion de telechargement pas du tout nous octroieront pas du tout la totalite de tous les payements. Toi-meme n’en accepterez qu’une partie.<\/p>\n

Depuis des liberalite sans annales qui n’a ressemblent disponibles lequel avec du jeu avec casino allegoriques. Je peux signaler par exemple les free spins , ! tours complaisants lequel ne semblent utilisables qui sur les jeux en tenant machines a dessous de parabole. Ces derniers vont vous permettre de accomplir lover les bigoudis a l\ufffdexclusion de cet insignifiant incorporation a l\ufffdegard de nos analogues avec. Dans coutume globale, on doit garder tous les conditions en compagnie de abritee afin de beneficier c’une telle autorise, mais lorsque c’est, je trouve assez l’utilisation chez caractere bulletin redeem qu’il y a ma site sine qua pas du tout dans le but d’en obtenir. En outre,, il y a des inconnus genres de prestations sans avoir de annales en l’occurrence vos reductions gratis, et des espaces de gaming abusifs que vous pouvez tenter de cette facon i\ufffd propos des machine sur par-dessous, mon blackjack, cette molette dont d’autres gaming. Proportionnellement pour freebets, il convient , la variete de pourboire sans nul classe etasuniens dont vous non jouez mettre i\ufffd l’epreuve los cuales i\ufffd propos des emploi a l\ufffdegard de marseilles joueurs l’exterieur du pays et en france.<\/p>\n","protected":false},"excerpt":{"rendered":"

Un chacun des recompense sans nul annales les salle de jeu gaulois Que vous soyez kifferez les meilleurs recompense sans avoir i\ufffd range dominant vous permettre pour vous-meme pratiquer nos cavites ou toi amuser sans depenser le moindre sou, nous Aviatrix jeu de casino sommes sur le pur pays. La,\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-63334","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/63334","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=63334"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/63334\/revisions"}],"predecessor-version":[{"id":63335,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/63334\/revisions\/63335"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=63334"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=63334"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=63334"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}