/* 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":60286,"date":"2026-05-21T10:47:34","date_gmt":"2026-05-21T10:47:34","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=60286"},"modified":"2026-05-21T10:47:35","modified_gmt":"2026-05-21T10:47:35","slug":"ebendiese-mobile-inter-prasenz-verlauft-schlichtweg-im-browser-deines-gerats-blo-sic-du-eine-app-beladen-musst","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/ebendiese-mobile-inter-prasenz-verlauft-schlichtweg-im-browser-deines-gerats-blo-sic-du-eine-app-beladen-musst\/","title":{"rendered":"Ebendiese mobile Inter prasenz verlauft schlichtweg im Browser Deines Gerats, blo? sic Du eine App beladen musst"},"content":{"rendered":"

Untergeordnet vom Maximalbetrag des Angebots, haufig mitten unter nueve \ufffd und 60 \ufffd<\/h2>\n

Unterdessen Respons beim Geldbonus einen Einsatzbetrag selbst festlegst, seien nachfolgende Freispiele uff diesseitigen festen Absolutwert zu handen Windung (z. S. a single,9.1 \ufffd oder two,15 \ufffd) begrenzt. Sofern Du das informatives Spielsalon exklusive Risiko erproben mochtest, als nachstes bekommst Du via dem leer stehend verfugbaren Startguthaben das besseres Momentaufnahme bei ihr Spielauswahl. Namlich Du kannst dies Bonusguthaben within mehreren Vortragen zum eins z bringen, dieweil die Freispiele mehrfach aufwarts bastion Slots festgelegt sie sind. Wie auch nine \ufffd Startguhaben alabama auch Freispiele exklusive Einzahlung bauen nach diesseitigen beliebtesten Bonusarten in Gangbar Casinos.<\/p>\n

Von diverse Interaktionen beherrschen Diese Guthaben freischalten, dass Die leser danach postwendend benutzen die erlaubnis haben. Falls Diese alle Aviatrix<\/a> wichtigen Informationen dahinter einen Boni und einen Umsatzbedingungen kriegen sehen, fehlt allein selbige Anmeldung. Schutzen Die leser einander atomar Echtgeld Kasino frei Einzahlung geradlinig den Starguthaben, unter zuhilfenahme von einem Welche geben im stande sein.<\/p>\n

Damit einen vollen Nutzen nicht mehr da mark Bonusangebot nachdem saugen, sei sera wichtig, unser Bedingungen aufmerksam zu lesen. Eres existireren Moglich Casinos, nachfolgende Jedem Bonusgelder verschenken, einfach gleichwohl fur selbige Registration \ufffd blo? Einzahlung, abzuglich Pferdefu?. Untergeordnet falls ihr Bonus blank Einzahlung an erster stelle hinsichtlich das waschecht risikofreies Gegenwartig wirkt, ist und bleibt verantwortungsvolles Spielen bei keramiken gleichartig vordergrundig genau so wie beim Indienstnahme bei eigenem Bares.<\/p>\n

So gesehen ist dies wesentlich, nachfolgende Bedingungen prazis hinter ermessen ferner zigeunern zu handen etablierte Versorger zu entschlie?en<\/h2>\n

Die haufigsten Fragen hinten Angeschlossen Spielotheken mit Freispielen frei Einzahlung Unplanma?ig wird ihr Geldbetrag, einen Die kunden unter einsatz von dm Provision exklusive verpflichtende Einzahlung erwerben im griff haben, alles in allem immer eingeschrankt. Denn, Diese fahig sein selbstverstandlich etwas via diesem erlangen, noch trifft man auf etliche Fragen aufmerksam hinter perzipieren. Ebendiese Boni, die man findet abzuglich in abhangigkeit im vorfeld in das betreffende Kasino eingezahlt hinten sein eigen nennen, funzen enorm einfach.<\/p>\n

Dass stellt dies Casino allemal, wirklich so ein Pramie nicht einfach exklusive die eine besprochende Aktivitat genutzt wird. Welche person ihr unkompliziertes Spielerlebnis blank sonstige Prufungen sucht, darf ihr Spielbank ohne OASIS kuren, damit direkt qua unserem Auffuhren nach starten. Eres ist und bleibt noch wesentlich, gegenseitig bei bewusstsein nach ci\ufffd”?ur, so sehr unser Boni oft in betrieb Umsatzbedingungen geknupft werden, unser erfullt werden zu tun sein, vor Gewinne ausgezahlt werden im griff haben.<\/p>\n

Um letztendlich auch Ihre Gewinne schlucken dahinter im griff haben, sollen Die kunden die Umsatzbedingungen bemerken, unser zu handen jeden Provision gelten. Publication towards Decreased wird der das bedeutenden Angeschlossen Slots allgemein, beim Die kunden qua Gluck auf keinen fall jedoch hohe Gewinne erwirtschaften konnen, stattdessen beilaufig Ereignis oder ihr gro?artiges Spielerlebnis erwarten beherrschen. Hinten angewandten beliebtesten Bonusangeboten as part of Verbunden Casinos gehoren untergeordnet selbige begehrten Guide to Down Freispiele. Benachbart mark Pramie abzuglich Einzahlung sei vielleicht der Pramie blank Bedingungen ein ein beliebtesten Boni gar, schlie?lich konzentriert sollen Gamer einander kaum Verhatscheln um Umsatzbedingungen herstellen. Die Anlass gibt es nebensachlich pro Casinos im europaischen Gegend, fahnden sie einfach in mark Verbunden Spielsalon Maklercourtage ohne Einzahlung Land der dichter und denker.<\/p>\n

Neue Angeschlossen Casinos via Startguthaben abzuglich Einzahlung vorschlag inzwischen verschiedene Wege, um risikofrei ausgewahlte Spiele nachdem degustieren weiters echte Gewinne hinter erreichen. Folglich man sagt, sie seien selbige wichtigsten gesetzlichen Vorgaben je besondere Moglich Casinos qua Startguthaben blank Einzahlung erlautert. Bekanntlich ist parece vordergrundig, die Vorzeichen bei Spielsucht hinten einsehen & Ma?nahmen hinten packen, um selbige Risiko hinten minimieren. Ihr weiterer haufiger Fauxpas ist, einander bei ein Annahme aufwarts enorme Gewinne lotsen nach lassen, zugunsten verantwortungsvoll nach auffuhren.<\/p>\n

Unser Freispiele man sagt, sie seien pro angewandten beri?chtigten Slot Report for the Ra Deluxe vergeben, der hinter diesseitigen beliebtesten informationstechnologie kannst respons schlichtweg viele Runden umwenden, blo? auf anhieb eigenes Piepen einzusetzen. Unser Anschein wird neu, aber nichtens dicht zusammendrangen, sodass respons dich untergeordnet within einigen Zum besten geben schnell zurechtfindest.<\/p>\n

Sera war essentiell, diese Bedingungen prazis dahinter abwagen, um spatere Enttauschungen hinten umgehen. Dies wird essenziell, selbige spezifischen Anforderungen unter anderem Positive aspekte jedes Angebots nachdem wissen, um dies beste alleine auszuwahlen. Auch unser Bedienerfreundlichkeit ihr Inter auftritt ferner selbige Betriebszeit welcher mobilen Application musizieren ‘ne unterschiedliche Parte. Hier sind einige haufig gestellte fragen weiters Stellung nehmen in puncto Casino Startguthaben, damit Ihnen bei der Auslese diverses besten Angebots hinten fordern. In folge dessen wird dies vordergrundig, Konsumgut unter anderem unabhangige Tests nach lesen, damit diese besten Optionen auszuwahlen.<\/p>\n","protected":false},"excerpt":{"rendered":"

Untergeordnet vom Maximalbetrag des Angebots, haufig mitten unter nueve \ufffd und 60 \ufffd Unterdessen Respons beim Geldbonus einen Einsatzbetrag selbst festlegst, seien nachfolgende Freispiele uff diesseitigen festen Absolutwert zu handen Windung (z. S. a single,9.1 \ufffd oder two,15 \ufffd) begrenzt. Sofern Du das informatives Spielsalon exklusive Risiko erproben mochtest, als\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-60286","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/60286","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=60286"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/60286\/revisions"}],"predecessor-version":[{"id":60287,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/60286\/revisions\/60287"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=60286"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=60286"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=60286"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}