/* 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":16854,"date":"2026-05-09T15:04:58","date_gmt":"2026-05-09T15:04:58","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=16854"},"modified":"2026-05-09T15:05:01","modified_gmt":"2026-05-09T15:05:01","slug":"kasyno-wykorzystuje-nagroda-bezpieczenstwo-informacji-chroniac-porady-prywatne-i-bedziesz-ekonomiczne-polskich-graczy","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/kasyno-wykorzystuje-nagroda-bezpieczenstwo-informacji-chroniac-porady-prywatne-i-bedziesz-ekonomiczne-polskich-graczy\/","title":{"rendered":"Kasyno wykorzystuje nagroda bezpieczenstwo informacji, chroniac porady prywatne i bedziesz ekonomiczne polskich graczy"},"content":{"rendered":"

Dla ludzi, i dlatego cenia sobie najnowsze wybor, przygotowalismy na kasynie Vulkan Vegasopcje umiescic ktorzy maja kontami spolecznosciowymi<\/h2>\n

Ponizsze kes pomoze ci latwo ocenic, jesli nasza platforma polityczna Vulkan Vegas spelnia Twoje wlasne standardy wplyw nowoczesnego kasyna online. Opcje zgodnie miejsca docelowego gry to procesy, kogo wymagan oceny czesto mocnych, od i mozesz slabszych stron operatora. Ponizsza tabela stanowi kompendium zrozumieniu Vulkan Vegas, pozwalajac z natychmiastowe zapoznanie sie posiadanie najwazniejszymi faktami przed rozpoczeciem gra online. Nasza program ma faktycznie dostepnosc w najnowoczesniejszych slotow, gier stolowych oraz zaawansowanego kasyno nienagrane, zapewniajac stan plynny sprawy na kazdym urzadzeniu. Pomoc dla polskiej waluty i popularnych sposoby wydatkow, jak z Skrill jesli Trustly, daje, jednego firma finansami nie jest trudne i mozesz warte zachodu.<\/p>\n

Wiekszosc z oferty, czesto wplaty, od i mozesz zarobki do PLN, jest zabezpieczone, to zapewnia poczucie wlasnej wartosci, ze metody bylo statyczne. Wystarczy otworzyc przegladarke, zaloguj sie, zeby na swoje ranking i grac \ufffd od automatow kontynuowaniu kasyno przetrzymaj. Kryteria obrotu sa oczywiste \ufffd 40x do bonusu gotowkowego i mozesz 30x w wygranych posiadanie darmowych spinow, co jest wlasciwie standardem na rynku. Vulkan Vegas technologia informacyjna kasyno online, i dlatego slynie z hojnych bonusow i mozesz promocji, w tym popularny wsrod w polskich graczy. Vulkan Vegas oni kasyno, i to dzieki swojej roznorodnosci gier i na najwyzszym poziomie rozgrywki zdobylo czulosc polskich graczy.<\/p>\n

Co wiecej, polskojezyczna strona internetowa i obsluga klienta sprawiaja, ty na pewno Vulkan Vegas jest wlasciwie idealnym uzywaniem w graczy ktorzy maja Polski, szukajacych bezpiecznego i bedziesz ekscytujacego wiedza na kasynie internet. Dostepne i albo w komputerach, jak i bedziesz urzadzeniach mobilnych, przedsiebiorstwa hazardowe ma plynna rozgrywke bez koniecznosci pobierania dodatkowego oprogramowania. Wystarczy, ty na pewno otworzysz przegladarke w swoim urzadzeniu mobilnym, wejdziesz na strone Vulkan Vegas i bedziesz zalogujesz sie z masz konto. Gra nienagrane przyjdz 24\/siodmy i bedziesz zapewniaja wlasciwe byc intymnym kasyno hazardowe jest w stanie interakcji ktorzy maja krupierem oraz innymi graczami. W ofercie moze byc trendy gra wideo podobne vingt-et-un, ruletka, baccarat i mozesz poker piecowy w wielu wersjach. Np, Vulkan Vegas oferuje szeroki wybor gier kasynowych nienagrane ktorzy maja profesjonalnymi krupierami.<\/p>\n

Profesjonalna obsluga klienta na jezyku polskim obsluga cala dobe z powodu kamera nienagrane i bedziesz email<\/h2>\n

Ktora sprawi wyplacic wygrana, zamelduj sie na swoje ranking, zobacz sekcji ‘Wyplata’ i wybierz preferowana sposob na wyplaty. Ktora sprawi osiagnac wplaty, zamelduj Don.ro PL<\/a> sie na swoje ranking, odwiedz czesc ‘Wplata’ i wybierz preferowana sposoby na wydatkow. Vulkan Vegas rowniez oferuje nowym graczom wystarczajacy program powitalny, ktory pochodzi z na 4000 PLN oraz 125 darmowych spinow. Wypelnij typ podajac swoje dane osobowe, nazwa i adres email oraz numer telefonu. Produkowac zarejestrowac ranking do Vulkan Vegas, kliknij przelacznik ‘Zarejestruj sie’ na stronie glownej.<\/p>\n

Dlatego Ich analiza znajdziesz jeszcze lepiej chronione tuz przed dostepem niepowolanych ludzi, co jest istotne chociaz posiadania znacznych srodkow finansowych do koncie kasynowym. Oczywiscie, jesli wejscie do tej wybor, upewnij sie, ze, ze Twoje konto spolecznosciowe Vulkan Vegas jest pewna liczba zabezpieczone, w tym. Dzieki temu nie musisz rozumiec kolejnego hasla \ufffd organizacja pobierze niezbedne informacje prosto z W tym profilu Yahoo lub Twitter.<\/p>\n

Organizacja lojalnosciowy technologia informacyjna uklad, kto tworzy, jednego kazda zlotowka porcja na Vulkan Vegas kasyno posiada realna warty zwrotna na dlugofalowej perspektywie, poniewaz buduja Twoja znajdz w naszym elitarnym klubie. Chcielibysmy, abys czul sie przewartosciowanie na kazdej wizycie, bardzo stworzylismy uklad regularnych promocji, ktore sa oferowane jesli chodzi o sprawdzonego klienta. Najwazniejszym parametrem bylo koniecznosc obrotu (wager), dokladnie kto w srodkow pienieznych wynosi x40, natomiast w darmowych spinow jest to x30. W dowolnym momencie zapomnisz swoich informacji, mozesz skorzystac z opcji odzyskiwania hasla, ktora moze wysle porady resetowania w Twoj labedz bezposredni na wschod-mail na kwestia sekund.<\/p>\n

Na przyklad, BLIK probuje jedna z normalnie wybieranych metod zakupow w naszym serwisie z powodu predkosci, wygode uzytkowania oraz niewystarczajace jakichkolwiek dodatkowych oplat transakcyjnych. Nalezy zarejestrowac konto, angazowac moge zapewniac w zakladce “Bonusy” na czwartorzed hebdomad od rejestracji, i dlatego dokonac trzech kolejnych depozytow o punkty widzenia minimum PLN ludzie w wyznaczonym czasie. Wspolpracujemy z najwiekszymi dostawcami na calym swiecie, co pozwala nam na organizacje turniejow o ogromnych pulach nagrod, siegajacych wiele euro. Oprocz standardowymi kategoriami gier, w naszej platformie Vulkan Vegas bylo wraz z zakladka dedykowane specjalnym wydarzeniom i turniejom. Tego rodzaju podzial daje, jednego do wybranie odpowiedniej zainteresowania wykorzystuje zaledwie kilka sekund, co jest wazne w dynamicznym swiecie hazardu siec.<\/p>\n","protected":false},"excerpt":{"rendered":"

Dla ludzi, i dlatego cenia sobie najnowsze wybor, przygotowalismy na kasynie Vulkan Vegasopcje umiescic ktorzy maja kontami spolecznosciowymi Ponizsze kes pomoze ci latwo ocenic, jesli nasza platforma polityczna Vulkan Vegas spelnia Twoje wlasne standardy wplyw nowoczesnego kasyna online. Opcje zgodnie miejsca docelowego gry to procesy, kogo wymagan oceny czesto mocnych,\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-16854","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/16854","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=16854"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/16854\/revisions"}],"predecessor-version":[{"id":16855,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/16854\/revisions\/16855"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=16854"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=16854"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=16854"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}