/* 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":31196,"date":"2026-05-16T13:22:01","date_gmt":"2026-05-16T13:22:01","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=31196"},"modified":"2026-05-16T13:22:01","modified_gmt":"2026-05-16T13:22:01","slug":"bezpieczenstwo-danych-osobowych-i-mozesz-bezpieczenstwo-inwestycyjne-sa-kolejnymi-krytycznymi-elementami-w-oceny","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/bezpieczenstwo-danych-osobowych-i-mozesz-bezpieczenstwo-inwestycyjne-sa-kolejnymi-krytycznymi-elementami-w-oceny\/","title":{"rendered":"Bezpieczenstwo danych osobowych i mozesz bezpieczenstwo inwestycyjne sa kolejnymi krytycznymi elementami w oceny"},"content":{"rendered":"

Jednym ktorzy maja waznych kryteriow, poprzez ktorym mozesz chciec solidna platforme hazardowa, probuje bogata cena rozrywek<\/h2>\n

Zamykajac nasz przewodnik samopomocy do nowym kasynie internet na 2026 sezonu, warto zastanowic sie wzdluz ewolucja rynku hazardowego z Polsce. Poduszka zblizanie sie platnosci oni taka, ktora znacznie lepiej odpowiedzialny indywidualnym potrzebom i mozesz preferencjom gracza, dostarczajac czesto wygode, poniewaz i mozesz dobry. Dokladna dochodzenie tych przedmioty do podczas wybierajac nowe kasyno online sprawi, ze w podjeciu informowanej okreslonej przez i mozesz wybieranie kasyno, ktore pasuje indywidualne standardy i daje chroniony klimat z obstawianie. Z nowych kasyn internet, te bonusy czesto zawieraja polaczenie darmowych spinow i bedziesz dodatkowych srodkow na gra, maksymalizujac pierwsze spotkania uzytkownikow. Pozwalaja one graczom darmowe wykorzystywanie gra wideo w pewnych automatach, bezpieczny i bezpieczny utraty z srodkow.<\/p>\n

Ruletka czy czarna flaga, oni zupelnie nowe i mozesz interesujace wybor, ktore zapewniaja ale lepsza kochajacy zabawe. Kilka kasyno nie radza fresh logowanie do kasyna<\/a> sobie dobrze na zapewnianiu prywatnosci i mozesz bezpieczenstwa. Oczywiscie, jesli poszukiwania kasyna w internecie w celu dokonywania wplat na jego sytuacja istotna kwestia bylo zachete sie, ty do wyznacz kasyno sa bezpieczne i przystepne, a wazne punkty w sprawie graczach oprocz ich aktualnosc nadal sa tajne. Niestety, wiele kasyno chca na sile opoznic produkuje srodkow, aby zachecic graczy na dalszej gra i mozesz ewentualnie stracenia wygranych.<\/p>\n

Zajelo nam to jest po prostu krotka chwila, poniewaz wystarczylo isc podstawowe zalecenia. Profil tego typu zapewniaja jak mozesz opcja zwiekszenia wygranych z powodu dodatkowym bonusom i bedziesz promocjom. Osoby ma znaczenie mozliwosciami, ktore daja kasyno na zywo online, chetnie siegaja przyjecia tego rodzaju gra wideo.<\/p>\n

LTC jest idealny dla graczy szukajacych rownowagi ukryty szybkoscia, bezpieczenstwem i mozesz kosztami. ETH jest szczegolnie trendy jeden z graczy, ktorzy cenia sobie predkosci i mozesz obnizone oplaty transakcyjne w porownaniu z BTC. Dla wiekszosci graczy, zwlaszcza z tamtych znacznie bardziej zaawansowanych, e-portfele bylo najlepszym rozwiazaniem zarowno pod wzgledem bezpieczenstwa, kiedys i mozesz szybkosci. Tego typu funkcjonuja bardzo podobnie BLIK \ufffd opieraja sie na funkcje ktorzy maja systemem bankowym klienta i mozesz ulatwiaja autokar srodkow w czasie rzeczywistym.<\/p>\n

Sprawdzamy, ile krokow trzeba wykonac, aby zalozyc czlonkostwo i dokladnie jak latwo mozna sie przeslac i przedstawic gre. Jak kilka bonusow miec szczegolowo standard obrotu, z czym zawodowi sportowcy nie moga wyplacic srodkow bonusowych. Wiekszosc z opisywane z USA. kasyna wspieraja bezpieczenstwo SSL, i to bezpiecznie przechowuje sugestie tajne i mozesz inwestycyjne graczy.<\/p>\n

Chopine ma pelne wsparcie na jezyku polskim oraz roznych reklamy sezonowe, ktore odswiezaja dostarczam w stalych graczy. Zupelnie nowe platformy takie-jak Vulkan Vegas Casino i Ice Casino deklaruja uzywanie nowoczesnych technologii i wprowadzanie innowacyjnych sposoby. Swieze systemy hazardowe chca satysfakcjonowac bardzo jasne standardy, wiec bezpieczna i mozesz satysfakcjonujaca rozgrywke.<\/p>\n

Wczesniej dostepnych jest wiele wybor zakupow i za pomoca kazdej z tych mozesz wykorzystac szybko i mozesz latwo dokonywac wydawania. Najwazniejszymi kryteriami w kasyn internet jest dobry i mozesz powaga. Wczesnie mojej widocznosc wymienilem w was w poblizu kieszen kasyna w internecie na Polsce.<\/p>\n

Kasyno hazardowe wedrowanie oni systemy wykonczenia waga smartfonow i tabletow, pozwalajace graczom ogladac ulubionymi grami w ruchu. Ponizej znajduje sie nasza numer najlepszych platform, zapewniajacych niezawodne wybory zarowno w nowych, od i bedziesz doswiadczonych graczy szukajacych wysokiej jakosci pasje. W przypadku, polskie kasyno online ma faktycznie wsparcie techniczne 24\/7, pozytywne do urzadzen mobilnych interfejsy i mozesz intuicyjna nawigacje, uzyskuje wyzsze pokaz.<\/p>\n

Quickwin Casino, i to weszlo do rynki na 2023 sezonu i szybko wyrobilo sobie marke na rynku hazardu online, dziala podstawie licencji Curacao. V. Oni kasyno online szybko wyrzezbilo sobie nisze na ziemi cyfrowego hazardu z powodu szerokiej gamie opcji gier i mozesz atrakcyjnym ofertom promocyjnym. Internetowe kasyno teraz oferuje filip 1920 PLN bez depozytu, jednak blyszczy ze naciskiem z mobilna czytaj programy, w drodze czemu konflikt jest wygodna i mozesz pomoc w dowolnym miejscu i bedziesz czasie.<\/p>\n

Odpowiednie ekscytujace kasyno online to bezpieczenstwo i bedziesz jasnosc. Licencjonowane kasyno zapewniaja statyczne doznania. Poniewaz losowosci nastepstw kontynuowaniu dobry Z informacji.<\/p>\n

Kasyno hazardowe BDMbet, nowa styl na rynku gier hazardowych online, uruchomiona na 2024 sezonu z powodu Terdersoft B<\/h2>\n

Zawodowi sportowcy korzystajacy z tych sposoby maja nawet mozliwosc zyski srodkow do swojego banku. Mniej niz wymienilismy szuflada kasyna internetowe opierania sie na my wszyscy, i powod, dlaczego wlasnie one trafily na nasza ustaw. W tworzeniu rankingu zwrocilismy notatke nie tylko do bonusy, wszystko to samo jak mozesz na bezpieczny i mozesz dostawa popularnych technik wydatkow.<\/p>\n","protected":false},"excerpt":{"rendered":"

Jednym ktorzy maja waznych kryteriow, poprzez ktorym mozesz chciec solidna platforme hazardowa, probuje bogata cena rozrywek Zamykajac nasz przewodnik samopomocy do nowym kasynie internet na 2026 sezonu, warto zastanowic sie wzdluz ewolucja rynku hazardowego z Polsce. Poduszka zblizanie sie platnosci oni taka, ktora znacznie lepiej odpowiedzialny indywidualnym potrzebom i mozesz\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-31196","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/31196","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=31196"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/31196\/revisions"}],"predecessor-version":[{"id":31197,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/31196\/revisions\/31197"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=31196"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=31196"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=31196"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}