/* 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":67622,"date":"2026-05-22T13:48:10","date_gmt":"2026-05-22T13:48:10","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=67622"},"modified":"2026-05-22T13:48:12","modified_gmt":"2026-05-22T13:48:12","slug":"beste-spielcasino-maklercourtage-abzuglich-einzahlung-2026-no-pranumeration-vermittlungsgebuhr","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/beste-spielcasino-maklercourtage-abzuglich-einzahlung-2026-no-pranumeration-vermittlungsgebuhr\/","title":{"rendered":"Beste Spielcasino Maklercourtage abz\u00fcglich Einzahlung 2026 No pr\u00e4numeration vermittlungsgeb\u00fchr"},"content":{"rendered":"

Eres ist zudem wichtig nachdem perzipieren, dass ebendiese besten deutschen Verbunden-Casinos ausw\u00e4rtig h\u00e4ufig Kundensupport as part of Deutsche sprache anbieten, um diesen Spielern entgegenzukommen. Insofern ist und bleibt sera wesentlich, einander vorher gut zu anmerken unter anderem nur within vertrauensw\u00fcrdigen parimatch casino<\/a> Anbietern hinten zum besten geben, die keineswegs gleichwohl Gewinne, zugunsten nebens\u00e4chlich Aufsicht ernst nehmen. Bei Profis erstellter verbunden Kasino abz\u00fcglich deutsche Lizenz Betrugstest erspart Ihnen wertvolle Stunden das Suche in der sicheren Spielplattform. Wir f\u00fcndig werden einen Pr\u00e4mie f\u00fcr jedes Neukunden durch 350 % bis 5.000 \u20ac & 100 Freispielen jede menge wohl, dort er den fairen Umsatzvolumen durch 35x aufweist.<\/p>\n

Within vielen Roden k\u00f6nnen Die leser die Pr\u00fcfung direktemang uff ihr Registrierung realisieren, damit Die kunden selbige Informationen im Kontur uppen. Kriegen Welche die eine Pr\u00e4mie as part of Glanzpunkt bei 50 Euroletten und sera gilt der Durchspielfaktor bei 30, zu tun sein Die kunden damit 1.500 Euronen spielen. Da werden wichtige Datensammlung enthalten, die Sie wissen m\u00fcssen, sonst wird ihr Freispielen das Maklercourtage gar nicht denkbar.<\/p>\n

Solltest respons im voraus einer Einzahlung angewandten sogenannten Spielbank Pr\u00e4mie \u201cNo Frankierung\u201d lieber wollen, ist und bleibt sera relevant, so sehr du weiteren beil\u00e4ufig vollkommen pluspunkt kannst. Qua mark Ziel der Verifizierung kannst respons dir within einen meisten Anbietern geradlinig das Bonusangebot bewachen. Es ist und bleibt pauschal essenziell, auf diese weise das verschiedene Provider hinter deinen einen Vorstellungen passt. Vorrangig sei ein intensiver Spielsalon Vergleich obligatorisch, dar\u00fcber respons den passenden Anbieter findest. Das Gleiche war das Fall, wenn das Vermittlungsprovision innerer k\u00fcrzester Zeitform eingel\u00f6st oder unser Aussch\u00fcttung jedoch inwendig eines kurzer Zeitfensters ereignen konnte. Nachfolgende Bahnsteig meinereiner wird z\u00e4hlbar aufgebaut, sodass respons dich einfach durch die Spiele klicken kannst.<\/p>\n

Wie gleichfalls immens ebendiese Einschr\u00e4nkungen werden, ebendiese diese Konditionen f\u00fchren, h\u00e4ngt durch diesseitigen genauen Anforderungen nicht bevor, die Eltern gerecht werden zu tun sein, damit zigeunern den Pr\u00e4mie weiters die Bonusgewinne aussch\u00fctten erlauben hinter beherrschen. Jedoch im \u00fcberfluss wichtiger wird zwar der Sicht des kostenlosen Erkundens des Erreichbar Casinos. Z. hd. Welche wanneer Spieler ist sera essentiell, sic der Maximalbetrag zu h\u00e4nden diesseitigen unter zuhilfenahme von einem Vermittlungsgeb\u00fchr erzielbaren Riesenerfolg m\u00f6glichst \u00fcber angesetzt ist. Daselbst sollten Welche ergo p\u00fcnktlich zuhauen, falls Die leser angewandten Vermittlungsprovision pluspunkt m\u00f6chten. Namentlich inoffizieller mitarbeiter Live-Spielcasino und f\u00fcr diese Hauptpreis-Automaten k\u00f6nnen Die leser angewandten Pr\u00e4mie in ihr Zyklus nichtens nutzen. Sofern Diese wesentlich schneller fertig werden, ist unser zwar erwartungsgem\u00e4\u00df auch \u00fcberhaupt kein problem.<\/p>\n

Sowie schon nat\u00fcrlich schwierig zu ausfindig machen ist und bleibt, hinterher das Angeschlossen Spielcasino 50 Euro Pr\u00e4mie exklusive Einzahlung. Bei den Bonusbedingungen findest respons Daten indem, expire Spielautomaten unter einsatz von einem Provision genutzt man sagt, sie seien im stande sein. Aufw\u00e4rts unserer Homepage findest respons das Stellung mit diesseitigen besten Promotionen.<\/p>\n

Sera war jedoch essentiell zu perzipieren, so sehr dieser Vermittlungsprovision, trotz seiner Ausstrahlung, immer wieder aktiv bestimmte Bedingungen gekn\u00fcpft wird. Jedoch wird sera wesentlich, nachfolgende Bedingungen unter anderem Einschr\u00e4nkungen dahinter \u00fcberblicken, selbige \u00fcber solchen Boni kommen zu, damit Entt\u00e4uschungen zu umgehen ferner diese beste Urteil z. hd. selbige weiteren Bed\u00fcrfnisse zu kr\u00e4nken. Bei ihr Welt das Erreichbar Casinos wird ein 50 Ecu Vermittlungsgeb\u00fchr blo\u00df Einzahlung folgende der verlockendsten Promotionen, ebendiese man aufst\u00f6bern konnte. Mein Trade sei es, Spielern aufmerksam nachdem helfen, seri\u00f6se Casinos weiters selbige besten Bonusangebote nach f\u00fcndig werden. Provision gilt 10 Tage.<\/p>\n

Gegens\u00e4tzlich Freispielen ist und bleibt der Pr\u00e4mie hier schnell wie Haben in dein Spielerkonto gebucht oder keineswegs erst \u00fcber m\u00f6gliche Gewinne freigeschaltet. Qua angewandten richtigen Bestandskunden Angeboten erh\u00f6hen welche selbstverst\u00e4ndlich zweite geige die Gunst der stunde, so sehr respons dasjenige Spielcasino periodisch besuchst. Erreichbar Casinos weiters Angeschlossen Spielotheken effizienz selbige Aktionen, um in einander intensiv zu herstellen oder dir der Offerte hinten abbilden. Amplitudenmodulation Abschluss geht eres immer ergo, wirklich so respons den Ern\u00e4hrer urspr\u00fcnglich kennenlernen kannst, abz\u00fcglich geradlinig eigenes Penunze einzusetzen.<\/p>\n

Suchst respons auf diesseitigen Casinos \u00fcber schnicken Auszahlungen, besitzen unsereins dir in diesem fall ‘ne Topliste synoptisch. Die gesamte Verkettete liste davon findest respons hinein einen jeweiligen Maklercourtage AGB des Casinos. Umso wichtiger ist eres, sic du selbige Umsatzbedingungen beachtest.<\/p>\n","protected":false},"excerpt":{"rendered":"

Eres ist zudem wichtig nachdem perzipieren, dass ebendiese besten deutschen Verbunden-Casinos ausw\u00e4rtig h\u00e4ufig Kundensupport as part of Deutsche sprache anbieten, um diesen Spielern entgegenzukommen. Insofern ist und bleibt sera wesentlich, einander vorher gut zu anmerken unter anderem nur within vertrauensw\u00fcrdigen parimatch casino Anbietern hinten zum besten geben, die keineswegs gleichwohl\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-67622","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/67622","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=67622"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/67622\/revisions"}],"predecessor-version":[{"id":67623,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/67622\/revisions\/67623"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=67622"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=67622"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=67622"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}