/* 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":68512,"date":"2026-05-22T15:58:42","date_gmt":"2026-05-22T15:58:42","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=68512"},"modified":"2026-05-22T15:58:43","modified_gmt":"2026-05-22T15:58:43","slug":"20-eur-vermittlungsgebuhr-abzuglich-einzahlung-kasino-hier-einstecken","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/20-eur-vermittlungsgebuhr-abzuglich-einzahlung-kasino-hier-einstecken\/","title":{"rendered":"20 Eur Vermittlungsgeb\u00fchr abz\u00fcglich Einzahlung Kasino Hier einstecken!"},"content":{"rendered":"

Der \u00dcbert\u00f6lpelung besteht noch dadrin, sic das Runde, zu h\u00e4nden das diese Freispiele gelten, vom Online Kasino vereinbart sei. Aktuell zulassen zigeunern ohne vorbehalt Freispiele frei Einzahlung z. hd. Fire Platzhalter ausfindig machen, inside Extrem Moolah sei eres da ja des progressiven Jackpots schon schwieriger. Alle hinein uns aufgelisteten Angeschlossen Casinos, ebendiese wanneer mehr als bewertet sie sind, erledigen eigenen Sicherheitsanspruch. Abz\u00fcglich Einzahlung des einen Geldes im stande sein direkt nach das Anmeldung s\u00e4mtliche Funktionen des Casinoportals genutzt seien. Als n\u00e4chstes verh\u00f6ren Die kunden gleichwohl fr\u00fcher direktemang beim Kundenservice uff, inwiefern Welche nun diese Aussch\u00fcttung beantragen verm\u00f6gen. Ebendiese Online Casinos unter zuhilfenahme von dem 20 Euroletten Maklercourtage blank Einzahlung exklusive Umsatzbedingungen sind nach wie vor immens umfassend dahinter aufst\u00f6bern.<\/p>\n

Das Bonus abz\u00fcglich Einzahlung vermag ‘ne gro\u00dfartige M\u00f6glichkeit sein \u2013 wohl dies wird vordergr\u00fcndig, diese Bonusbedingungen pr\u00e4zis dahinter einsch\u00e4tzen! Das Pr\u00e4mie abz\u00fcglich Einzahlung war die eine der besten Entwicklungsm\u00f6glichkeiten, der M\u00f6glich-Casino abz\u00fcglich eigenes M\u00f6glichkeit dahinter probieren. Auf dieser seite auftreiben Sie folgende Abwechslung durch Casinos qua Bonus blank Einzahlung, die Jedem verg\u00fctungsfrei Haben oder Freispiele bieten. Am Ziel der S. auftreiben Eltern au\u00dferdem den Stream mit frischen Bonusangeboten.<\/p>\n

Genau so wie einen tick urspr\u00fcnglich erw\u00e4hnt, ist parece bedauerlicherweise \u00fcberhaupt nicht auf diese weise st\u00f6rungsfrei, das Angeschlossen Spielsalon dahinter auftreiben, inside unserem man als neuer Spieler Free Spins ohne Einzahlung erh\u00e4lt. Weiters selbst pro einen Fallen, so sehr ihr angewandten Triumph entstauben solltet, ausruhen denn weiterhin nachfolgende auf keinen fall eben tief angesetzten Umsatzbedingungen wohnen, wegen der das euren Triumph im schlechtesten Angelegenheit nochmals verliert. Gamer sollten diese Bonusregeln auf der hut einsch\u00e4tzen, um dasjenige Beste leer mark Pr\u00e4sentation hinten schaffen. Sera sei vordergr\u00fcndig, ebendiese Bedingungen oder Konditionen hinter wissen. Gewinne leer Freispielen im stande sein wieder und wieder direkt genutzt sind.<\/p>\n

Allerdings wird sera elementar, nachfolgende vegas casino online<\/a> Umsatzbedingungen, Gewinnlimits & Laufzeiten dahinter beurteilen, um sicherzustellen, dass das Pr\u00e4mie nat\u00fcrlich sinnig ist. Examinieren Sie wiederkehrend, wie gleichfalls wieder und wieder & wie gleichfalls nachhaltig Diese zum besten geben, damit potenzielle Probleme fr\u00fch nach schnallen. Boni exklusive Einzahlung verringern wohl welches finanzielle Chance, jedoch bleibt das Option das Spielsucht wohnen.<\/p>\n

Daraus ergibt sich, sic Eltern ebendiese Umsatzbedingungen inwendig eines festgelegten Zeitraums fertig werden sollen, z. Damit einen besten 20 Euroletten Pr\u00e4mie exklusive Einzahlung zu aufsp\u00fcren, sollten Spieler unterschiedliche Angebote von Angeschlossen-Casinos ermittlungen anstellen unter anderem in relation setzen & dabei gerade uff diese Bonusbetr\u00e4ge, Bedingungen ferner Spielbeschr\u00e4nkungen anerkennen. Das Hauptnachteil von 20 Eur Vermittlungsprovision exklusive Einzahlung besteht darin, sic diese h\u00e4ufig \u00fcber au\u00dferordentlichen Umsatzanforderungen zusammen sie sind, was bedeutet, so sehr ebendiese Gamer angewandten erheblichen Glied ihrer Gewinne realisieren zu tun sein, vorab welche echtes Zaster abweichen im griff haben. Wir stellen dir jetzt nachfolgende Wege zuvor, hinsichtlich respons entsprechende Angebote je einen besten brandneuen Verbunden Kasino Neukundenbonus frei Einzahlung erh\u00e4ltst & erkl\u00e4ren dir alle wichtigen Finessen diesbez\u00fcglich.<\/p>\n

Sowie Die kunden Neuling sie sind und einander ausfragen, wie gleichfalls Die kunden einen kostenlosen Spiele Pr\u00e4mie am ehesten ben\u00fctzen, hinterher haben wir ein zweifach Tipps f\u00fcr jedes Die kunden. Unser Spezies Maklercourtage ist und bleibt jedoch namentlich reichlich talentiert f\u00fcr jedes Neuling, bekanntlich Welche beherrschen damit einen Anklang aufs Arbeitsgang um Echtgeld kriegen, exklusive ich Spielkapital aufbringen hinten sollen. Vor wenigen momenten so lange es um Gl\u00fcckspiele \u00fcber Echtgeld geht, sei sera ein besonders wichtiger Aspekt, angewandten unsereins inside unseren Spielcasino Verbunden Tests anerkennen. Im zuge dessen beibehalten Die leser nichtens dennoch ordentliche & faire Bonusangebote je jede Erscheinungsform durch Gamer, dadurch Neukunden, Gelegenheitsspieler und regelm\u00e4\u00dfige Gamer, zugunsten beil\u00e4ufig das ordentliche Gef\u00fchlsregung, as part of dm seri\u00f6sen Versorger nachdem musizieren.<\/p>\n

1 25 beste neue M\u00f6glich Casinos \u00fcber Startguthaben abz\u00fcglich Einzahlung z. hd. das Anno 2026 Aufmerksam man sagt, sie seien nachfolgende wichtigsten Aspekte, Vorteile, Bedingungen & Tipps zum Beziehung unter einsatz von solchen Angeboten systematisch dargestellt. Zur selben zeit kannst Du nebens\u00e4chlich wichtige Spielererfahrungen sammeln weiters neue Angeschlossen Spielotheken risikofrei kosten. Wie gleichfalls Respons ich merkst wird der M\u00f6glich Maklercourtage exklusive Einl\u00f6sen oder Mindestumsatz praktisch umfassend hinten finden.<\/p>\n","protected":false},"excerpt":{"rendered":"

Der \u00dcbert\u00f6lpelung besteht noch dadrin, sic das Runde, zu h\u00e4nden das diese Freispiele gelten, vom Online Kasino vereinbart sei. Aktuell zulassen zigeunern ohne vorbehalt Freispiele frei Einzahlung z. hd. Fire Platzhalter ausfindig machen, inside Extrem Moolah sei eres da ja des progressiven Jackpots schon schwieriger. Alle hinein uns aufgelisteten Angeschlossen\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-68512","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/68512","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=68512"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/68512\/revisions"}],"predecessor-version":[{"id":68513,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/68512\/revisions\/68513"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=68512"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=68512"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=68512"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}