Remove deploy folder (oopsy)
Melroy van den Berg melroy@melroy.org
Tue, 09 Apr 2019 22:35:14 +0200
D
deploy/nasg/templates/404.j2.php
@@ -1,128 +0,0 @@
-<?php - -$redirects = array( -{% for from, to in redirects.items() %} - "{{ from }}" => "{{ to }}", -{% endfor %} -); - -$redirects_re = array( - '^(?:sysadmin|it|linux-tech-coding|sysadmin-blog)\/?(page.*)?$' => 'category/article/', - '^(?:fotography|photoblog)\/?(page.*)?$' => '/category/photo/$1', - '^blog\/?(page.*)?$' => '/category/journal/', - '^blips\/?(page.*)?$' => '/category/note/$1', - '^r\/?(page.*)?$' => '/category/note/$1', - '^(?:linux-tech-coding|it|sysadmin-blog|sysadmin|fotography|blips|blog|photoblog|article|journal|photo|note|r)\/((?!page).*)' => '/$1', -); - -$gone = array( -{% for gone in gones %} - "{{ gone }}" => true, -{% endfor %} -); - -$gone_re = array( - '^cache\/.*$', - '^tag\/.*$', - '^comment\/.*$', - '^files\/.*$', - '^wp-content\/.*$', - '^broadcast\/wp-ffpc\.message$', -); - -function redirect_to($uri) { - header('HTTP/1.1 301 Moved Permanently'); - if (preg_match("/^https?/", $uri)) - $target = $uri; - else - $target = '{{ site.url }}/'. trim($uri, '/') . '/'; - header("Location: ". $target); - exit; -} - -function gone($uri) { - header('HTTP/1.1 410 Gone'); - die('<!DOCTYPE html> -<html lang="en"> - <head> - <meta charset="utf-8"/> - <meta content="width=device-width,initial-scale=1,minimum-scale=1" name="viewport"/> - <title>Gone</title> - </head> - <body> -<h1><center>This content was deleted.</center></h1> -<hr> -<p><center>'.$uri.'</center></p> - </body> -</html>'); -} - -function notfound($uri) { - header('HTTP/1.0 404 Not Found'); - die('<!DOCTYPE html> -<html lang="en"> - <head> - <meta charset="utf-8"/> - <meta content="width=device-width,initial-scale=1,minimum-scale=1" name="viewport"/> - <title>Not found</title> - </head> - <body> - -<h1><center>This was not found.</center></h1> -<h2><center>Please search for it instead.</center></h2> -<p> - <center> - <form action="/search.php" class="search-form" method="get" role="search"> - <label for="search">Search</label> - <input id="q" name="q" placeholder="search..." title="Search for:" type="search" value=""/> - <input type="submit" value="OK"/> - </form> - </center> -</p> -<hr> -<p><center>'.$uri.'</center></p> - </body> -</html>'); -} - -function maybe_redirect($uri) { - if (file_exists("./$uri/index.html")) { - redirect_to($uri); - } -} - -$uri = filter_var($_SERVER['REQUEST_URI'], FILTER_SANITIZE_URL); -$uri = str_replace('../', '', $uri); -$uri = str_replace('/feed/', '', $uri); -$uri = str_replace('/atom/', '', $uri); -$uri = trim($uri, '/'); - -foreach ($gone_re as $pattern) { - if (preg_match(sprintf('/%s/', $pattern), $uri)) { - gone($uri); - } -} - -foreach ($redirects_re as $pattern => $target) { - $maybe = preg_match(sprintf('/%s/i', $pattern), $uri, $matches); - if ($maybe) { - $target = str_replace('$1', $matches[1], $target); - redirect_to($target); - } -} - -if (isset($gone[$uri])) { - gone($uri); -} -elseif (isset($redirects[$uri])) { - redirect_to($redirects[$uri]); -} -elseif (preg_match('/^\.well-known\/(host-meta|webfinger).*$/', $uri)) { - redirect_to("https://fed.brid.gy/{$uri}"); -} -elseif (strstr($uri, '_')) { - maybe_redirect(str_replace('_', '-', $uri)); -} -else { - notfound($uri); -}
D
deploy/nasg/templates/Category.j2.html
@@ -1,56 +0,0 @@
-{% extends "base.j2.html" %} -{% block lang %}{% endblock %} - -{% block title %}{{ category.title }}{% endblock %} -{% block meta %} - <link rel="alternate" type="application/rss+xml" title="{{ category.title }} RSS feed" href="{{ category.feed }}" /> - <link rel="alternate" type="application/atom+xml" title="{{ category.title }} ATOM feed" href="{{ category.feed }}atom.xml" /> - <link rel="alternate" type="application/json" title="{{ category.title }} JSON feed" href="{{ category.feed }}index.json" /> - <link rel="feed" title="{{ category.title}} feed" href="{{ category.url }}" /> -{% endblock %} - -{% block pagination %} -{% if category.paginated %} -<nav> - <ul> - {% for y, url in category.years.items() %} - {% if (y == category.year) or (not category.year and loop.first) %} - <li> - <span> - {{ y }} - </span> - </li> - {% else %} - <li> - <a href="{{ url|relurl(baseurl) }}"> - <strong>{{ y }}</strong> - </a> - </li> - {% endif %} - {% endfor %} - </ul> -</nav> -{% endif %} -{% endblock %} - -{% block content %} -<main class="h-feed hatom"> - -{% set year = [0] %} -{% for post in posts %} - {% set _year = year.pop() %} - {% if not category.paginated and _year != post.copyrightYear %} - {% if not loop.first %} - </section> - {% endif %} - <section> - <h2>{{ post.copyrightYear }}</h2> - {% endif %} - {% set _ = year.append(post.copyrightYear)%} - {% include 'meta-article.j2.html' %} - {% if not category.paginated and loop.last %} - </section> - {% endif %} -{% endfor %} -</main> -{% endblock %}
D
deploy/nasg/templates/Home.j2.html
@@ -1,36 +0,0 @@
-{% extends "base.j2.html" %} - -{% block title %}{{ post.headline }} - {{ site.name }}{% endblock %} - -{% block meta %} - <meta name="author" content="{{ site.author.name }} <{{ site.author.email }}>" /> - <meta name="description" content="{{ post.description|e }}" /> - <link rel="canonical" href="{{ site.url }}" /> - {% for category, latest in elements %} - <link rel="alternate" type="application/rss+xml" title="{{ category.title }} RSS feed" href="{{ category.feed }}" /> - <link rel="alternate" type="application/atom+xml" title="{{ category.title }} ATOM feed" href="{{ category.feed }}atom.xml" /> - <link rel="feed" title="{{ category.title}} feed" href="{{ category.url }}" /> - {% endfor %} -{% endblock %} - -{% block content %} -<main class="h-feed hatom"> - <aside> - <div> - {{ post.text }} - </div> - </aside> - - {% for category, post in posts %} - <section> - <h2>in: - <a href="{{ category.url|relurl(baseurl) }}/"> - <svg width="16" height="16"><use xlink:href="#icon-{{ category.name }}" /></svg> - {{ category.name }} - </a> - </h2> - {% include 'meta-article.j2.html' %} - </section> -{% endfor %} -</main> -{% endblock %}
D
deploy/nasg/templates/Micropub.j2.php
@@ -1,114 +0,0 @@
-<?php - -function _syslog($msg) { - $trace = debug_backtrace(); - $caller = $trace[1]; - $parent = $caller['function']; - if (isset($caller['class'])) - $parent = $caller['class'] . '::' . $parent; - - return error_log( "{$parent}: {$msg}" ); -} - -function unauthorized($text) { - header('HTTP/1.1 401 Unauthorized'); - die($text); -} - -function badrequest($text) { - header('HTTP/1.1 400 Bad Request'); - die($text); -} - -function httpok($text) { - header('HTTP/1.1 200 OK'); - echo($text); - exit(0); -} - -function accepted() { - header('HTTP/1.1 202 Accepted'); - #header('Location: {{ site.url }}'); - exit(0); -} - -if (!empty($_GET)) { - if ( ! isset($_GET['q']) ) { - badrequest('please POST a micropub request'); - } - - if ( isset($_GET['q']['config']) ) { - httpok(json_encode(array('tags' => array()))); - } - - if(isset($_GET['q']['syndicate-to'])) { - httpok(json_encode(array('syndicate-to' => array()))); - } - - badrequest('please POST a micropub request'); -} - -$raw = file_get_contents("php://input"); -print_r($raw); -try { - $decoded = json_decode($raw, true); -} catch (Exception $e) { - _syslog('failed to decode JSON, trying decoding form data'); - try { - parse_str($raw, $decoded); - } - catch (Exception $e) { - _syslog('failed to decoding form data as well'); - badrequest('invalid POST contents'); - } -} -print_r($decoded); - -$token = ''; -if ( isset($decoded['access_token']) ) { - $token = $decoded['access_token']; - unset($decoded['access_token']); -} -elseif ( isset($_SERVER['HTTP_AUTHORIZATION']) ) { - $token = trim(str_replace('Bearer', '', $_SERVER['HTTP_AUTHORIZATION'])); -} - -if (empty($token)) { - unauthorized('missing token'); -} - -$request = curl_init(); -curl_setopt($request, CURLOPT_URL, 'https://tokens.indieauth.com/token'); -curl_setopt($request, CURLOPT_HTTPHEADER, array( - 'Content-Type: application/x-www-form-urlencoded', - sprintf('Authorization: Bearer %s', $token) -)); -curl_setopt($request, CURLOPT_RETURNTRANSFER, 1); -$response = curl_exec($request); -curl_close($request); -parse_str(urldecode($response), $verification); -if (! isset($verification['scope']) ) { - unauthorized('missing "scope"'); -} -if (! isset($verification['me']) ) { - unauthorized('missing "me"'); -} -if ( ! stristr($verification['me'], '{{ site.url }}') ) { - unauthorized('wrong domain'); -} -if ( ! stristr($verification['scope'], 'create') ) { - unauthorized('invalid scope'); -} - -$user = posix_getpwuid(posix_getuid()); -$now = time(); -$decoded['mtime'] = $now; -$fname = sprintf( - '%s/%s/%s.json', - $user['dir'], - '{{ paths.remotequeue }}', - microtime(true) -); - -file_put_contents($fname, json_encode($decoded, JSON_PRETTY_PRINT)); -accepted();
D
deploy/nasg/templates/Search.j2.php
@@ -1,57 +0,0 @@
-{% extends "base.j2.html" %} -{% block lang %}{% endblock %} -{% block title %}Search results for: <?php echo($_GET['q']); ?>{% endblock %} -{% block content %} -<?php -function relurl($from, $to) { - $from = explode('/', $from); - $to = explode('/', $to); - $relpath = ''; - - $i = 0; - while (isset($from[$i]) && isset($to[$i])) { - if ($from[$i] != $to[$i]) break; - $i++; - } - $j = count( $from ) - 1; - while ( $i <= $j ) { - if ( !empty($from[$j]) ) $relpath .= '../'; - $j--; - } - while ( isset($to[$i]) ) { - if ( !empty($to[$i]) ) $relpath .= $to[$i].'/'; - $i++; - } - return substr($relpath, 0, -1); -} -?> -<?php const baseurl = '{{ site.url }}'; ?> -<main> - <header> - <h1>Search results for: <?php echo($_GET['q']); ?></h1> - </header> -<?php -$db = new SQLite3('./search.sqlite', SQLITE3_OPEN_READONLY); -$q = str_replace('-', '+', $_GET['q']); -$sql = $db->prepare(" - SELECT - url, category, title, snippet(data, '', '', '[...]', 5, 24) - FROM - data - WHERE - data MATCH :q - ORDER BY - category -"); -$sql->bindValue(':q', $q); -$results = $sql->execute(); - -printf("<dl>"); -while ($row = $results->fetchArray(SQLITE3_ASSOC)) { - printf('<dt><a href="%s">%s</a></dt><dd>%s</dd>', relurl(baseurl, $row['url']), $row['title'], $row["snippet(data, '', '', '[...]', 5, 24)"]); - -} -printf("</dl>"); -?> -</main> -{% endblock %}
D
deploy/nasg/templates/Singular.j2.html
@@ -1,221 +0,0 @@
-{% extends "base.j2.html" %} - -{% block lang %} lang="{{ post.inLanguage }}" {% endblock %} - -{% block title %}{{ post.headline }} - {{ site.name }}{% endblock %} - -{% block meta %} - <meta name="description" content="{{ post.description|striptags|e }}" /> - <link rel="canonical" href="{{ post.url }}" /> - <link rel="alternate" type="application/json" href="{{ post.url }}index.json" /> - <link rel="alternate" type="application/ld+json" href="{{ post.url }}index.json" /> - <link rel="alternate" type="text/plain" href="{{ post.url }}index.txt" /> - <meta property="og:title" content="{{ post.headline }}" /> - <meta property="og:type" content="article" /> - <meta property="og:url" content="{{ post.url }}" /> - <meta property="og:description" content="{{ post.description|striptags|e }}" /> - <meta property="article:published_time" content="{{ post.datePublished }}" /> - <meta property="article:modified_time" content="{{ post.dateModified }}" /> - <meta property="article:author" content="{{ post.author.name }} ({{ post.author.email}})" /> - {% if post.image is iterable %} - <meta property="og:image" content="{{ post.image[0].url }}" /> - <meta property="og:image:type" content="{{ post.image[0].encodingFormat }}" /> - <meta property="og:image:width" content="{{ post.image[0].width }}" /> - <meta property="og:image:height" content="{{ post.image[0].height }}" /> - {% else %} - <meta property="og:image" content="{{ post.image }}" /> - {% endif %} - - {% if post['@type'] == 'TechArticle' %} - <style media="all"> - {% include('prism.css') %} - </style> - {% endif %} -{% endblock %} - -{% block prism %} - {% if post['@type'] == 'TechArticle' %} - <script> - {% include('prism.js') %} - </script> - {% endif %} -{% endblock %} - -{% block cc %} - <li> - <a href="{{ post.license }}"> - <svg width="80" height="15"> - <use xlink:href="#button-cc"/> - </svg> - </a> - </li> -{% endblock %} - -{% block content %} -<main> - <article class="h-entry hentry" lang="{{ post.inLanguage }}" id="article"> - <header> - <h1 class="p-name entry-title"> - {% if post.mentions %} - <span> - <svg width="16" height="16"> - <use xlink:href="#icon-reply" /> - </svg> - <a href="{{ post.url|relurl(baseurl) }}"> - RE: - </a> - <a href="{{ post.mentions.url }}" class="u-in-reply-to"> - {{ post.mentions.url }} - </a> - </span> - {% else %} - <a href="{{ post.url|relurl(baseurl) }}"> - {{ post.headline }} - </a> - {% endif %} - </h1> - - <p> - <a rel="license" href="{{ post.license }}" class="u-license"> - {{ post.license | extractlicense }} - </a> - by - <span class="p-author h-card vcard"> - <img class="u-photo photo" src="{{ post.author.image|relurl(baseurl) }}" alt="" /> - <a class="p-name u-url fn url" href="{{ post.author.url }}">{{ post.author.name }}</a> - (<a class="u-email email" href="mailto:{{ post.author.email }}">{{ post.author.email }}</a>) - </span> - at - <time datetime="{{ post.datePublished }}" class="dt-published published">{{ post.datePublished|printdate }}</time> - <time datetime="{{ post.dateModified }}" class="dt-updated updated"></time> - <br /> - <a class="u-url u-uuid bookmark" href="{{ post.url }}">{{ post.url }}</a> -<!-- -{% if post.sameAs|length %} - <br /> - Syndicated to: - <ul> - {% for url in post.sameAs %} - <li> - <a class="u-syndication" href="{{ url }}"> - {{ url }} - </a> - </li> - {% endfor %} - </ul> -{% endif %} ---> - </p> - -{% if post.subjectOf %} - <p class="h-event vevent"> - <span class="summary"> - Journey from - <time class="dt-start dtstart" datetime="{{ post.subjectOf.startDate }}"> - {{ post.subjectOf.startDate|printdate }} - </time> - to - <time class="dt-end dtend" datetime="{{ post.subjectOf.endDate }}"> - {{ post.subjectOf.endDate|printdate }} - </time>, in - <span class="p-location location"> - {{ post.subjectOf.location.name }} - </span> - </span> - <a class="u-url url" href="{{ post.url }}"></a> - </p> -{% endif %} - - </header> - - {% if post.review %} - <div class="h-review hreview"> - <strong>Review summary of: <a href="{{ post.review.url }}" class="p-name u-url p-item h-product item fn url">{{ post.review.name }}</a></strong> - <p> - By - <span class="p-author h-card reviewer vcard"> - <a class="p-name u-url fn" href="{{ post.author.url }}"> - <span>{{ post.author.name }}</span> - </a></span> in <time class="dt-published dtreviewed" datetime="{{ post.datePublished }}" title="{{ post.datePublished }}">{{ post.datePublished|printdate }}</time> - </p> - <p> - <span class="rating"> - <span class="value p-rating">{{ post.review.reviewRating.ratingValue }}</span> - out of - <span class="best">{{ post.review.reviewRating.bestRating }}</span> - </span> - </p> - <p class="p-summary summary">{{ post.review.text }}</p> - </div> - {% endif %} - - {% if post.description|length %} - <div class="e-summary entry-summary"> - {{ post.description|relurl(baseurl) }} - </div> - {% endif %} - - <div class="e-content entry-content"> - {{ post.text|relurl(baseurl) }} - </div> - - {% if 'WebPage' != post['@type'] %} - <section class="syndication"> - {% for action in post.potentialAction %} - {% if 'InteractAction' == action['@type'] %} - <a href="{{ action.url }}"></a> - {% endif %} - {% endfor %} - </section> - - {% if post.comment|length %} - <section class="comments"> - <h2><a id="comments"></a>Responses</h2> - <ol> - {% for comment in post.comment %} - <li class="h-entry p-comment hentry"> - <i> - {% if 'like-of' == comment.disambiguatingDescription %} - {% set icon = 'star' %} - {% elif 'bookmark-of' == comment.disambiguatingDescription %} - {% set icon = 'bookmark' %} - {% elif 'reply' == comment.disambiguatingDescription %} - {% set icon = 'reply' %} - {% else %} - {% set icon = 'link' %} - {% endif %} - <svg width="16" height="16"> - <use xlink:href="#icon-{{ icon }}"></use> - </svg> - </i> - from - <span class="p-author h-card vcard"> - {% if comment.author.url %} - <a class="u-url p-name fn url org" href="{{ comment.author.url }}"> - {{ comment.author.name }} - </a> - {% else %} - <span class="p-name fn"> - {{ comment.author.name }} - </span> - {% endif %} - </span> - at - <time class="dt-published published" datetime="{{ comment.datePublished }}"> - {{ comment.datePublished|printdate }} - </time> - <br /> - <a class="u-url" href="{{ comment.url }}"> - {{ comment.url }} - </a> - <a href="{{ post.url }}" class="u-in-reply-to"></a> - </li> - {% endfor %} - </ol> - </section> - {% endif %} - - {% endif %} - </article> -</main> -{% endblock %}
D
deploy/nasg/templates/Singular.j2.txt
@@ -1,8 +0,0 @@
-{{ post.headline|center(width=80) }} - -by {{ post.author.name }} <{{ post.author.email}}> -{{ post.datePublished|printdate }} - -{{ summary }} - -{{ content }}
D
deploy/nasg/templates/WebImage.j2.html
@@ -1,65 +0,0 @@
-<figure class="photo"> -{% if url != thumbnail.url %} - <a href="{{ url }}"{% if representativeOfPage %} class="u-featured"{% endif %}> -{% endif %} - <img src="{{ thumbnail.url }}" title="{{ headline }}" alt="{{ headline }}" width="{{ thumbnail.width }}" height="{{ thumbnail.height }}" /> -{% if url != thumbnail.url %} - </a> -{% endif %} - <figcaption> - <span class="alt">{{ caption }}</span> -{% if creator is defined %} -{% macro exifvalue(key) %} - {% for data in exifData: %} - {% if key == data['name'] %} - {{ data['value'] }} - {% endif %} - {% endfor %} -{% endmacro %} - <dl class="exif"> - <dt>Camera</dt> - <dd> - <svg width="16" height="16"> - <use xlink:href="#icon-camera" /> - </svg> - {{ exifvalue('Model')|trim }} - </dd> - <dt>Aperture</dt> - <dd> - <svg width="16" height="16"> - <use xlink:href="#icon-aperture" /> - </svg> - f/{{ exifvalue('FNumber')|trim }} - </dd> - <dt>Shutter speed</dt> - <dd> - <svg width="16" height="16"> - <use xlink:href="#icon-clock" /> - </svg> - {{ exifvalue('ExposureTime')|trim }} sec - </dd> - <dt>Focal length (as set)</dt> - <dd> - <svg width="16" height="16"> - <use xlink:href="#icon-focallength" /> - </svg> - {{ exifvalue('FocalLength')|trim }} - </dd> - <dt>Sensitivity</dt> - <dd> - <svg width="16" height="16"> - <use xlink:href="#icon-sensitivity" /> - </svg> - ISO {{ exifvalue('ISO')|trim }} - </dd> - <dt>Lens</dt> - <dd> - <svg width="16" height="16"> - <use xlink:href="#icon-lens" /> - </svg> - {{ exifvalue('LensID')|trim }} - </dd> - </dl> -{% endif %} - </figcaption> -</figure>
D
deploy/nasg/templates/Webhook.j2.php
@@ -1,56 +0,0 @@
-<?php - -function _syslog($msg) { - $trace = debug_backtrace(); - $caller = $trace[1]; - $parent = $caller['function']; - if (isset($caller['class'])) - $parent = $caller['class'] . '::' . $parent; - - return error_log( "{$parent}: {$msg}" ); -} - -$raw = file_get_contents("php://input"); -try { - $payload = json_decode($raw, TRUE); -} -catch (Exception $e) { - header('HTTP/1.1 422 Unprocessable Entity'); - _syslog('[webhook] json_decode failed on:' . $raw); - die('Unprocessable Entity'); -} - -if(isset($payload['secret']) && $payload['secret'] == '{{ webmentionio.secret }}' ) { - $msg = sprintf(' -Type: %s -Source: %s -Target: %s -From: %s - -%s -', - $payload['post']['wm-property'], - $payload['source'], - $payload['target'], - $payload['post']['author']['name'], - $payload['post']['content']['text'] - ); - - _syslog('[webhook] accepted from webmention.io'); - mail("{{ author.email }}", "[webmention] {$payload['source']}", $msg); - header('HTTP/1.1 202 Accepted'); - exit(0); -} -elseif(isset($payload['secret']) && $payload['secret'] == '{{ zapier.secret }}' ) { - $logfile = sprintf('%s/zapier.log', $_SERVER['HOME']); - $msg = sprintf("%s %s %s\n", $payload['source'], $payload['network'], $payload['url']); - file_put_contents($logfile, $msg, FILE_APPEND | LOCK_EX); - _syslog('[webhook] accepted from zapier'); - header('HTTP/1.1 202 Accepted'); - exit(0); -} - - -header('HTTP/1.1 400 Bad Request'); -_syslog('[webhook] bad request:' . $raw); -die('Bad Request');
D
deploy/nasg/templates/base.j2.html
@@ -1,199 +0,0 @@
-<!DOCTYPE html> -<html{% block lang %}{% endblock %} prefix="og: http://ogp.me/ns# article: http://ogp.me/ns/article#"> -<head> - <!--[if lt IE 9]> - <script src="{{ site.url}}/html5shiv-printshiv.js"></script> - <![endif]--> - <title>{% block title %}{% endblock %}</title> - <meta charset="UTF-8" /> - <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1" /> - <meta name="author" content="{{ site.author.name }} ({{ site.author.email }})" /> - <link rel="icon" href="{{ site.image }}" /> - <!-- <base href="{{ baseurl }}" /> --> - {% for key, value in meta.items() %} - <link rel="{{ key }}" href="{{ value }}" /> - {% endfor %} - {% block meta %}{% endblock %} - <style media="all"> - {% include('style.css') %} - </style> - <style id="css_alt" media="speech"> - {% include('style-alt.css') %} - </style> - <style media="print"> - {% include('style-print.css') %} - </style> -</head> - -<body> - -{% macro activemenu(name) %} -{% if (post is defined and post.name == name ) - or (post is defined and post.genre == name ) - or ( category is defined and category.name == name )%}class="active"{% endif %} -{% endmacro %} - -<header> - <section> - <nav> - <ul> - {% for key, data in menu.items() %} - <li> - <a title="{{ data.text }}" href="{{ data.url|relurl(baseurl) }}" {{ activemenu(key) }} > - <svg width="16" height="16"> - <use xlink:href="#icon-{{ key }}" /> - </svg> - {{ data.text }} - </a> - </li> - {% endfor %} - </ul> - </nav> - - <div> - <form class="theme" aria-hidden="true"> - <svg width="16" height="16"> - <use xlink:href="#icon-contrast"></use> - </svg> - <span> - <input name="colorscheme" value="dark" id="darkscheme" type="radio"> - <label for="darkscheme">dark</label> - </span> - <span> - <input name="colorscheme" value="light" id="lightscheme" type="radio"> - <label for="lightscheme">light</label> - </span> - </form> - {% for action in site.potentialAction %} - {% if 'SearchAction' == action['@type'] %} - <form role="search" method="get" action="{{ action.url|relurl(baseurl) }}"> - <label for="qsub"> - <input type="submit" value="search" id="qsub" name="qsub" /> - <svg width="16" height="16"> - <use xlink:href="#icon-search"></use> - </svg> - </label> - <input type="search" placeholder="search..." value="" name="q" id="q" title="Search for:" /> - </form> - {% endif %} - {% endfor %} - </div> - </section> -</header> - -{% block content %} -{% endblock %} - -{% block pagination %} -{% endblock %} - -<footer class="p-author h-card vcard"> - <section> - <p> - <a href="https://creativecommons.org/">CC</a>, - 1999-2019, - <img class="u-photo photo" src="{{ site.author.image|relurl(baseurl) }}" alt="Photo of {{ site.author.name }}" /> - <a class="p-name u-url fn url" href="{{ site.author.url }}" rel="me"> {{ site.author.name }}</a> - <a class="u-email email" rel="me" href="mailto:{{ site.author.email }}"> - <svg width="16" height="16"> - <use xlink:href="#icon-mail"></use> - </svg> - {{ site.author.email }} - </a> - </p> - <nav> - <ul> - {% for action in site.potentialAction %} - {% if 'FollowAction' == action['@type'] %} - <li> - <a href="{{ action.url }}"> - <svg width="16" height="16"><use xlink:href="#icon-{{ action['@type'] }}" /></svg> - {{ action.name }} - </a> - </li> - {% endif %} - {% endfor %} - <li> - <a href="{{ site.author.follows }}"> - <svg width="16" height="16"><use xlink:href="#icon-following" /></svg> - followings - </a> - </li> - {% for url in site.author.sameAs %} - <li> - {% if 'cv.html' in url %} - <a href="{{ url }}" class="u-url"> - <svg width="16" height="16"><use xlink:href="#icon-resume" /></svg> - resume - </a> - {% elif 'github' in url %} - <a rel="me" href="{{ url }}"> - <svg width="16" height="16"><use xlink:href="#icon-github" /></svg> - github - </a> - {% endif %} - </li> - {% endfor %} - </ul> - </nav> - <nav> - <a href="https://xn--sr8hvo.ws/%F0%9F%87%BB%F0%9F%87%AE%F0%9F%93%A2/previous">←</a> - Member of <a href="https://xn--sr8hvo.ws">IndieWeb Webring</a> - <a href="https://xn--sr8hvo.ws/%F0%9F%87%BB%F0%9F%87%AE%F0%9F%93%A2/next">→</a> - </nav> - </section> - <section> - <nav> - <ul> - <li> - <a href="https://indieweb.org/"> - <svg width="80" height="15"> - <use xlink:href="#button-indieweb"/> - </svg> - </a> - </li> - <li> - <a href="http://microformats.org/"> - <svg width="80" height="15"> - <use xlink:href="#button-microformats"/> - </svg> - </a> - </li> - <li> - <a href="https://www.w3.org/TR/webmention/"> - <svg width="80" height="15"> - <use xlink:href="#button-webmention"/> - </svg> - </a> - </li> -{% block cc %} - <li> - <a href="{{ site.license }}"> - <svg width="80" height="15"> - <use xlink:href="#button-cc"/> - </svg> - </a> - </li> -{% endblock %} - <li> - <svg width="80" height="15"> - <use xlink:href="#button-nojs"/> - </svg> - </li> - </ul> - </nav> - </section> -</footer> - -<script> -{% include 'themeswitcher.js' %} -{% include 'konami.js' %} -</script> - -{% include 'symbols.svg' %} - -{% block prism %} -{% endblock %} - - </body> -</html>
D
deploy/nasg/templates/konami.js
@@ -1,18 +0,0 @@
-function kcl(cb) { - var input = ''; - var key = '38384040373937396665'; - document.addEventListener('keydown', function (e) { - input += ("" + e.keyCode); - if (input === key) { - return cb(); - } - if (!key.indexOf(input)) return; - input = ("" + e.keyCode); - }); -} - -kcl(function () { - var e = document.createElement('img'); - e.src = '/iddqd.gif'; - document.body.appendChild(e); -})
D
deploy/nasg/templates/meta-article.j2.html
@@ -1,52 +0,0 @@
-<article class="h-entry hentry" lang="{{ post.inLanguage }}"> - <header> - <h3 class="p-name entry-title"> - {% if post.mentions %} - <span> - <svg width="16" height="16"> - <use xlink:href="#icon-reply" /> - </svg> - <a href="{{ post.url|relurl(baseurl) }}"> - RE: - </a> - <a href="{{ post.mentions.url }}" class="u-in-reply-to"> - {{ post.mentions.url }} - </a> - </span> - {% else %} - <a href="{{ post.url|relurl(baseurl) }}"> - {{ post.headline }} - </a> - {% endif %} - - </h3> - <a href="{{ post.url }}" class="u-url bookmark"></a> - </header> - - {% if post.description|length %} - <div class="e-summary entry-summary"> - {{ post.description|relurl(baseurl) }} - <span class="more"> - <a href="{{ post.url|relurl(baseurl) }}"> - {% if post.inLanguage == 'hu' %}Tovább »{% else %}Continue »{% endif %} - </a> - </span> - </div> - {% else %} - <div class="e-content entry-content"> - {{ post.text|relurl(baseurl) }} - </div> - {% endif %} - - <footer aria-hidden="true" hidden="hidden"> - Published at - <time datetime="{{ post.datePublished }}" class="dt-published published">{{ post.datePublished|printdate }}</time> - <time datetime="{{ post.dateModified }}" class="dt-updated updated"></time> - by - <span class="p-author h-card vcard"> - <img class="u-photo photo" src="{{ post.author.image|relurl(baseurl) }}" alt="" /> - <a class="p-name u-url fn url org" href="{{ post.author.url }}">{{ post.author.name }}</a> - <a class="u-email email" href="mailto:{{ post.author.email }}">{{ post.author.email }}</a> - </span> - </footer> -</article>
D
deploy/nasg/templates/prism.css
@@ -1,69 +0,0 @@
-.token.comment, -.token.prolog, -.token.doctype, -.token.cdata { - color: #789; -} - -.token.punctuation { - color: #999; -} - -.namespace { -} - -.token.property, -.token.tag, -.token.boolean, -.token.number, -.token.constant, -.token.symbol, -.token.deleted { - color: #f05; -} - -.token.selector, -.token.attr-name, -.token.string, -.token.char, -.token.builtin, -.token.inserted { - color: #7a0; -} - -.token.operator, -.token.entity, -.token.url, -.language-css .token.string, -.style .token.string { - color: #a74; -} - -.token.atrule, -.token.attr-value, -.token.keyword { - color: #09c; -} - -.token.function, -.token.class-name { - color: #D57; -} - -.token.regex, -.token.important, -.token.variable { - color: #e90; -} - -.token.important, -.token.bold { - font-weight: bold; -} -.token.italic { - font-style: italic; -} - -.token.entity { - cursor: help; -}
D
deploy/nasg/templates/prism.js
@@ -1,1742 +0,0 @@
-/* PrismJS 1.15.0 -https://prismjs.com/download.html#themes=prism-tomorrow&languages=markup+css+clike+javascript+c+csharp+bash+markup-templating+git+ini+java+json+markdown+makefile+nginx+perl+php+sql+python+yaml */ -var _self = (typeof window !== 'undefined') - ? window // if in browser - : ( - (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope) - ? self // if in worker - : {} // if in node js - ); - -/** - * Prism: Lightweight, robust, elegant syntax highlighting - * MIT license http://www.opensource.org/licenses/mit-license.php/ - * @author Lea Verou http://lea.verou.me - */ - -var Prism = (function(){ - -// Private helper vars -var lang = /\blang(?:uage)?-([\w-]+)\b/i; -var uniqueId = 0; - -var _ = _self.Prism = { - manual: _self.Prism && _self.Prism.manual, - disableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler, - util: { - encode: function (tokens) { - if (tokens instanceof Token) { - return new Token(tokens.type, _.util.encode(tokens.content), tokens.alias); - } else if (_.util.type(tokens) === 'Array') { - return tokens.map(_.util.encode); - } else { - return tokens.replace(/&/g, '&').replace(/</g, '<').replace(/\u00a0/g, ' '); - } - }, - - type: function (o) { - return Object.prototype.toString.call(o).match(/\[object (\w+)\]/)[1]; - }, - - objId: function (obj) { - if (!obj['__id']) { - Object.defineProperty(obj, '__id', { value: ++uniqueId }); - } - return obj['__id']; - }, - - // Deep clone a language definition (e.g. to extend it) - clone: function (o, visited) { - var type = _.util.type(o); - visited = visited || {}; - - switch (type) { - case 'Object': - if (visited[_.util.objId(o)]) { - return visited[_.util.objId(o)]; - } - var clone = {}; - visited[_.util.objId(o)] = clone; - - for (var key in o) { - if (o.hasOwnProperty(key)) { - clone[key] = _.util.clone(o[key], visited); - } - } - - return clone; - - case 'Array': - if (visited[_.util.objId(o)]) { - return visited[_.util.objId(o)]; - } - var clone = []; - visited[_.util.objId(o)] = clone; - - o.forEach(function (v, i) { - clone[i] = _.util.clone(v, visited); - }); - - return clone; - } - - return o; - } - }, - - languages: { - extend: function (id, redef) { - var lang = _.util.clone(_.languages[id]); - - for (var key in redef) { - lang[key] = redef[key]; - } - - return lang; - }, - - /** - * Insert a token before another token in a language literal - * As this needs to recreate the object (we cannot actually insert before keys in object literals), - * we cannot just provide an object, we need anobject and a key. - * @param inside The key (or language id) of the parent - * @param before The key to insert before. If not provided, the function appends instead. - * @param insert Object with the key/value pairs to insert - * @param root The object that contains `inside`. If equal to Prism.languages, it can be omitted. - */ - insertBefore: function (inside, before, insert, root) { - root = root || _.languages; - var grammar = root[inside]; - - if (arguments.length == 2) { - insert = arguments[1]; - - for (var newToken in insert) { - if (insert.hasOwnProperty(newToken)) { - grammar[newToken] = insert[newToken]; - } - } - - return grammar; - } - - var ret = {}; - - for (var token in grammar) { - - if (grammar.hasOwnProperty(token)) { - - if (token == before) { - - for (var newToken in insert) { - - if (insert.hasOwnProperty(newToken)) { - ret[newToken] = insert[newToken]; - } - } - } - - ret[token] = grammar[token]; - } - } - - // Update references in other language definitions - _.languages.DFS(_.languages, function(key, value) { - if (value === root[inside] && key != inside) { - this[key] = ret; - } - }); - - return root[inside] = ret; - }, - - // Traverse a language definition with Depth First Search - DFS: function(o, callback, type, visited) { - visited = visited || {}; - for (var i in o) { - if (o.hasOwnProperty(i)) { - callback.call(o, i, o[i], type || i); - - if (_.util.type(o[i]) === 'Object' && !visited[_.util.objId(o[i])]) { - visited[_.util.objId(o[i])] = true; - _.languages.DFS(o[i], callback, null, visited); - } - else if (_.util.type(o[i]) === 'Array' && !visited[_.util.objId(o[i])]) { - visited[_.util.objId(o[i])] = true; - _.languages.DFS(o[i], callback, i, visited); - } - } - } - } - }, - plugins: {}, - - highlightAll: function(async, callback) { - _.highlightAllUnder(document, async, callback); - }, - - highlightAllUnder: function(container, async, callback) { - var env = { - callback: callback, - selector: 'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code' - }; - - _.hooks.run("before-highlightall", env); - - var elements = env.elements || container.querySelectorAll(env.selector); - - for (var i=0, element; element = elements[i++];) { - _.highlightElement(element, async === true, env.callback); - } - }, - - highlightElement: function(element, async, callback) { - // Find language - var language, grammar, parent = element; - - while (parent && !lang.test(parent.className)) { - parent = parent.parentNode; - } - - if (parent) { - language = (parent.className.match(lang) || [,''])[1].toLowerCase(); - grammar = _.languages[language]; - } - - // Set language on the element, if not present - element.className = element.className.replace(lang, '').replace(/\s+/g, ' ') + ' language-' + language; - - if (element.parentNode) { - // Set language on the parent, for styling - parent = element.parentNode; - - if (/pre/i.test(parent.nodeName)) { - parent.className = parent.className.replace(lang, '').replace(/\s+/g, ' ') + ' language-' + language; - } - } - - var code = element.textContent; - - var env = { - element: element, - language: language, - grammar: grammar, - code: code - }; - - _.hooks.run('before-sanity-check', env); - - if (!env.code || !env.grammar) { - if (env.code) { - _.hooks.run('before-highlight', env); - env.element.textContent = env.code; - _.hooks.run('after-highlight', env); - } - _.hooks.run('complete', env); - return; - } - - _.hooks.run('before-highlight', env); - - if (async && _self.Worker) { - var worker = new Worker(_.filename); - - worker.onmessage = function(evt) { - env.highlightedCode = evt.data; - - _.hooks.run('before-insert', env); - - env.element.innerHTML = env.highlightedCode; - - callback && callback.call(env.element); - _.hooks.run('after-highlight', env); - _.hooks.run('complete', env); - }; - - worker.postMessage(JSON.stringify({ - language: env.language, - code: env.code, - immediateClose: true - })); - } - else { - env.highlightedCode = _.highlight(env.code, env.grammar, env.language); - - _.hooks.run('before-insert', env); - - env.element.innerHTML = env.highlightedCode; - - callback && callback.call(element); - - _.hooks.run('after-highlight', env); - _.hooks.run('complete', env); - } - }, - - highlight: function (text, grammar, language) { - var env = { - code: text, - grammar: grammar, - language: language - }; - _.hooks.run('before-tokenize', env); - env.tokens = _.tokenize(env.code, env.grammar); - _.hooks.run('after-tokenize', env); - return Token.stringify(_.util.encode(env.tokens), env.language); - }, - - matchGrammar: function (text, strarr, grammar, index, startPos, oneshot, target) { - var Token = _.Token; - - for (var token in grammar) { - if(!grammar.hasOwnProperty(token) || !grammar[token]) { - continue; - } - - if (token == target) { - return; - } - - var patterns = grammar[token]; - patterns = (_.util.type(patterns) === "Array") ? patterns : [patterns]; - - for (var j = 0; j < patterns.length; ++j) { - var pattern = patterns[j], - inside = pattern.inside, - lookbehind = !!pattern.lookbehind, - greedy = !!pattern.greedy, - lookbehindLength = 0, - alias = pattern.alias; - - if (greedy && !pattern.pattern.global) { - // Without the global flag, lastIndex won't work - var flags = pattern.pattern.toString().match(/[imuy]*$/)[0]; - pattern.pattern = RegExp(pattern.pattern.source, flags + "g"); - } - - pattern = pattern.pattern || pattern; - - // Don’t cache length as it changes during the loop - for (var i = index, pos = startPos; i < strarr.length; pos += strarr[i].length, ++i) { - - var str = strarr[i]; - - if (strarr.length > text.length) { - // Something went terribly wrong, ABORT, ABORT! - return; - } - - if (str instanceof Token) { - continue; - } - - if (greedy && i != strarr.length - 1) { - pattern.lastIndex = pos; - var match = pattern.exec(text); - if (!match) { - break; - } - - var from = match.index + (lookbehind ? match[1].length : 0), - to = match.index + match[0].length, - k = i, - p = pos; - - for (var len = strarr.length; k < len && (p < to || (!strarr[k].type && !strarr[k - 1].greedy)); ++k) { - p += strarr[k].length; - // Move the index i to the element in strarr that is closest to from - if (from >= p) { - ++i; - pos = p; - } - } - - // If strarr[i] is a Token, then the match starts inside another Token, which is invalid - if (strarr[i] instanceof Token) { - continue; - } - - // Number of tokens to delete and replace with the new match - delNum = k - i; - str = text.slice(pos, p); - match.index -= pos; - } else { - pattern.lastIndex = 0; - - var match = pattern.exec(str), - delNum = 1; - } - - if (!match) { - if (oneshot) { - break; - } - - continue; - } - - if(lookbehind) { - lookbehindLength = match[1] ? match[1].length : 0; - } - - var from = match.index + lookbehindLength, - match = match[0].slice(lookbehindLength), - to = from + match.length, - before = str.slice(0, from), - after = str.slice(to); - - var args = [i, delNum]; - - if (before) { - ++i; - pos += before.length; - args.push(before); - } - - var wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy); - - args.push(wrapped); - - if (after) { - args.push(after); - } - - Array.prototype.splice.apply(strarr, args); - - if (delNum != 1) - _.matchGrammar(text, strarr, grammar, i, pos, true, token); - - if (oneshot) - break; - } - } - } - }, - - tokenize: function(text, grammar, language) { - var strarr = [text]; - - var rest = grammar.rest; - - if (rest) { - for (var token in rest) { - grammar[token] = rest[token]; - } - - delete grammar.rest; - } - - _.matchGrammar(text, strarr, grammar, 0, 0, false); - - return strarr; - }, - - hooks: { - all: {}, - - add: function (name, callback) { - var hooks = _.hooks.all; - - hooks[name] = hooks[name] || []; - - hooks[name].push(callback); - }, - - run: function (name, env) { - var callbacks = _.hooks.all[name]; - - if (!callbacks || !callbacks.length) { - return; - } - - for (var i=0, callback; callback = callbacks[i++];) { - callback(env); - } - } - } -}; - -var Token = _.Token = function(type, content, alias, matchedStr, greedy) { - this.type = type; - this.content = content; - this.alias = alias; - // Copy of the full string this token was created from - this.length = (matchedStr || "").length|0; - this.greedy = !!greedy; -}; - -Token.stringify = function(o, language, parent) { - if (typeof o == 'string') { - return o; - } - - if (_.util.type(o) === 'Array') { - return o.map(function(element) { - return Token.stringify(element, language, o); - }).join(''); - } - - var env = { - type: o.type, - content: Token.stringify(o.content, language, parent), - tag: 'span', - classes: ['token', o.type], - attributes: {}, - language: language, - parent: parent - }; - - if (o.alias) { - var aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias]; - Array.prototype.push.apply(env.classes, aliases); - } - - _.hooks.run('wrap', env); - - var attributes = Object.keys(env.attributes).map(function(name) { - return name + '="' + (env.attributes[name] || '').replace(/"/g, '"') + '"'; - }).join(' '); - - return '<' + env.tag + ' class="' + env.classes.join(' ') + '"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '</' + env.tag + '>'; - -}; - -if (!_self.document) { - if (!_self.addEventListener) { - // in Node.js - return _self.Prism; - } - - if (!_.disableWorkerMessageHandler) { - // In worker - _self.addEventListener('message', function (evt) { - var message = JSON.parse(evt.data), - lang = message.language, - code = message.code, - immediateClose = message.immediateClose; - - _self.postMessage(_.highlight(code, _.languages[lang], lang)); - if (immediateClose) { - _self.close(); - } - }, false); - } - - return _self.Prism; -} - -//Get current script and highlight -var script = document.currentScript || [].slice.call(document.getElementsByTagName("script")).pop(); - -if (script) { - _.filename = script.src; - - if (!_.manual && !script.hasAttribute('data-manual')) { - if(document.readyState !== "loading") { - if (window.requestAnimationFrame) { - window.requestAnimationFrame(_.highlightAll); - } else { - window.setTimeout(_.highlightAll, 16); - } - } - else { - document.addEventListener('DOMContentLoaded', _.highlightAll); - } - } -} - -return _self.Prism; - -})(); - -if (typeof module !== 'undefined' && module.exports) { - module.exports = Prism; -} - -// hack for components to work correctly in node.js -if (typeof global !== 'undefined') { - global.Prism = Prism; -} -; -Prism.languages.markup = { - 'comment': /<!--[\s\S]*?-->/, - 'prolog': /<\?[\s\S]+?\?>/, - 'doctype': /<!DOCTYPE[\s\S]+?>/i, - 'cdata': /<!\[CDATA\[[\s\S]*?]]>/i, - 'tag': { - pattern: /<\/?(?!\d)[^\s>\/=$<%]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i, - greedy: true, - inside: { - 'tag': { - pattern: /^<\/?[^\s>\/]+/i, - inside: { - 'punctuation': /^<\/?/, - 'namespace': /^[^\s>\/:]+:/ - } - }, - 'attr-value': { - pattern: /=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i, - inside: { - 'punctuation': [ - /^=/, - { - pattern: /(^|[^\\])["']/, - lookbehind: true - } - ] - } - }, - 'punctuation': /\/?>/, - 'attr-name': { - pattern: /[^\s>\/]+/, - inside: { - 'namespace': /^[^\s>\/:]+:/ - } - } - - } - }, - 'entity': /&#?[\da-z]{1,8};/i -}; - -Prism.languages.markup['tag'].inside['attr-value'].inside['entity'] = - Prism.languages.markup['entity']; - -// Plugin to make entity title show the real entity, idea by Roman Komarov -Prism.hooks.add('wrap', function(env) { - - if (env.type === 'entity') { - env.attributes['title'] = env.content.replace(/&/, '&'); - } -}); - -Prism.languages.xml = Prism.languages.markup; -Prism.languages.html = Prism.languages.markup; -Prism.languages.mathml = Prism.languages.markup; -Prism.languages.svg = Prism.languages.markup; - -Prism.languages.css = { - 'comment': /\/\*[\s\S]*?\*\//, - 'atrule': { - pattern: /@[\w-]+?.*?(?:;|(?=\s*\{))/i, - inside: { - 'rule': /@[\w-]+/ - // See rest below - } - }, - 'url': /url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i, - 'selector': /[^{}\s][^{};]*?(?=\s*\{)/, - 'string': { - pattern: /("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, - greedy: true - }, - 'property': /[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i, - 'important': /\B!important\b/i, - 'function': /[-a-z0-9]+(?=\()/i, - 'punctuation': /[(){};:]/ -}; - -Prism.languages.css['atrule'].inside.rest = Prism.languages.css; - -if (Prism.languages.markup) { - Prism.languages.insertBefore('markup', 'tag', { - 'style': { - pattern: /(<style[\s\S]*?>)[\s\S]*?(?=<\/style>)/i, - lookbehind: true, - inside: Prism.languages.css, - alias: 'language-css', - greedy: true - } - }); - - Prism.languages.insertBefore('inside', 'attr-value', { - 'style-attr': { - pattern: /\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i, - inside: { - 'attr-name': { - pattern: /^\s*style/i, - inside: Prism.languages.markup.tag.inside - }, - 'punctuation': /^\s*=\s*['"]|['"]\s*$/, - 'attr-value': { - pattern: /.+/i, - inside: Prism.languages.css - } - }, - alias: 'language-css' - } - }, Prism.languages.markup.tag); -}; -Prism.languages.clike = { - 'comment': [ - { - pattern: /(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/, - lookbehind: true - }, - { - pattern: /(^|[^\\:])\/\/.*/, - lookbehind: true, - greedy: true - } - ], - 'string': { - pattern: /(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, - greedy: true - }, - 'class-name': { - pattern: /((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[\w.\\]+/i, - lookbehind: true, - inside: { - punctuation: /[.\\]/ - } - }, - 'keyword': /\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/, - 'boolean': /\b(?:true|false)\b/, - 'function': /[a-z0-9_]+(?=\()/i, - 'number': /\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i, - 'operator': /--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/, - 'punctuation': /[{}[\];(),.:]/ -}; - -Prism.languages.javascript = Prism.languages.extend('clike', { - 'keyword': /\b(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/, - 'number': /\b(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|NaN|Infinity)\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][+-]?\d+)?/, - // Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444) - 'function': /[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i, - 'operator': /-[-=]?|\+[+=]?|!=?=?|<<?=?|>>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/ -}); - -Prism.languages.insertBefore('javascript', 'keyword', { - 'regex': { - pattern: /((?:^|[^$\w\xA0-\uFFFF."'\])\s])\s*)\/(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})\]]))/, - lookbehind: true, - greedy: true - }, - // This must be declared before keyword because we use "function" inside the look-forward - 'function-variable': { - pattern: /[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i, - alias: 'function' - }, - 'constant': /\b[A-Z][A-Z\d_]*\b/ -}); - -Prism.languages.insertBefore('javascript', 'string', { - 'template-string': { - pattern: /`(?:\\[\s\S]|\${[^}]+}|[^\\`])*`/, - greedy: true, - inside: { - 'interpolation': { - pattern: /\${[^}]+}/, - inside: { - 'interpolation-punctuation': { - pattern: /^\${|}$/, - alias: 'punctuation' - }, - rest: null // See below - } - }, - 'string': /[\s\S]+/ - } - } -}); -Prism.languages.javascript['template-string'].inside['interpolation'].inside.rest = Prism.languages.javascript; - -if (Prism.languages.markup) { - Prism.languages.insertBefore('markup', 'tag', { - 'script': { - pattern: /(<script[\s\S]*?>)[\s\S]*?(?=<\/script>)/i, - lookbehind: true, - inside: Prism.languages.javascript, - alias: 'language-javascript', - greedy: true - } - }); -} - -Prism.languages.js = Prism.languages.javascript; - -Prism.languages.c = Prism.languages.extend('clike', { - 'keyword': /\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/, - 'operator': /-[>-]?|\+\+?|!=?|<<?=?|>>?=?|==?|&&?|\|\|?|[~^%?*\/]/, - 'number': /(?:\b0x[\da-f]+|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?)[ful]*/i -}); - -Prism.languages.insertBefore('c', 'string', { - 'macro': { - // allow for multiline macro definitions - // spaces after the # character compile fine with gcc - pattern: /(^\s*)#\s*[a-z]+(?:[^\r\n\\]|\\(?:\r\n|[\s\S]))*/im, - lookbehind: true, - alias: 'property', - inside: { - // highlight the path of the include statement as a string - 'string': { - pattern: /(#\s*include\s*)(?:<.+?>|("|')(?:\\?.)+?\2)/, - lookbehind: true - }, - // highlight macro directives as keywords - 'directive': { - pattern: /(#\s*)\b(?:define|defined|elif|else|endif|error|ifdef|ifndef|if|import|include|line|pragma|undef|using)\b/, - lookbehind: true, - alias: 'keyword' - } - } - }, - // highlight predefined macros as constants - 'constant': /\b(?:__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|stdin|stdout|stderr)\b/ -}); - -delete Prism.languages.c['class-name']; -delete Prism.languages.c['boolean']; - -Prism.languages.csharp = Prism.languages.extend('clike', { - 'keyword': /\b(?:abstract|add|alias|as|ascending|async|await|base|bool|break|byte|case|catch|char|checked|class|const|continue|decimal|default|delegate|descending|do|double|dynamic|else|enum|event|explicit|extern|false|finally|fixed|float|for|foreach|from|get|global|goto|group|if|implicit|in|int|interface|internal|into|is|join|let|lock|long|namespace|new|null|object|operator|orderby|out|override|params|partial|private|protected|public|readonly|ref|remove|return|sbyte|sealed|select|set|short|sizeof|stackalloc|static|string|struct|switch|this|throw|true|try|typeof|uint|ulong|unchecked|unsafe|ushort|using|value|var|virtual|void|volatile|where|while|yield)\b/, - 'string': [ - { - pattern: /@("|')(?:\1\1|\\[\s\S]|(?!\1)[^\\])*\1/, - greedy: true - }, - { - pattern: /("|')(?:\\.|(?!\1)[^\\\r\n])*?\1/, - greedy: true - } - ], - 'class-name': [ - { - // (Foo bar, Bar baz) - pattern: /\b[A-Z]\w*(?:\.\w+)*\b(?=\s+\w+)/, - inside: { - punctuation: /\./ - } - }, - { - // [Foo] - pattern: /(\[)[A-Z]\w*(?:\.\w+)*\b/, - lookbehind: true, - inside: { - punctuation: /\./ - } - }, - { - // class Foo : Bar - pattern: /(\b(?:class|interface)\s+[A-Z]\w*(?:\.\w+)*\s*:\s*)[A-Z]\w*(?:\.\w+)*\b/, - lookbehind: true, - inside: { - punctuation: /\./ - } - }, - { - // class Foo - pattern: /((?:\b(?:class|interface|new)\s+)|(?:catch\s+\())[A-Z]\w*(?:\.\w+)*\b/, - lookbehind: true, - inside: { - punctuation: /\./ - } - } - ], - 'number': /\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)f?/i -}); - -Prism.languages.insertBefore('csharp', 'class-name', { - 'generic-method': { - pattern: /\w+\s*<[^>\r\n]+?>\s*(?=\()/, - inside: { - function: /^\w+/, - 'class-name': { - pattern: /\b[A-Z]\w*(?:\.\w+)*\b/, - inside: { - punctuation: /\./ - } - }, - keyword: Prism.languages.csharp.keyword, - punctuation: /[<>(),.:]/ - } - }, - 'preprocessor': { - pattern: /(^\s*)#.*/m, - lookbehind: true, - alias: 'property', - inside: { - // highlight preprocessor directives as keywords - 'directive': { - pattern: /(\s*#)\b(?:define|elif|else|endif|endregion|error|if|line|pragma|region|undef|warning)\b/, - lookbehind: true, - alias: 'keyword' - } - } - } -}); - -Prism.languages.dotnet = Prism.languages.csharp; -(function(Prism) { - var insideString = { - variable: [ - // Arithmetic Environment - { - pattern: /\$?\(\([\s\S]+?\)\)/, - inside: { - // If there is a $ sign at the beginning highlight $(( and )) as variable - variable: [{ - pattern: /(^\$\(\([\s\S]+)\)\)/, - lookbehind: true - }, - /^\$\(\(/ - ], - number: /\b0x[\dA-Fa-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee]-?\d+)?/, - // Operators according to https://www.gnu.org/software/bash/manual/bashref.html#Shell-Arithmetic - operator: /--?|-=|\+\+?|\+=|!=?|~|\*\*?|\*=|\/=?|%=?|<<=?|>>=?|<=?|>=?|==?|&&?|&=|\^=?|\|\|?|\|=|\?|:/, - // If there is no $ sign at the beginning highlight (( and )) as punctuation - punctuation: /\(\(?|\)\)?|,|;/ - } - }, - // Command Substitution - { - pattern: /\$\([^)]+\)|`[^`]+`/, - greedy: true, - inside: { - variable: /^\$\(|^`|\)$|`$/ - } - }, - /\$(?:[\w#?*!@]+|\{[^}]+\})/i - ] - }; - - Prism.languages.bash = { - 'shebang': { - pattern: /^#!\s*\/bin\/bash|^#!\s*\/bin\/sh/, - alias: 'important' - }, - 'comment': { - pattern: /(^|[^"{\\])#.*/, - lookbehind: true - }, - 'string': [ - //Support for Here-Documents https://en.wikipedia.org/wiki/Here_document - { - pattern: /((?:^|[^<])<<\s*)["']?(\w+?)["']?\s*\r?\n(?:[\s\S])*?\r?\n\2/, - lookbehind: true, - greedy: true, - inside: insideString - }, - { - pattern: /(["'])(?:\\[\s\S]|\$\([^)]+\)|`[^`]+`|(?!\1)[^\\])*\1/, - greedy: true, - inside: insideString - } - ], - 'variable': insideString.variable, - // Originally based on http://ss64.com/bash/ - 'function': { - pattern: /(^|[\s;|&])(?:alias|apropos|apt-get|aptitude|aspell|awk|basename|bash|bc|bg|builtin|bzip2|cal|cat|cd|cfdisk|chgrp|chmod|chown|chroot|chkconfig|cksum|clear|cmp|comm|command|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|enable|env|ethtool|eval|exec|expand|expect|export|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|getopts|git|grep|groupadd|groupdel|groupmod|groups|gzip|hash|head|help|hg|history|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|jobs|join|kill|killall|less|link|ln|locate|logname|logout|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|make|man|mkdir|mkfifo|mkisofs|mknod|more|most|mount|mtools|mtr|mv|mmv|nano|netstat|nice|nl|nohup|notify-send|npm|nslookup|open|op|passwd|paste|pathchk|ping|pkill|popd|pr|printcap|printenv|printf|ps|pushd|pv|pwd|quota|quotacheck|quotactl|ram|rar|rcp|read|readarray|readonly|reboot|rename|renice|remsync|rev|rm|rmdir|rsync|screen|scp|sdiff|sed|seq|service|sftp|shift|shopt|shutdown|sleep|slocate|sort|source|split|ssh|stat|strace|su|sudo|sum|suspend|sync|tail|tar|tee|test|time|timeout|times|touch|top|traceroute|trap|tr|tsort|tty|type|ulimit|umask|umount|unalias|uname|unexpand|uniq|units|unrar|unshar|uptime|useradd|userdel|usermod|users|uuencode|uudecode|v|vdir|vi|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yes|zip)(?=$|[\s;|&])/, - lookbehind: true - }, - 'keyword': { - pattern: /(^|[\s;|&])(?:let|:|\.|if|then|else|elif|fi|for|break|continue|while|in|case|function|select|do|done|until|echo|exit|return|set|declare)(?=$|[\s;|&])/, - lookbehind: true - }, - 'boolean': { - pattern: /(^|[\s;|&])(?:true|false)(?=$|[\s;|&])/, - lookbehind: true - }, - 'operator': /&&?|\|\|?|==?|!=?|<<<?|>>|<=?|>=?|=~/, - 'punctuation': /\$?\(\(?|\)\)?|\.\.|[{}[\];]/ - }; - - var inside = insideString.variable[1].inside; - inside.string = Prism.languages.bash.string; - inside['function'] = Prism.languages.bash['function']; - inside.keyword = Prism.languages.bash.keyword; - inside['boolean'] = Prism.languages.bash['boolean']; - inside.operator = Prism.languages.bash.operator; - inside.punctuation = Prism.languages.bash.punctuation; - - Prism.languages.shell = Prism.languages.bash; -})(Prism); - -Prism.languages['markup-templating'] = {}; - -Object.defineProperties(Prism.languages['markup-templating'], { - buildPlaceholders: { - // Tokenize all inline templating expressions matching placeholderPattern - // If the replaceFilter function is provided, it will be called with every match. - // If it returns false, the match will not be replaced. - value: function (env, language, placeholderPattern, replaceFilter) { - if (env.language !== language) { - return; - } - - env.tokenStack = []; - - env.code = env.code.replace(placeholderPattern, function(match) { - if (typeof replaceFilter === 'function' && !replaceFilter(match)) { - return match; - } - var i = env.tokenStack.length; - // Check for existing strings - while (env.code.indexOf('___' + language.toUpperCase() + i + '___') !== -1) - ++i; - - // Create a sparse array - env.tokenStack[i] = match; - - return '___' + language.toUpperCase() + i + '___'; - }); - - // Switch the grammar to markup - env.grammar = Prism.languages.markup; - } - }, - tokenizePlaceholders: { - // Replace placeholders with proper tokens after tokenizing - value: function (env, language) { - if (env.language !== language || !env.tokenStack) { - return; - } - - // Switch the grammar back - env.grammar = Prism.languages[language]; - - var j = 0; - var keys = Object.keys(env.tokenStack); - var walkTokens = function (tokens) { - if (j >= keys.length) { - return; - } - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; - if (typeof token === 'string' || (token.content && typeof token.content === 'string')) { - var k = keys[j]; - var t = env.tokenStack[k]; - var s = typeof token === 'string' ? token : token.content; - - var index = s.indexOf('___' + language.toUpperCase() + k + '___'); - if (index > -1) { - ++j; - var before = s.substring(0, index); - var middle = new Prism.Token(language, Prism.tokenize(t, env.grammar, language), 'language-' + language, t); - var after = s.substring(index + ('___' + language.toUpperCase() + k + '___').length); - var replacement; - if (before || after) { - replacement = [before, middle, after].filter(function (v) { return !!v; }); - walkTokens(replacement); - } else { - replacement = middle; - } - if (typeof token === 'string') { - Array.prototype.splice.apply(tokens, [i, 1].concat(replacement)); - } else { - token.content = replacement; - } - - if (j >= keys.length) { - break; - } - } - } else if (token.content && typeof token.content !== 'string') { - walkTokens(token.content); - } - } - }; - - walkTokens(env.tokens); - } - } -}); -Prism.languages.git = { - /* - * A simple one line comment like in a git status command - * For instance: - * $ git status - * # On branch infinite-scroll - * # Your branch and 'origin/sharedBranches/frontendTeam/infinite-scroll' have diverged, - * # and have 1 and 2 different commits each, respectively. - * nothing to commit (working directory clean) - */ - 'comment': /^#.*/m, - - /* - * Regexp to match the changed lines in a git diff output. Check the example below. - */ - 'deleted': /^[-–].*/m, - 'inserted': /^\+.*/m, - - /* - * a string (double and simple quote) - */ - 'string': /("|')(?:\\.|(?!\1)[^\\\r\n])*\1/m, - - /* - * a git command. It starts with a random prompt finishing by a $, then "git" then some other parameters - * For instance: - * $ git add file.txt - */ - 'command': { - pattern: /^.*\$ git .*$/m, - inside: { - /* - * A git command can contain a parameter starting by a single or a double dash followed by a string - * For instance: - * $ git diff --cached - * $ git log -p - */ - 'parameter': /\s--?\w+/m - } - }, - - /* - * Coordinates displayed in a git diff command - * For instance: - * $ git diff - * diff --git file.txt file.txt - * index 6214953..1d54a52 100644 - * --- file.txt - * +++ file.txt - * @@ -1 +1,2 @@ - * -Here's my tetx file - * +Here's my text file - * +And this is the second line - */ - 'coord': /^@@.*@@$/m, - - /* - * Match a "commit [SHA1]" line in a git log output. - * For instance: - * $ git log - * commit a11a14ef7e26f2ca62d4b35eac455ce636d0dc09 - * Author: lgiraudel - * Date: Mon Feb 17 11:18:34 2014 +0100 - * - * Add of a new line - */ - 'commit_sha1': /^commit \w{40}$/m -}; - -Prism.languages.ini= { - 'comment': /^[ \t]*;.*$/m, - 'selector': /^[ \t]*\[.*?\]/m, - 'constant': /^[ \t]*[^\s=]+?(?=[ \t]*=)/m, - 'attr-value': { - pattern: /=.*/, - inside: { - 'punctuation': /^[=]/ - } - } -}; -Prism.languages.java = Prism.languages.extend('clike', { - 'keyword': /\b(?:abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while)\b/, - 'number': /\b0b[01]+\b|\b0x[\da-f]*\.?[\da-fp-]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?[df]?/i, - 'operator': { - pattern: /(^|[^.])(?:\+[+=]?|-[-=]?|!=?|<<?=?|>>?>?=?|==?|&[&=]?|\|[|=]?|\*=?|\/=?|%=?|\^=?|[?:~])/m, - lookbehind: true - } -}); - -Prism.languages.insertBefore('java','function', { - 'annotation': { - alias: 'punctuation', - pattern: /(^|[^.])@\w+/, - lookbehind: true - } -}); - -Prism.languages.insertBefore('java', 'class-name', { - 'generics': { - pattern: /<\s*\w+(?:\.\w+)?(?:\s*,\s*\w+(?:\.\w+)?)*>/i, - alias: 'function', - inside: { - keyword: Prism.languages.java.keyword, - punctuation: /[<>(),.:]/ - } - } -}); - -Prism.languages.json = { - 'property': /"(?:\\.|[^\\"\r\n])*"(?=\s*:)/i, - 'string': { - pattern: /"(?:\\.|[^\\"\r\n])*"(?!\s*:)/, - greedy: true - }, - 'number': /-?\d+\.?\d*([Ee][+-]?\d+)?/, - 'punctuation': /[{}[\],]/, - 'operator': /:/g, - 'boolean': /\b(?:true|false)\b/i, - 'null': /\bnull\b/i -}; - -Prism.languages.jsonp = Prism.languages.json; - -Prism.languages.markdown = Prism.languages.extend('markup', {}); -Prism.languages.insertBefore('markdown', 'prolog', { - 'blockquote': { - // > ... - pattern: /^>(?:[\t ]*>)*/m, - alias: 'punctuation' - }, - 'code': [ - { - // Prefixed by 4 spaces or 1 tab - pattern: /^(?: {4}|\t).+/m, - alias: 'keyword' - }, - { - // `code` - // ``code`` - pattern: /``.+?``|`[^`\n]+`/, - alias: 'keyword' - } - ], - 'title': [ - { - // title 1 - // ======= - - // title 2 - // ------- - pattern: /\w+.*(?:\r?\n|\r)(?:==+|--+)/, - alias: 'important', - inside: { - punctuation: /==+$|--+$/ - } - }, - { - // # title 1 - // ###### title 6 - pattern: /(^\s*)#+.+/m, - lookbehind: true, - alias: 'important', - inside: { - punctuation: /^#+|#+$/ - } - } - ], - 'hr': { - // *** - // --- - // * * * - // ----------- - pattern: /(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m, - lookbehind: true, - alias: 'punctuation' - }, - 'list': { - // * item - // + item - // - item - // 1. item - pattern: /(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m, - lookbehind: true, - alias: 'punctuation' - }, - 'url-reference': { - // [id]: http://example.com "Optional title" - // [id]: http://example.com 'Optional title' - // [id]: http://example.com (Optional title) - // [id]: <http://example.com> "Optional title" - pattern: /!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/, - inside: { - 'variable': { - pattern: /^(!?\[)[^\]]+/, - lookbehind: true - }, - 'string': /(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/, - 'punctuation': /^[\[\]!:]|[<>]/ - }, - alias: 'url' - }, - 'bold': { - // **strong** - // __strong__ - - // Allow only one line break - pattern: /(^|[^\\])(\*\*|__)(?:(?:\r?\n|\r)(?!\r?\n|\r)|.)+?\2/, - lookbehind: true, - inside: { - 'punctuation': /^\*\*|^__|\*\*$|__$/ - } - }, - 'italic': { - // *em* - // _em_ - - // Allow only one line break - pattern: /(^|[^\\])([*_])(?:(?:\r?\n|\r)(?!\r?\n|\r)|.)+?\2/, - lookbehind: true, - inside: { - 'punctuation': /^[*_]|[*_]$/ - } - }, - 'url': { - // [example](http://example.com "Optional title") - // [example] [id] - pattern: /!?\[[^\]]+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)| ?\[[^\]\n]*\])/, - inside: { - 'variable': { - pattern: /(!?\[)[^\]]+(?=\]$)/, - lookbehind: true - }, - 'string': { - pattern: /"(?:\\.|[^"\\])*"(?=\)$)/ - } - } - } -}); - -Prism.languages.markdown['bold'].inside['url'] = Prism.languages.markdown['url']; -Prism.languages.markdown['italic'].inside['url'] = Prism.languages.markdown['url']; -Prism.languages.markdown['bold'].inside['italic'] = Prism.languages.markdown['italic']; -Prism.languages.markdown['italic'].inside['bold'] = Prism.languages.markdown['bold']; -Prism.languages.makefile = { - 'comment': { - pattern: /(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/, - lookbehind: true - }, - 'string': { - pattern: /(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, - greedy: true - }, - - // Built-in target names - 'builtin': /\.[A-Z][^:#=\s]+(?=\s*:(?!=))/, - - // Targets - 'symbol': { - pattern: /^[^:=\r\n]+(?=\s*:(?!=))/m, - inside: { - 'variable': /\$+(?:[^(){}:#=\s]+|(?=[({]))/ - } - }, - 'variable': /\$+(?:[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/, - - 'keyword': [ - // Directives - /-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/, - // Functions - { - pattern: /(\()(?:addsuffix|abspath|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:s|list)?)(?=[ \t])/, - lookbehind: true - } - ], - 'operator': /(?:::|[?:+!])?=|[|@]/, - 'punctuation': /[:;(){}]/ -}; -Prism.languages.nginx = Prism.languages.extend('clike', { - 'comment': { - pattern: /(^|[^"{\\])#.*/, - lookbehind: true - }, - 'keyword': /\b(?:CONTENT_|DOCUMENT_|GATEWAY_|HTTP_|HTTPS|if_not_empty|PATH_|QUERY_|REDIRECT_|REMOTE_|REQUEST_|SCGI|SCRIPT_|SERVER_|http|events|accept_mutex|accept_mutex_delay|access_log|add_after_body|add_before_body|add_header|addition_types|aio|alias|allow|ancient_browser|ancient_browser_value|auth|auth_basic|auth_basic_user_file|auth_http|auth_http_header|auth_http_timeout|autoindex|autoindex_exact_size|autoindex_localtime|break|charset|charset_map|charset_types|chunked_transfer_encoding|client_body_buffer_size|client_body_in_file_only|client_body_in_single_buffer|client_body_temp_path|client_body_timeout|client_header_buffer_size|client_header_timeout|client_max_body_size|connection_pool_size|create_full_put_path|daemon|dav_access|dav_methods|debug_connection|debug_points|default_type|deny|devpoll_changes|devpoll_events|directio|directio_alignment|disable_symlinks|empty_gif|env|epoll_events|error_log|error_page|expires|fastcgi_buffer_size|fastcgi_buffers|fastcgi_busy_buffers_size|fastcgi_cache|fastcgi_cache_bypass|fastcgi_cache_key|fastcgi_cache_lock|fastcgi_cache_lock_timeout|fastcgi_cache_methods|fastcgi_cache_min_uses|fastcgi_cache_path|fastcgi_cache_purge|fastcgi_cache_use_stale|fastcgi_cache_valid|fastcgi_connect_timeout|fastcgi_hide_header|fastcgi_ignore_client_abort|fastcgi_ignore_headers|fastcgi_index|fastcgi_intercept_errors|fastcgi_keep_conn|fastcgi_max_temp_file_size|fastcgi_next_upstream|fastcgi_no_cache|fastcgi_param|fastcgi_pass|fastcgi_pass_header|fastcgi_read_timeout|fastcgi_redirect_errors|fastcgi_send_timeout|fastcgi_split_path_info|fastcgi_store|fastcgi_store_access|fastcgi_temp_file_write_size|fastcgi_temp_path|flv|geo|geoip_city|geoip_country|google_perftools_profiles|gzip|gzip_buffers|gzip_comp_level|gzip_disable|gzip_http_version|gzip_min_length|gzip_proxied|gzip_static|gzip_types|gzip_vary|if|if_modified_since|ignore_invalid_headers|image_filter|image_filter_buffer|image_filter_jpeg_quality|image_filter_sharpen|image_filter_transparency|imap_capabilities|imap_client_buffer|include|index|internal|ip_hash|keepalive|keepalive_disable|keepalive_requests|keepalive_timeout|kqueue_changes|kqueue_events|large_client_header_buffers|limit_conn|limit_conn_log_level|limit_conn_zone|limit_except|limit_rate|limit_rate_after|limit_req|limit_req_log_level|limit_req_zone|limit_zone|lingering_close|lingering_time|lingering_timeout|listen|location|lock_file|log_format|log_format_combined|log_not_found|log_subrequest|map|map_hash_bucket_size|map_hash_max_size|master_process|max_ranges|memcached_buffer_size|memcached_connect_timeout|memcached_next_upstream|memcached_pass|memcached_read_timeout|memcached_send_timeout|merge_slashes|min_delete_depth|modern_browser|modern_browser_value|mp4|mp4_buffer_size|mp4_max_buffer_size|msie_padding|msie_refresh|multi_accept|open_file_cache|open_file_cache_errors|open_file_cache_min_uses|open_file_cache_valid|open_log_file_cache|optimize_server_names|override_charset|pcre_jit|perl|perl_modules|perl_require|perl_set|pid|pop3_auth|pop3_capabilities|port_in_redirect|post_action|postpone_output|protocol|proxy|proxy_buffer|proxy_buffer_size|proxy_buffering|proxy_buffers|proxy_busy_buffers_size|proxy_cache|proxy_cache_bypass|proxy_cache_key|proxy_cache_lock|proxy_cache_lock_timeout|proxy_cache_methods|proxy_cache_min_uses|proxy_cache_path|proxy_cache_use_stale|proxy_cache_valid|proxy_connect_timeout|proxy_cookie_domain|proxy_cookie_path|proxy_headers_hash_bucket_size|proxy_headers_hash_max_size|proxy_hide_header|proxy_http_version|proxy_ignore_client_abort|proxy_ignore_headers|proxy_intercept_errors|proxy_max_temp_file_size|proxy_method|proxy_next_upstream|proxy_no_cache|proxy_pass|proxy_pass_error_message|proxy_pass_header|proxy_pass_request_body|proxy_pass_request_headers|proxy_read_timeout|proxy_redirect|proxy_redirect_errors|proxy_send_lowat|proxy_send_timeout|proxy_set_body|proxy_set_header|proxy_ssl_session_reuse|proxy_store|proxy_store_access|proxy_temp_file_write_size|proxy_temp_path|proxy_timeout|proxy_upstream_fail_timeout|proxy_upstream_max_fails|random_index|read_ahead|real_ip_header|recursive_error_pages|request_pool_size|reset_timedout_connection|resolver|resolver_timeout|return|rewrite|root|rtsig_overflow_events|rtsig_overflow_test|rtsig_overflow_threshold|rtsig_signo|satisfy|satisfy_any|secure_link_secret|send_lowat|send_timeout|sendfile|sendfile_max_chunk|server|server_name|server_name_in_redirect|server_names_hash_bucket_size|server_names_hash_max_size|server_tokens|set|set_real_ip_from|smtp_auth|smtp_capabilities|so_keepalive|source_charset|split_clients|ssi|ssi_silent_errors|ssi_types|ssi_value_length|ssl|ssl_certificate|ssl_certificate_key|ssl_ciphers|ssl_client_certificate|ssl_crl|ssl_dhparam|ssl_engine|ssl_prefer_server_ciphers|ssl_protocols|ssl_session_cache|ssl_session_timeout|ssl_verify_client|ssl_verify_depth|starttls|stub_status|sub_filter|sub_filter_once|sub_filter_types|tcp_nodelay|tcp_nopush|timeout|timer_resolution|try_files|types|types_hash_bucket_size|types_hash_max_size|underscores_in_headers|uninitialized_variable_warn|upstream|use|user|userid|userid_domain|userid_expires|userid_name|userid_p3p|userid_path|userid_service|valid_referers|variables_hash_bucket_size|variables_hash_max_size|worker_connections|worker_cpu_affinity|worker_priority|worker_processes|worker_rlimit_core|worker_rlimit_nofile|worker_rlimit_sigpending|working_directory|xclient|xml_entities|xslt_entities|xslt_stylesheet|xslt_types)\b/i -}); - -Prism.languages.insertBefore('nginx', 'keyword', { - 'variable': /\$[a-z_]+/i -}); -Prism.languages.perl = { - 'comment': [ - { - // POD - pattern: /(^\s*)=\w+[\s\S]*?=cut.*/m, - lookbehind: true - }, - { - pattern: /(^|[^\\$])#.*/, - lookbehind: true - } - ], - // TODO Could be nice to handle Heredoc too. - 'string': [ - // q/.../ - { - pattern: /\b(?:q|qq|qx|qw)\s*([^a-zA-Z0-9\s{(\[<])(?:(?!\1)[^\\]|\\[\s\S])*\1/, - greedy: true - }, - - // q a...a - { - pattern: /\b(?:q|qq|qx|qw)\s+([a-zA-Z0-9])(?:(?!\1)[^\\]|\\[\s\S])*\1/, - greedy: true - }, - - // q(...) - { - pattern: /\b(?:q|qq|qx|qw)\s*\((?:[^()\\]|\\[\s\S])*\)/, - greedy: true - }, - - // q{...} - { - pattern: /\b(?:q|qq|qx|qw)\s*\{(?:[^{}\\]|\\[\s\S])*\}/, - greedy: true - }, - - // q[...] - { - pattern: /\b(?:q|qq|qx|qw)\s*\[(?:[^[\]\\]|\\[\s\S])*\]/, - greedy: true - }, - - // q<...> - { - pattern: /\b(?:q|qq|qx|qw)\s*<(?:[^<>\\]|\\[\s\S])*>/, - greedy: true - }, - - // "...", `...` - { - pattern: /("|`)(?:(?!\1)[^\\]|\\[\s\S])*\1/, - greedy: true - }, - - // '...' - // FIXME Multi-line single-quoted strings are not supported as they would break variables containing ' - { - pattern: /'(?:[^'\\\r\n]|\\.)*'/, - greedy: true - } - ], - 'regex': [ - // m/.../ - { - pattern: /\b(?:m|qr)\s*([^a-zA-Z0-9\s{(\[<])(?:(?!\1)[^\\]|\\[\s\S])*\1[msixpodualngc]*/, - greedy: true - }, - - // m a...a - { - pattern: /\b(?:m|qr)\s+([a-zA-Z0-9])(?:(?!\1)[^\\]|\\[\s\S])*\1[msixpodualngc]*/, - greedy: true - }, - - // m(...) - { - pattern: /\b(?:m|qr)\s*\((?:[^()\\]|\\[\s\S])*\)[msixpodualngc]*/, - greedy: true - }, - - // m{...} - { - pattern: /\b(?:m|qr)\s*\{(?:[^{}\\]|\\[\s\S])*\}[msixpodualngc]*/, - greedy: true - }, - - // m[...] - { - pattern: /\b(?:m|qr)\s*\[(?:[^[\]\\]|\\[\s\S])*\][msixpodualngc]*/, - greedy: true - }, - - // m<...> - { - pattern: /\b(?:m|qr)\s*<(?:[^<>\\]|\\[\s\S])*>[msixpodualngc]*/, - greedy: true - }, - - // The lookbehinds prevent -s from breaking - // FIXME We don't handle change of separator like s(...)[...] - // s/.../.../ - { - pattern: /(^|[^-]\b)(?:s|tr|y)\s*([^a-zA-Z0-9\s{(\[<])(?:(?!\2)[^\\]|\\[\s\S])*\2(?:(?!\2)[^\\]|\\[\s\S])*\2[msixpodualngcer]*/, - lookbehind: true, - greedy: true - }, - - // s a...a...a - { - pattern: /(^|[^-]\b)(?:s|tr|y)\s+([a-zA-Z0-9])(?:(?!\2)[^\\]|\\[\s\S])*\2(?:(?!\2)[^\\]|\\[\s\S])*\2[msixpodualngcer]*/, - lookbehind: true, - greedy: true - }, - - // s(...)(...) - { - pattern: /(^|[^-]\b)(?:s|tr|y)\s*\((?:[^()\\]|\\[\s\S])*\)\s*\((?:[^()\\]|\\[\s\S])*\)[msixpodualngcer]*/, - lookbehind: true, - greedy: true - }, - - // s{...}{...} - { - pattern: /(^|[^-]\b)(?:s|tr|y)\s*\{(?:[^{}\\]|\\[\s\S])*\}\s*\{(?:[^{}\\]|\\[\s\S])*\}[msixpodualngcer]*/, - lookbehind: true, - greedy: true - }, - - // s[...][...] - { - pattern: /(^|[^-]\b)(?:s|tr|y)\s*\[(?:[^[\]\\]|\\[\s\S])*\]\s*\[(?:[^[\]\\]|\\[\s\S])*\][msixpodualngcer]*/, - lookbehind: true, - greedy: true - }, - - // s<...><...> - { - pattern: /(^|[^-]\b)(?:s|tr|y)\s*<(?:[^<>\\]|\\[\s\S])*>\s*<(?:[^<>\\]|\\[\s\S])*>[msixpodualngcer]*/, - lookbehind: true, - greedy: true - }, - - // /.../ - // The look-ahead tries to prevent two divisions on - // the same line from being highlighted as regex. - // This does not support multi-line regex. - { - pattern: /\/(?:[^\/\\\r\n]|\\.)*\/[msixpodualngc]*(?=\s*(?:$|[\r\n,.;})&|\-+*~<>!?^]|(lt|gt|le|ge|eq|ne|cmp|not|and|or|xor|x)\b))/, - greedy: true - } - ], - - // FIXME Not sure about the handling of ::, ', and # - 'variable': [ - // ${^POSTMATCH} - /[&*$@%]\{\^[A-Z]+\}/, - // $^V - /[&*$@%]\^[A-Z_]/, - // ${...} - /[&*$@%]#?(?=\{)/, - // $foo - /[&*$@%]#?(?:(?:::)*'?(?!\d)[\w$]+)+(?:::)*/i, - // $1 - /[&*$@%]\d+/, - // $_, @_, %! - // The negative lookahead prevents from breaking the %= operator - /(?!%=)[$@%][!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~]/ - ], - 'filehandle': { - // <>, <FOO>, _ - pattern: /<(?![<=])\S*>|\b_\b/, - alias: 'symbol' - }, - 'vstring': { - // v1.2, 1.2.3 - pattern: /v\d+(?:\.\d+)*|\d+(?:\.\d+){2,}/, - alias: 'string' - }, - 'function': { - pattern: /sub [a-z0-9_]+/i, - inside: { - keyword: /sub/ - } - }, - 'keyword': /\b(?:any|break|continue|default|delete|die|do|else|elsif|eval|for|foreach|given|goto|if|last|local|my|next|our|package|print|redo|require|say|state|sub|switch|undef|unless|until|use|when|while)\b/, - 'number': /\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0b[01](?:_?[01])*|(?:\d(?:_?\d)*)?\.?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)\b/, - 'operator': /-[rwxoRWXOezsfdlpSbctugkTBMAC]\b|\+[+=]?|-[-=>]?|\*\*?=?|\/\/?=?|=[=~>]?|~[~=]?|\|\|?=?|&&?=?|<(?:=>?|<=?)?|>>?=?|![~=]?|[%^]=?|\.(?:=|\.\.?)?|[\\?]|\bx(?:=|\b)|\b(?:lt|gt|le|ge|eq|ne|cmp|not|and|or|xor)\b/, - 'punctuation': /[{}[\];(),:]/ -}; - -/** - * Original by Aaron Harun: http://aahacreative.com/2012/07/31/php-syntax-highlighting-prism/ - * Modified by Miles Johnson: http://milesj.me - * - * Supports the following: - * - Extends clike syntax - * - Support for PHP 5.3+ (namespaces, traits, generators, etc) - * - Smarter constant and function matching - * - * Adds the following new token classes: - * constant, delimiter, variable, function, package - */ -(function (Prism) { - Prism.languages.php = Prism.languages.extend('clike', { - 'keyword': /\b(?:and|or|xor|array|as|break|case|cfunction|class|const|continue|declare|default|die|do|else|elseif|enddeclare|endfor|endforeach|endif|endswitch|endwhile|extends|for|foreach|function|include|include_once|global|if|new|return|static|switch|use|require|require_once|var|while|abstract|interface|public|implements|private|protected|parent|throw|null|echo|print|trait|namespace|final|yield|goto|instanceof|finally|try|catch)\b/i, - 'constant': /\b[A-Z0-9_]{2,}\b/, - 'comment': { - pattern: /(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/, - lookbehind: true - } - }); - - Prism.languages.insertBefore('php', 'string', { - 'shell-comment': { - pattern: /(^|[^\\])#.*/, - lookbehind: true, - alias: 'comment' - } - }); - - Prism.languages.insertBefore('php', 'keyword', { - 'delimiter': { - pattern: /\?>|<\?(?:php|=)?/i, - alias: 'important' - }, - 'variable': /\$+(?:\w+\b|(?={))/i, - 'package': { - pattern: /(\\|namespace\s+|use\s+)[\w\\]+/, - lookbehind: true, - inside: { - punctuation: /\\/ - } - } - }); - - // Must be defined after the function pattern - Prism.languages.insertBefore('php', 'operator', { - 'property': { - pattern: /(->)[\w]+/, - lookbehind: true - } - }); - - Prism.languages.insertBefore('php', 'string', { - 'nowdoc-string': { - pattern: /<<<'([^']+)'(?:\r\n?|\n)(?:.*(?:\r\n?|\n))*?\1;/, - greedy: true, - alias: 'string', - inside: { - 'delimiter': { - pattern: /^<<<'[^']+'|[a-z_]\w*;$/i, - alias: 'symbol', - inside: { - 'punctuation': /^<<<'?|[';]$/ - } - } - } - }, - 'heredoc-string': { - pattern: /<<<(?:"([^"]+)"(?:\r\n?|\n)(?:.*(?:\r\n?|\n))*?\1;|([a-z_]\w*)(?:\r\n?|\n)(?:.*(?:\r\n?|\n))*?\2;)/i, - greedy: true, - alias: 'string', - inside: { - 'delimiter': { - pattern: /^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i, - alias: 'symbol', - inside: { - 'punctuation': /^<<<"?|[";]$/ - } - }, - 'interpolation': null // See below - } - }, - 'single-quoted-string': { - pattern: /'(?:\\[\s\S]|[^\\'])*'/, - greedy: true, - alias: 'string' - }, - 'double-quoted-string': { - pattern: /"(?:\\[\s\S]|[^\\"])*"/, - greedy: true, - alias: 'string', - inside: { - 'interpolation': null // See below - } - } - }); - // The different types of PHP strings "replace" the C-like standard string - delete Prism.languages.php['string']; - - var string_interpolation = { - pattern: /{\$(?:{(?:{[^{}]+}|[^{}]+)}|[^{}])+}|(^|[^\\{])\$+(?:\w+(?:\[.+?]|->\w+)*)/, - lookbehind: true, - inside: { - rest: Prism.languages.php - } - }; - Prism.languages.php['heredoc-string'].inside['interpolation'] = string_interpolation; - Prism.languages.php['double-quoted-string'].inside['interpolation'] = string_interpolation; - - Prism.hooks.add('before-tokenize', function(env) { - if (!/(?:<\?php|<\?)/ig.test(env.code)) { - return; - } - - var phpPattern = /(?:<\?php|<\?)[\s\S]*?(?:\?>|$)/ig; - Prism.languages['markup-templating'].buildPlaceholders(env, 'php', phpPattern); - }); - - Prism.hooks.add('after-tokenize', function(env) { - Prism.languages['markup-templating'].tokenizePlaceholders(env, 'php'); - }); - -}(Prism)); -Prism.languages.sql= { - 'comment': { - pattern: /(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/, - lookbehind: true - }, - 'string' : { - pattern: /(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\])*\2/, - greedy: true, - lookbehind: true - }, - 'variable': /@[\w.$]+|@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/, - 'function': /\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i, // Should we highlight user defined functions too? - 'keyword': /\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:_INSERT|COL)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURNS?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i, - 'boolean': /\b(?:TRUE|FALSE|NULL)\b/i, - 'number': /\b0x[\da-f]+\b|\b\d+\.?\d*|\B\.\d+\b/i, - 'operator': /[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|IN|LIKE|NOT|OR|IS|DIV|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i, - 'punctuation': /[;[\]()`,.]/ -}; -Prism.languages.python = { - 'comment': { - pattern: /(^|[^\\])#.*/, - lookbehind: true - }, - 'triple-quoted-string': { - pattern: /("""|''')[\s\S]+?\1/, - greedy: true, - alias: 'string' - }, - 'string': { - pattern: /("|')(?:\\.|(?!\1)[^\\\r\n])*\1/, - greedy: true - }, - 'function': { - pattern: /((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g, - lookbehind: true - }, - 'class-name': { - pattern: /(\bclass\s+)\w+/i, - lookbehind: true - }, - 'keyword': /\b(?:as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|nonlocal|pass|print|raise|return|try|while|with|yield)\b/, - 'builtin':/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/, - 'boolean': /\b(?:True|False|None)\b/, - 'number': /(?:\b(?=\d)|\B(?=\.))(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*\.?\d*|\.\d+)(?:e[+-]?\d+)?j?\b/i, - 'operator': /[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]|\b(?:or|and|not)\b/, - 'punctuation': /[{}[\];(),.:]/ -}; - -Prism.languages.yaml = { - 'scalar': { - pattern: /([\-:]\s*(?:![^\s]+)?[ \t]*[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)[^\r\n]+(?:\2[^\r\n]+)*)/, - lookbehind: true, - alias: 'string' - }, - 'comment': /#.*/, - 'key': { - pattern: /(\s*(?:^|[:\-,[{\r\n?])[ \t]*(?:![^\s]+)?[ \t]*)[^\r\n{[\]},#\s]+?(?=\s*:\s)/, - lookbehind: true, - alias: 'atrule' - }, - 'directive': { - pattern: /(^[ \t]*)%.+/m, - lookbehind: true, - alias: 'important' - }, - 'datetime': { - pattern: /([:\-,[{]\s*(?:![^\s]+)?[ \t]*)(?:\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?)?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?)(?=[ \t]*(?:$|,|]|}))/m, - lookbehind: true, - alias: 'number' - }, - 'boolean': { - pattern: /([:\-,[{]\s*(?:![^\s]+)?[ \t]*)(?:true|false)[ \t]*(?=$|,|]|})/im, - lookbehind: true, - alias: 'important' - }, - 'null': { - pattern: /([:\-,[{]\s*(?:![^\s]+)?[ \t]*)(?:null|~)[ \t]*(?=$|,|]|})/im, - lookbehind: true, - alias: 'important' - }, - 'string': { - pattern: /([:\-,[{]\s*(?:![^\s]+)?[ \t]*)("|')(?:(?!\2)[^\\\r\n]|\\.)*\2(?=[ \t]*(?:$|,|]|}))/m, - lookbehind: true, - greedy: true - }, - 'number': { - pattern: /([:\-,[{]\s*(?:![^\s]+)?[ \t]*)[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+\.?\d*|\.?\d+)(?:e[+-]?\d+)?|\.inf|\.nan)[ \t]*(?=$|,|]|})/im, - lookbehind: true - }, - 'tag': /![^\s]+/, - 'important': /[&*][\w]+/, - 'punctuation': /---|[:[\]{}\-,|>?]|\.\.\./ -}; -
D
deploy/nasg/templates/style-alt.css
@@ -1,64 +0,0 @@
-body { - color: #000; - background-color: #eee; -} - -a { - color: #3173b4; -} - -a:hover { - color: #014384; - border-bottom: 1px solid #014384; -} - -code, -pre { - color: #006400; -} - -button svg { - transform: rotate(180deg); - transition: all 0.2s; -} - -blockquote { - color: #555; -} - -td, th { - border: 1px solid #111; -} - -th, tr:nth-child(even) { - background-color: rgba(0, 0, 0, .1); -} - -pre > code::before { - color: #444; -} - -.footnotes hr::before { - color: #222; -} - -body > header, -body > footer{ - background-color: #333; - color: #ccc; -} - -body > header a, -body > footer a, -.theme input + label { - color: #71B3F4; -} - -input { - background-color: #222; -} - -body > footer a:hover { - color: #fff; - border-bottom: 1px solid #fff; -}
D
deploy/nasg/templates/style-gallery.css
@@ -1,34 +0,0 @@
-main.photo { - display: flex; - flex-wrap: wrap; -} - -main.photo article { - max-width: 24em; - margin: 0.6em; - display: grid; - position: relative; -} - -main.photo article figure { - margin: 0; - padding: 0; -} - -main.photo article h2 { - margin: 0; - padding: 0.6em; - background: rgba(0,0,0,0.7); - position: absolute; - top: 50%; - left: 0; - right: 0; - text-align: center; - -} - -main.photo article figcaption, -main.photo article p, -main.photo article section { - display: none; -}
D
deploy/nasg/templates/style-print.css
@@ -1,90 +0,0 @@
- -* { - background-color: #fff !important; - color: #222; -} - -html, body { - font-size: 10pt !important; - font-family: Helvetica, sans-serif !important; -} - -@page { - margin: 0.6in 0.5in; -} - -.limit, -body > section { - max-width: 100% !important; - margin: 0 !important; -} - -h1, h2, h3, h4, h5, h6 { - page-break-after: avoid; -} - -h3, -a, -.footnotes a, -.h-feed .h-entry, -code, -pre { - border: none; -} - -p, li, blockquote, figure, .footnotes { - page-break-inside: avoid !important; -} - -a { - color: #000; -} - -td, th { - border: 1pt solid #666; -} - -.footnotes a { - display: block; - overflow: visible; - white-space: normal; - overflow:visible !important; - text-overflow:initial !important; -} - -.footnote-back { - display: none; -} - -body > header, -body > footer, -video, -audio, -.footnote-backref, -.footnote-back, -.encourage, -.noprint { - display:none !important; -} - -code, pre { - max-width: 96%; - page-break-inside: auto; - font-family: "Courier", "Courier New", monospace !important; -} - -pre { - border: 1pt dotted #666; - padding: 0.6em; -} - -.adaptimg { - max-height: 35vh; - max-width: 90vw; - outline: none; - border: 1px solid #000; -} - -.h-feed .h-entry { - page-break-after: always; -}
D
deploy/nasg/templates/style.css
@@ -1,358 +0,0 @@
-* { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - font-family: "Courier", monospace; - margin: 0; - padding: 0; - line-height: 1.5em; -} - -body { - color: #eee; - background-color: #222; -} - -body > header, -body > footer { - background-color: #111; - text-align: center; - padding: 0.6em 0; -} - -body > main, -body > nav, -body > header > section, -body > footer > section { - max-width: 88ch; - margin: 0 auto; - padding: 0 1em; -} - -hr { - border: none; -} - -dt { - font-weight: bold; -} - -h1, h2, h3, h4, h5, h6, hr, -dt { - margin: 2em 0 0.6em 0; -} - -main p { - margin: 1em 0; -} - -h1 { - border-bottom: 4px double #999; - text-transform:uppercase; - text-align: center; - padding-bottom: 1em; -} - -article > footer > dl > dt, -h2 { - border-bottom: 1px solid #999; -} - -article > footer > dl > dt, -h3, -hr { - border-bottom: 1px dotted #999; -} - -h4 { - border-bottom: 1px dashed #999; -} - -svg { - transform: rotate(0deg); - fill: currentColor; - vertical-align:middle; -} - -body > svg { - display: none; -} - -a { - color: #f90; - text-decoration: none; - border-bottom: 1px solid transparent; -} - -a:hover { - color: #eee; - border-bottom: 1px solid #eee; -} - -sup { - vertical-align: unset; -} - -sup:before { - content: '['; -} - -sup:after { - content: ']'; -} - -input, button, label { - -webkit-appearance:none; -} - -nav > ul { - list-style-type: none; -} - -nav > ul > li { - display: inline-block; -} - -body > header form { - display: inline-block; - padding-left: 0.6em; - margin-top: 1em; -} - -body > header a { - font-weight: bold; - border-bottom: 3px solid transparent; - padding-bottom: 0.1em; -} - -body > header a:hover, -body > header a.active { - border-bottom: 3px solid #eee; - color: #eee; -} - -body > header a svg { - display: block; - margin: 0.1em auto; -} - -blockquote { - border-left: 3px solid #999; - margin: 2em 0 2em 1em; - padding: 0 0 0 1em; - color: #aaa; -} - -input { - width: 8em; - padding: 0 0.3em; - border: none; - background-color: #333; - color: #ccc; -} - -.hidden, .theme, -.theme input, input[type=submit] { - display: none; -} - -.theme input + label { - color: #f90; - cursor: pointer; - border-bottom: 3px solid transparent; - padding-bottom: 0.1em; -} - -.theme input:hover + label, -.theme input:checked + label { - border-bottom: 3px solid #eee; - color: #eee; -} - -body > footer { - margin-top: 2em; -} - -body > footer > section > * { - margin-bottom: 0.6em; -} - -body > footer .email span { - display: none; -} - -video, -figure img { - display: block; - max-height: 98vh; - max-width: 100%; - width:auto; - height:auto; - margin: 0 auto; - border: 1px solid #000; -} - -figure { - margin: 2em 0; -} - -figcaption { - margin-top: 1em; -} - -figcaption > dl { - margin-top: 1em; - color: #666; -} - -figcaption > dl * { - display: inline-block; -} - -figcaption > dl dt { - display: none; -} - -figcaption > dl dd { - margin: 0 0.3em; -} - -.vcard img { - height: 1em; -} - -code, pre { - color: #3c3; - border: 1px solid #666; - direction: ltr; - word-break: break-all; - word-wrap: break-word; - white-space: pre-wrap; - overflow:initial; -} - -pre { - padding: 0.6em; - position: relative; - margin: 1em 0; -} - -code { - padding: 0.05em 0.2em; -} - -pre > code { - border: none; -} - -pre > code::before { - content: attr(lang); - float: right; - color: #999; - border-left: 1px solid #666; - border-bottom: 1px solid #666; - padding: 0 0.3em; - margin: -0.6em -0.6em 0 0; -} - -table { - border-collapse: collapse; - width: 100%; -} - -td, th { - padding: 0.3em; - border: 1px solid #777; - text-align:left; -} - -th { - font-weight: bold; -} - -th, tr:nth-child(even) { - background-color: rgba(255, 255, 255, .1); -} - -main > header > p { - text-align: center; -} - -article > header { - border-bottom: 4px double #999; - margin-bottom: 2em; -} - -.h-feed article > header { - border: none; - margin: 0; -} - -main ul { - margin-left: 2em; -} - -main ol { - margin-left: 3em; -} - -li p { - margin: 0; -} - -.footnotes hr:before { - content: 'Links'; - color: #ccc; - font-weight: bold; -} - -.comments .u-url, -.footnotes a { - display: inline-block; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - vertical-align: top; - max-width: 96%; -} - -.footnote-back { - margin: 0 0 0 0.6em; -} - -main > section > article { - padding-left: 1em; -} - -body > nav { - text-align: center; - margin-top: 2em; -} - -body > nav > ul > li { - margin: 0 0.6em; -} - -@media all and (min-width: 58em) { - body > header > section { - text-align: left; - display: flex; - justify-content:space-between; - } - - body > header a svg { - display: inline-block; - } - - body > header form { - margin-top: 0; - } -} - -body > img { - position: fixed; - bottom: 0; - right: 0; - width: 10em; - height: auto; -}
D
deploy/nasg/templates/symbols.svg
@@ -1,222 +0,0 @@
-<svg aria-hidden="true" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <symbol id="icon-github" viewBox="0 0 16 16"> - <path d="M8 0.198c-4.42 0-8 3.582-8 8 0 3.535 2.292 6.533 5.47 7.59 0.4 0.075 0.547-0.172 0.547-0.385 0-0.19-0.007-0.693-0.010-1.36-2.225 0.483-2.695-1.073-2.695-1.073-0.364-0.923-0.89-1.17-0.89-1.17-0.725-0.496 0.056-0.486 0.056-0.486 0.803 0.056 1.225 0.824 1.225 0.824 0.713 1.223 1.873 0.87 2.33 0.665 0.072-0.517 0.278-0.87 0.507-1.070-1.777-0.2-3.644-0.888-3.644-3.953 0-0.873 0.31-1.587 0.823-2.147-0.090-0.202-0.36-1.015 0.070-2.117 0 0 0.67-0.215 2.2 0.82 0.64-0.178 1.32-0.266 2-0.27 0.68 0.004 1.36 0.092 2 0.27 1.52-1.035 2.19-0.82 2.19-0.82 0.43 1.102 0.16 1.915 0.080 2.117 0.51 0.56 0.82 1.273 0.82 2.147 0 3.073-1.87 3.75-3.65 3.947 0.28 0.24 0.54 0.731 0.54 1.48 0 1.071-0.010 1.931-0.010 2.191 0 0.21 0.14 0.46 0.55 0.38 3.201-1.049 5.491-4.049 5.491-7.579 0-4.418-3.582-8-8-8z"></path> - </symbol> - <symbol id="icon-paypal" viewBox="0 0 16 16"> - <path d="M4.605 16h-2.069c-0.443 0-0.724-0.353-0.624-0.787l0.099-0.449h1.381c0.444 0 0.891-0.355 0.988-0.788l0.709-3.061c0.1-0.432 0.544-0.787 0.987-0.787h0.589c2.526 0 4.489-0.519 5.893-1.56s2.107-2.4 2.107-4.090c0-0.75-0.13-1.37-0.392-1.859 0-0.011-0.011-0.021-0.011-0.031l0.090 0.050c0.5 0.31 0.88 0.709 1.141 1.209 0.269 0.5 0.399 1.12 0.399 1.861 0 1.69-0.699 3.049-2.109 4.090-1.4 1.030-3.37 1.549-5.889 1.549h-0.6c-0.44 0-0.889 0.35-0.989 0.791l-0.71 3.070c-0.099 0.43-0.54 0.78-0.98 0.78l-0.008 0.012zM2.821 14.203h-2.070c-0.442 0-0.723-0.353-0.624-0.787l2.915-12.629c0.101-0.435 0.543-0.788 0.987-0.788h4.31c0.93 0 1.739 0.065 2.432 0.193 0.69 0.126 1.28 0.346 1.789 0.66 0.491 0.31 0.881 0.715 1.131 1.212 0.259 0.499 0.389 1.12 0.389 1.865 0 1.69-0.701 3.049-2.109 4.079-1.4 1.041-3.371 1.551-5.891 1.551h-0.589c-0.44 0-0.885 0.349-0.985 0.779l-0.707 3.059c-0.099 0.431-0.545 0.781-0.99 0.781l0.011 0.024zM7.785 2.624h-0.676c-0.444 0-0.888 0.353-0.987 0.785l-0.62 2.68c-0.1 0.432 0.18 0.786 0.62 0.786h0.511c1.109 0 1.98-0.229 2.6-0.681 0.619-0.457 0.93-1.103 0.93-1.941 0-0.553-0.201-0.963-0.6-1.227-0.4-0.269-1-0.403-1.791-0.403l0.013 0.001z"></path> - </symbol> - <symbol id="icon-monzo" viewBox="0 0 16 16"> - <path d="M14.5 2h-13c-0.825 0-1.5 0.675-1.5 1.5v9c0 0.825 0.675 1.5 1.5 1.5h13c0.825 0 1.5-0.675 1.5-1.5v-9c0-0.825-0.675-1.5-1.5-1.5zM1.5 3h13c0.271 0 0.5 0.229 0.5 0.5v1.5h-14v-1.5c0-0.271 0.229-0.5 0.5-0.5zM14.5 13h-13c-0.271 0-0.5-0.229-0.5-0.5v-4.5h14v4.5c0 0.271-0.229 0.5-0.5 0.5zM2 10h1v2h-1zM4 10h1v2h-1zM6 10h1v2h-1z"></path> - </symbol> - <symbol id="icon-lens" viewBox="0 0 16 16"> - <path d="M8 4c-2.209 0-4 1.791-4 4s1.791 4 4 4 4-1.791 4-4-1.791-4-4-4zM8 11c-1.657 0-3-1.344-3-3s1.343-3 3-3 3 1.343 3 3-1.344 3-3 3zM8 0c-4.418 0-8 3.582-8 8s3.582 8 8 8 8-3.582 8-8-3.582-8-8-8zM8 14c-3.313 0-6-2.687-6-6s2.687-6 6-6 6 2.687 6 6-2.687 6-6 6zM8 6.5c-0.829 0-1.5 0.671-1.5 1.5s0.671 1.5 1.5 1.5 1.5-0.671 1.5-1.5-0.671-1.5-1.5-1.5z"></path> - </symbol> - <symbol id="icon-focallength" viewBox="0 0 16 16"> - <path d="M6 9h-3v2l-3-3 3-3v2h3zM10 7h3v-2l3 3-3 3v-2h-3z"></path> - </symbol> - <symbol id="icon-aperture" viewBox="0 0 16 16"> - <path d="M10.586 6.99l2.845-4.832c-1.428-1.329-3.326-2.158-5.431-2.158-0.499 0-0.982 0.059-1.456 0.146l4.042 6.843zM9.976 10h5.74c0.166-0.643 0.284-1.305 0.284-2 0-1.937-0.715-3.688-1.861-5.072l-4.162 7.072zM8.25 5l-2.704-4.576c-2.25 0.73-4.069 2.399-4.952 4.576h7.656zM7.816 11l2.696 4.559c2.224-0.742 4.020-2.4 4.895-4.559h-7.59zM6.053 6h-5.769c-0.167 0.643-0.283 1.304-0.283 2 0 1.945 0.722 3.705 1.878 5.094l4.175-7.094zM5.459 8.98l-2.872 4.879c1.426 1.316 3.317 2.14 5.413 2.14 0.521 0 1.027-0.059 1.52-0.152l-4.061-6.867z"></path> - </symbol> - <symbol id="icon-mail" viewBox="0 0 16 16"> - <path d="M16 6.339v7.089c0 0.786-0.643 1.429-1.429 1.429h-13.143c-0.786 0-1.429-0.643-1.429-1.429v-7.089c0.268 0.295 0.571 0.554 0.902 0.777 1.482 1.009 2.982 2.018 4.438 3.080 0.75 0.554 1.679 1.232 2.652 1.232h0.018c0.973 0 1.902-0.679 2.652-1.232 1.455-1.054 2.955-2.071 4.446-3.080 0.321-0.223 0.625-0.482 0.893-0.777zM16 3.714c0 1-0.741 1.902-1.527 2.446-1.393 0.964-2.795 1.929-4.179 2.902-0.58 0.402-1.563 1.223-2.286 1.223h-0.018c-0.723 0-1.705-0.821-2.286-1.223-1.384-0.973-2.786-1.938-4.17-2.902-0.634-0.429-1.536-1.438-1.536-2.25 0-0.875 0.473-1.625 1.429-1.625h13.143c0.777 0 1.429 0.643 1.429 1.429z"></path> - </symbol> - <symbol id="icon-reply" viewBox="0 0 16 16"> - <path d="M7 12.119v3.881l-6-6 6-6v3.966c6.98 0.164 6.681-4.747 4.904-7.966 4.386 4.741 3.455 12.337-4.904 12.119z"></path> - </symbol> - <symbol id="icon-link" viewBox="0 0 16 16"> - <path d="M6.879 9.934c-0.208 0-0.416-0.079-0.575-0.238-1.486-1.486-1.486-3.905 0-5.392l3-3c0.72-0.72 1.678-1.117 2.696-1.117s1.976 0.397 2.696 1.117c1.486 1.487 1.486 3.905 0 5.392l-1.371 1.371c-0.317 0.317-0.832 0.317-1.149 0s-0.317-0.832 0-1.149l1.371-1.371c0.853-0.853 0.853-2.241 0-3.094-0.413-0.413-0.963-0.641-1.547-0.641s-1.134 0.228-1.547 0.641l-3 3c-0.853 0.853-0.853 2.241 0 3.094 0.317 0.317 0.317 0.832 0 1.149-0.159 0.159-0.367 0.238-0.575 0.238z"></path> - <path d="M4 15.813c-1.018 0-1.976-0.397-2.696-1.117-1.486-1.486-1.486-3.905 0-5.392l1.371-1.371c0.317-0.317 0.832-0.317 1.149 0s0.317 0.832 0 1.149l-1.371 1.371c-0.853 0.853-0.853 2.241 0 3.094 0.413 0.413 0.962 0.641 1.547 0.641s1.134-0.228 1.547-0.641l3-3c0.853-0.853 0.853-2.241 0-3.094-0.317-0.317-0.317-0.832 0-1.149s0.832-0.317 1.149 0c1.486 1.486 1.486 3.905 0 5.392l-3 3c-0.72 0.72-1.678 1.117-2.696 1.117z"></path> - </symbol> - <symbol id="icon-FollowAction" viewBox="0 0 16 16"> - <path d="M14.5 0h-13c-0.825 0-1.5 0.675-1.5 1.5v13c0 0.825 0.675 1.5 1.5 1.5h13c0.825 0 1.5-0.675 1.5-1.5v-13c0-0.825-0.675-1.5-1.5-1.5zM4.359 12.988c-0.75 0-1.359-0.603-1.359-1.353 0-0.744 0.609-1.356 1.359-1.356 0.753 0 1.359 0.613 1.359 1.356 0 0.75-0.609 1.353-1.359 1.353zM7.772 13c0-1.278-0.497-2.481-1.397-3.381-0.903-0.903-2.1-1.4-3.375-1.4v-1.956c3.713 0 6.738 3.022 6.738 6.737h-1.966zM11.244 13c0-4.547-3.697-8.25-8.241-8.25v-1.956c5.625 0 10.203 4.581 10.203 10.206h-1.963z"></path> - </symbol> - <symbol id="icon-home" viewBox="0 0 16 16"> - <path d="M16 9.226l-8-6.21-8 6.21v-2.532l8-6.21 8 6.21zM14 9v6h-4v-4h-4v4h-4v-6l6-4.5z"></path> - </symbol> - <symbol id="icon-note" viewBox="0 0 16 16"> - <path d="M14.341 3.579c-0.347-0.473-0.831-1.027-1.362-1.558s-1.085-1.015-1.558-1.362c-0.806-0.591-1.197-0.659-1.421-0.659h-7.75c-0.689 0-1.25 0.561-1.25 1.25v13.5c0 0.689 0.561 1.25 1.25 1.25h11.5c0.689 0 1.25-0.561 1.25-1.25v-9.75c0-0.224-0.068-0.615-0.659-1.421zM12.271 2.729c0.48 0.48 0.856 0.912 1.134 1.271h-2.406v-2.405c0.359 0.278 0.792 0.654 1.271 1.134zM14 14.75c0 0.136-0.114 0.25-0.25 0.25h-11.5c-0.135 0-0.25-0.114-0.25-0.25v-13.5c0-0.135 0.115-0.25 0.25-0.25 0 0 7.749-0 7.75 0v3.5c0 0.276 0.224 0.5 0.5 0.5h3.5v9.75z"></path> - <path d="M11.5 13h-7c-0.276 0-0.5-0.224-0.5-0.5s0.224-0.5 0.5-0.5h7c0.276 0 0.5 0.224 0.5 0.5s-0.224 0.5-0.5 0.5z"></path> - <path d="M11.5 11h-7c-0.276 0-0.5-0.224-0.5-0.5s0.224-0.5 0.5-0.5h7c0.276 0 0.5 0.224 0.5 0.5s-0.224 0.5-0.5 0.5z"></path> - <path d="M11.5 9h-7c-0.276 0-0.5-0.224-0.5-0.5s0.224-0.5 0.5-0.5h7c0.276 0 0.5 0.224 0.5 0.5s-0.224 0.5-0.5 0.5z"></path> - </symbol> - <symbol id="icon-article" viewBox="0 0 16 16"> - <path d="M0 1v14h16v-14h-16zM15 14h-14v-12h14v12zM14 3h-12v10h12v-10zM7 8h-1v1h-1v1h-1v-1h1v-1h1v-1h-1v-1h-1v-1h1v1h1v1h1v1zM11 10h-3v-1h3v1z"></path> - </symbol> - <symbol id="icon-journal" viewBox="0 0 16 16"> - <path d="M13.5 0h-12c-0.825 0-1.5 0.675-1.5 1.5v13c0 0.825 0.675 1.5 1.5 1.5h12c0.825 0 1.5-0.675 1.5-1.5v-13c0-0.825-0.675-1.5-1.5-1.5zM13 14h-11v-12h11v12zM4 7h7v1h-7zM4 9h7v1h-7zM4 11h7v1h-7zM4 5h7v1h-7z"></path> - </symbol> - <symbol id="icon-photo" viewBox="0 0 18 16"> - <path d="M17 2h-1v-1c0-0.55-0.45-1-1-1h-14c-0.55 0-1 0.45-1 1v12c0 0.55 0.45 1 1 1h1v1c0 0.55 0.45 1 1 1h14c0.55 0 1-0.45 1-1v-12c0-0.55-0.45-1-1-1zM2 3v10h-0.998c-0.001-0.001-0.001-0.001-0.002-0.002v-11.996c0.001-0.001 0.001-0.001 0.002-0.002h13.996c0.001 0.001 0.001 0.001 0.002 0.002v0.998h-12c-0.55 0-1 0.45-1 1v0zM17 14.998c-0.001 0.001-0.001 0.001-0.002 0.002h-13.996c-0.001-0.001-0.001-0.001-0.002-0.002v-11.996c0.001-0.001 0.001-0.001 0.002-0.002h13.996c0.001 0.001 0.001 0.001 0.002 0.002v11.996z"></path> - <path d="M15 5.5c0 0.828-0.672 1.5-1.5 1.5s-1.5-0.672-1.5-1.5 0.672-1.5 1.5-1.5 1.5 0.672 1.5 1.5z"></path> - <path d="M16 14h-12v-2l3.5-6 4 5h1l3.5-3z"></path> - </symbol> - <symbol id="icon-contrast" viewBox="0 0 16 16"> - <path d="M8 0c-4.418 0-8 3.582-8 8s3.582 8 8 8 8-3.582 8-8-3.582-8-8-8zM2 8c0-3.314 2.686-6 6-6v12c-3.314 0-6-2.686-6-6z"></path> - </symbol> - <symbol id="icon-sensitivity" viewBox="0 0 16 16"> - <path d="M8 4c-2.209 0-4 1.791-4 4s1.791 4 4 4 4-1.791 4-4-1.791-4-4-4zM8 10.5v-5c1.379 0 2.5 1.122 2.5 2.5s-1.121 2.5-2.5 2.5zM8 13c0.552 0 1 0.448 1 1v1c0 0.552-0.448 1-1 1s-1-0.448-1-1v-1c0-0.552 0.448-1 1-1zM8 3c-0.552 0-1-0.448-1-1v-1c0-0.552 0.448-1 1-1s1 0.448 1 1v1c0 0.552-0.448 1-1 1zM15 7c0.552 0 1 0.448 1 1s-0.448 1-1 1h-1c-0.552 0-1-0.448-1-1s0.448-1 1-1h1zM3 8c0 0.552-0.448 1-1 1h-1c-0.552 0-1-0.448-1-1s0.448-1 1-1h1c0.552 0 1 0.448 1 1zM12.95 11.536l0.707 0.707c0.39 0.39 0.39 1.024 0 1.414s-1.024 0.39-1.414 0l-0.707-0.707c-0.39-0.39-0.39-1.024 0-1.414s1.024-0.39 1.414 0zM3.050 4.464l-0.707-0.707c-0.391-0.391-0.391-1.024 0-1.414s1.024-0.391 1.414 0l0.707 0.707c0.391 0.391 0.391 1.024 0 1.414s-1.024 0.391-1.414 0zM12.95 4.464c-0.39 0.391-1.024 0.391-1.414 0s-0.39-1.024 0-1.414l0.707-0.707c0.39-0.391 1.024-0.391 1.414 0s0.39 1.024 0 1.414l-0.707 0.707zM3.050 11.536c0.39-0.39 1.024-0.39 1.414 0s0.391 1.024 0 1.414l-0.707 0.707c-0.391 0.39-1.024 0.39-1.414 0s-0.391-1.024 0-1.414l0.707-0.707z"></path> - </symbol> - <symbol id="icon-clock" viewBox="0 0 16 16"> - <path d="M10.293 11.707l-3.293-3.293v-4.414h2v3.586l2.707 2.707zM8 0c-4.418 0-8 3.582-8 8s3.582 8 8 8 8-3.582 8-8-3.582-8-8-8zM8 14c-3.314 0-6-2.686-6-6s2.686-6 6-6c3.314 0 6 2.686 6 6s-2.686 6-6 6z"></path> - </symbol> - <symbol id="icon-camera" viewBox="0 0 16 16"> - <path d="M4.75 9.5c0 1.795 1.455 3.25 3.25 3.25s3.25-1.455 3.25-3.25-1.455-3.25-3.25-3.25-3.25 1.455-3.25 3.25zM15 4h-3.5c-0.25-1-0.5-2-1.5-2h-4c-1 0-1.25 1-1.5 2h-3.5c-0.55 0-1 0.45-1 1v9c0 0.55 0.45 1 1 1h14c0.55 0 1-0.45 1-1v-9c0-0.55-0.45-1-1-1zM8 13.938c-2.451 0-4.438-1.987-4.438-4.438s1.987-4.438 4.438-4.438c2.451 0 4.438 1.987 4.438 4.438s-1.987 4.438-4.438 4.438zM15 7h-2v-1h2v1z"></path> - </symbol> - <symbol id="icon-following" viewBox="0 0 16 16"> - <path d="M5.295 8c-0.929 0.027-1.768 0.429-2.366 1.143h-1.196c-0.893 0-1.732-0.429-1.732-1.42 0-0.723-0.027-3.152 1.107-3.152 0.188 0 1.116 0.759 2.321 0.759 0.411 0 0.804-0.071 1.187-0.205-0.027 0.196-0.045 0.393-0.045 0.589 0 0.813 0.259 1.616 0.723 2.286zM14.857 13.688c0 1.446-0.955 2.313-2.384 2.313h-7.804c-1.429 0-2.384-0.866-2.384-2.313 0-2.018 0.473-5.116 3.089-5.116 0.304 0 1.411 1.241 3.196 1.241s2.893-1.241 3.196-1.241c2.616 0 3.089 3.098 3.089 5.116zM5.714 2.286c0 1.259-1.027 2.286-2.286 2.286s-2.286-1.027-2.286-2.286 1.027-2.286 2.286-2.286 2.286 1.027 2.286 2.286zM12 5.714c0 1.893-1.536 3.429-3.429 3.429s-3.429-1.536-3.429-3.429 1.536-3.429 3.429-3.429 3.429 1.536 3.429 3.429zM17.143 7.723c0 0.991-0.839 1.42-1.732 1.42h-1.196c-0.598-0.714-1.438-1.116-2.366-1.143 0.464-0.67 0.723-1.473 0.723-2.286 0-0.196-0.018-0.393-0.045-0.589 0.384 0.134 0.777 0.205 1.188 0.205 1.205 0 2.134-0.759 2.321-0.759 1.134 0 1.107 2.429 1.107 3.152zM16 2.286c0 1.259-1.027 2.286-2.286 2.286s-2.286-1.027-2.286-2.286 1.027-2.286 2.286-2.286 2.286 1.027 2.286 2.286z"></path> - </symbol> - <symbol id="icon-search" viewBox="0 0 16 16"> - <path d="M15.504 13.616l-3.79-3.223c-0.392-0.353-0.811-0.514-1.149-0.499 0.895-1.048 1.435-2.407 1.435-3.893 0-3.314-2.686-6-6-6s-6 2.686-6 6 2.686 6 6 6c1.486 0 2.845-0.54 3.893-1.435-0.016 0.338 0.146 0.757 0.499 1.149l3.223 3.79c0.552 0.613 1.453 0.665 2.003 0.115s0.498-1.452-0.115-2.003zM6 10c-2.209 0-4-1.791-4-4s1.791-4 4-4 4 1.791 4 4-1.791 4-4 4z"></path> - </symbol> - <symbol id="icon-resume" viewBox="0 0 16 16"> - <path d="M13.5 0h-12c-0.825 0-1.5 0.675-1.5 1.5v13c0 0.825 0.675 1.5 1.5 1.5h12c0.825 0 1.5-0.675 1.5-1.5v-13c0-0.825-0.675-1.5-1.5-1.5zM13 14h-11v-12h11v12zM4 9h7v1h-7zM4 11h7v1h-7zM5 4.5c0-0.828 0.672-1.5 1.5-1.5s1.5 0.672 1.5 1.5c0 0.828-0.672 1.5-1.5 1.5s-1.5-0.672-1.5-1.5zM7.5 6h-2c-0.825 0-1.5 0.45-1.5 1v1h5v-1c0-0.55-0.675-1-1.5-1z"></path> - </symbol> - <symbol id="icon-bookmark" viewBox="0 0 16 16"> - <path d="M4 2v14l5-5 5 5v-14zM12 0h-10v14l1-1v-12h9z"></path> - </symbol> - <symbol id="icon-star" viewBox="0 0 16 16"> - <path d="M16 6.204l-5.528-0.803-2.472-5.009-2.472 5.009-5.528 0.803 4 3.899-0.944 5.505 4.944-2.599 4.944 2.599-0.944-5.505 4-3.899z"></path> - </symbol> - <symbol id="button-indieweb" viewBox="0 0 80 15"> - <rect width="80" height="15" fill="#666"/> - <rect x="1" y="1" width="78" height="13" fill="#fff"/> - <path d="m3 4v2h7v-2h-7zm0 3v4h7v-4h-7z" fill="#fc0d1b"/> - <path d="m11 4v2h1v-2h-1zm1 2v3h1v-3h-1zm1 0h1v3h1v2h2v-2h1v-3h1v-2h-6v2zm1 3h-1v2h1v-2z" fill="#fc5d20"/> - <polygon points="21 4 25 4 25 5 26 5 26 7 22 7 22 8 26 8 26 10 25 10 25 11 21 11 21 10 20 10 20 8 19 8 19 7 20 7 20 5 21 5" fill="#fdb02a"/> - <rect x="29" y="2" width="49" height="1" fill="#fda829"/> - <rect x="29" y="3" width="49" height="1" fill="#fd9c27"/> - <rect x="29" y="4" width="49" height="1" fill="#fd9025"/> - <rect x="29" y="5" width="49" height="1" fill="#fd8124"/> - <rect x="29" y="6" width="49" height="1" fill="#fd7222"/> - <rect x="29" y="7" width="49" height="1" fill="#fd6420"/> - <rect x="29" y="8" width="49" height="1" fill="#fc561f"/> - <rect x="29" y="9" width="49" height="1" fill="#fc481e"/> - <rect x="29" y="10" width="49" height="1" fill="#fc371d"/> - <rect x="29" y="11" width="49" height="1" fill="#fc291c"/> - <rect x="29" y="12" width="49" height="1" fill="#fc1c1c"/> - <g fill="#fff"> - <path d="m34 5h1v5h-1z"/> - <path d="m37 5h1v1h1v1h1v1h1v-3h1v5h-1v-1h-1v-1h-1v-1h-1v3h-1z"/> - <path d="m44 5v5h3v-1h-2v-3h2v-1h-3zm3 1v3h1v-3h-1z"/> - <path d="m50 5h1v5h-1z"/> - <path d="m53 5h3v1h-2v1h2v1h-2v1h2v1h-3z"/> - <path d="m58 5h1v4h1v-3h1v3h1v-4h1v4h-1v1h-1v-1h-1v1h-1v-1h-1z"/> - <path d="m65 5h3v1h-2v1h2v1h-2v1h2v1h-3z"/> - <path d="m70 5v5h3v-1h-2v-1h2v-1h-2v-1h2v-1h-3zm3 1v1h1v-1h-1zm0 2v1h1v-1h-1z"/> - </g> - </symbol> - <symbol id="button-webmention" viewBox="0 0 80 15"> - <rect width="80" height="15" fill="#666"/> - <rect x="1" y="1" width="78" height="13" fill="#fff" style="paint-order:markers fill stroke"/> - <path d="m13 1v1h-1v1h-1v1h1 1v1h-1v2h-1v2h-1v-3h-1v-2h-1v2h-1v3h-1v-2h-1v-3h-1v-2h-1-1v2h1v3h1v3h1v3h1 1v-3h1v-2h1v2h1v3h1 1v-3h1v-3h1v-3h1 1v-1h-1v-1h-1v-1h-1z" fill="#610371"/> - <rect x="19" y="2" width="59" height="11" fill="#850e9a"/> - <g fill="#fff"> - <path d="m33 5v5h3v-1h-2v-1h2v-1h-2v-1h2v-1h-3zm3 1v1h1v-1h-1zm0 2v1h1v-1h-1z"/> - <path d="m28 5h3v1h-2v1h2v1h-2v1h2v1h-3z"/> - <path d="m21 5h1v4h1v-3h1v3h1v-4h1v4h-1v1h-1v-1h-1v1h-1v-1h-1z"/> - <path d="m39 5h1v1h1v1h1v-1h1v-1h1v5h-1v-3h-1v1h-1v-1h-1v3h-1z"/> - <path d="m51 5h1v1h1v1h1v1h1v-3h1v5h-1v-1h-1v-1h-1v-1h-1v3h-1z"/> - <path d="m58 5h3v1h-1v4h-1v-4h-1"/> - <path d="m63 5h1v5h-1z"/> - <path d="m67 5v1h2v-1zm2 1v3h1v-3zm0 3h-2v1h2zm-2 0v-3h-1v3z"/> - <path d="m71 5h1v1h1v1h1v1h1v-3h1v5h-1v-1h-1v-1h-1v-1h-1v3h-1z"/> - <path d="m46 5h3v1h-2v1h2v1h-2v1h2v1h-3z"/> - </g> - </symbol> - <symbol id="button-microformats" viewBox="0 0 80 15"> - <rect width="80" height="15" fill="#666"/> - <rect x="1" y="1" width="78" height="13" fill="#fff"/> - <rect x="18" y="2" width="2" height="11" fill="#5d8f17"/> - <rect x="20" y="2" width="2" height="11" fill="#609218"/> - <rect x="22" y="2" width="2" height="11" fill="#639519"/> - <rect x="24" y="2" width="2" height="11" fill="#66981a"/> - <rect x="26" y="2" width="2" height="11" fill="#699b1b"/> - <rect x="28" y="2" width="2" height="11" fill="#6c9e1b"/> - <rect x="30" y="2" width="2" height="11" fill="#6fa11c"/> - <rect x="32" y="2" width="2" height="11" fill="#72a51d"/> - <rect x="34" y="2" width="2" height="11" fill="#76a81e"/> - <rect x="36" y="2" width="2" height="11" fill="#78aa1f"/> - <rect x="38" y="2" width="2" height="11" fill="#7cae20"/> - <rect x="40" y="2" width="2" height="11" fill="#7eb120"/> - <rect x="42" y="2" width="2" height="11" fill="#82b421"/> - <rect x="44" y="2" width="2" height="11" fill="#85b722"/> - <rect x="46" y="2" width="2" height="11" fill="#88ba23"/> - <rect x="48" y="2" width="2" height="11" fill="#8bbd24"/> - <rect x="50" y="2" width="2" height="11" fill="#8ec125"/> - <rect x="52" y="2" width="2" height="11" fill="#91c325"/> - <rect x="54" y="2" width="2" height="11" fill="#94c626"/> - <rect x="56" y="2" width="2" height="11" fill="#97ca27"/> - <rect x="58" y="2" width="2" height="11" fill="#9acd28"/> - <rect x="60" y="2" width="2" height="11" fill="#9dd029"/> - <rect x="62" y="2" width="2" height="11" fill="#a0d32a"/> - <rect x="64" y="2" width="2" height="11" fill="#a4d62b"/> - <rect x="66" y="2" width="2" height="11" fill="#a6d92b"/> - <rect x="68" y="2" width="2" height="11" fill="#a8db2c"/> - <rect x="70" y="2" width="2" height="11" fill="#acdf2d"/> - <rect x="72" y="2" width="2" height="11" fill="#b0e32e"/> - <rect x="74" y="2" width="2" height="11" fill="#b3e62f"/> - <rect x="76" y="2" width="2" height="11" fill="#b6e92f"/> - <polygon points="4 4 6 4 6 9 7 9 7 10 12 10 12 12 11 12 11 13 4 13 4 12 3 12 3 5 4 5" fill="#5c8d17"/> - <polygon points="7 3 9 3 9 6 10 6 10 7 13 7 13 9 8 9 8 8 7 8" fill="#8dc024"/> - <polygon points="10 2 13 2 13 3 14 3 14 6 11 6 11 5 10 5" fill="#a5d82b"/> - <g fill="#fff"> - <path d="m20 5h1v1h1v1h1v-1h1v-1h1v5h-1v-3h-1v1h-1v-1h-1v3h-1z"/> - <path d="m26 5h1v5h-1z"/> - <path d="m29 5h2v1h1v1h-1v-1h-2v3h2v-1h1v1h-1v1h-2v-1h-1v-3h1z"/> - <path d="m33 5v5h1v-2h1v1h1v-2h-2v-1h2v-1h-3zm3 1v1h1v-1h-1zm0 3v1h1v-1h-1z"/> - <path d="m39 5v1h2v-1h-2zm2 1v1 1 1h1v-1-1-1h-1zm0 3h-2v1h2v-1zm-2 0v-3h-1v3h1z"/> - <path d="m43 5h3v1h-2v1h2v1h-2v2h-1z"/> - <path d="m48 5v1h2v-1h-2zm2 1v1 1 1h1v-1-1-1h-1zm0 3h-2v1h2v-1zm-2 0v-3h-1v3h1z"/> - <path d="m52 5v5h1v-2h1v1h1v-2h-2v-1h2v-1h-3zm3 1v1h1v-1h-1zm0 3v1h1v-1h-1z"/> - <path d="m57 5h1v1h1v1h1v-1h1v-1h1v5h-1v-3h-1v1h-1v-1h-1v3h-1z"/> - <path d="m64 5v1h2v-1h-2zm2 1v1h-2v-1h-1v4h1v-2h2v2h1v-4h-1z"/> - <path d="m68 5h3v1h-1v4h-1v-4h-1"/> - <path d="m73 5h3v1h-3v1h2v1h1v1h-1v1h-3v-1h3v-1h-2v-1h-1v-1h1"/> - </g> - </symbol> - <symbol id="button-cc" viewBox="0 0 80 15"> - <rect y="0" width="80" height="15" fill="#000"/> - <rect x="1" y="1" width="78" height="13" fill="#fff"/> - <rect x="2" y="2" width="76" height="11" fill="#000"/> - <g fill="#fff"> - <path d="m42 5h1v1h1v1h1v-1h1v-1h1v5h-1v-3h-1v1h-1v-1h-1v3h-1z"/> - <path d="m31 5h2v1h1v1h-1v-1h-2v3h2v-1h1v1h-1v1h-2v-1h-1v-3h1z"/> - <path d="m37 5v1h2v-1zm2 1v3h1v-3zm0 3h-2v1h2zm-2 0v-3h-1v3z"/> - <path d="m57 5v1h2v-1zm2 1v3h1v-3zm0 3h-2v1h2zm-2 0v-3h-1v3z"/> - <path d="m49 5h1v1h1v1h1v-1h1v-1h1v5h-1v-3h-1v1h-1v-1h-1v3h-1z"/> - <path d="m70 5h3v1h-3v1h2v1h1v1h-1v1h-3v-1h3v-1h-2v-1h-1v-1h1"/> - <path d="m62 5h1v1h1v1h1v1h1v-3h1v5h-1v-1h-1v-1h-1v-1h-1v3h-1z"/> - </g> - <path d="m2 2v11h19.891a8.5136 8.5 0 0 0 2.1088-5.5898 8.5136 8.5 0 0 0-1.9563-5.4102h-13.119z" fill="#aaa"/> - <path d="m6.0195 2a8.5 8.5 0 0 0-2.0195 5.5 8.5 8.5 0 0 0 2.0312 5.5h12.949a8.5 8.5 0 0 0 2.0195-5.5 8.5 8.5 0 0 0-2.0312-5.5z" fill="#000"/> - <circle cx="12.5" cy="7.5" r="6.5" fill="#fff"/> - <path d="m9 5h2v1h1v1h-1v-1h-2v3h2v-1h1v1h-1v1h-2v-1h-1v-3h1z" fill="#000"/> - <path d="m14 5h2v1h1v1h-1v-1h-2v3h2v-1h1v1h-1v1h-2v-1h-1v-3h1z" fill="#000"/> - </symbol> - <symbol id="button-nojs" viewBox="0 0 80 15"> - <rect width="80" height="15" fill="#666"/> - <rect x="1" y="1" width="78" height="13" fill="#fff"/> - <rect x="16" y="2" width="62" height="11" fill="#666"/> - <g fill="#fff"> - <path d="m27 5v1h2v-1zm2 1v3h1v-3zm0 3h-2v1h2zm-2 0v-3h-1v3z"/> - <path d="m20 5h1v1h1v1h1v1h1v-3h1v5h-1v-1h-1v-1h-1v-1h-1v3h-1z"/> - <rect x="-1" y="259.03" width="78" height="13"/> - <path d="m70 5v5h3v-1h-2v-3h2v-1zm3 1v3h1v-3z"/> - <path d="m66 5h3v1h-2v1h2v1h-2v1h2v1h-3z"/> - <circle cx="7.5" cy="7.5" r="5.5" stroke="#666"/> - </g> - <g fill="#666"> - <rect transform="rotate(-45)" x="-6" y="10" width="11" height="1"/> - <path d="m9 5h3v1h-3v1h2v1h1v1h-1v1h-3v-1h3v-1h-2v-1h-1v-1h1"/> - <path d="m6 5v4h1v-4zm0 4h-2v1h2zm-2 0v-1h-1v1z"/> - </g> - <g fill="#fff"> - <path d="m40 5h3v1h-3v1h2v1h1v1h-1v1h-3v-1h3v-1h-2v-1h-1v-1h1"/> - <path d="m37 5v4h1v-4zm0 4h-2v1h2zm-2 0v-1h-1v1z"/> - <path d="m57 5h3v1h-2v1h2v1h-2v1h2v1h-3z"/> - <path d="m61 5v5h3v-1h-2v-3h2v-1zm3 1v3h1v-3z"/> - <path d="m53 5h3v1h-2v1h2v1h-2v1h2v1h-3z"/> - <path d="m47 5h1v1h1v1h1v1h1v-3h1v5h-1v-1h-1v-1h-1v-1h-1v3h-1z"/> - </g> - </symbol> -</svg>
D
deploy/nasg/templates/themeswitcher.js
@@ -1,73 +0,0 @@
-var DEFAULT_THEME = 'dark'; -var ALT_THEME = 'light'; -var STORAGE_KEY = 'theme'; -var colorscheme = document.getElementsByName('colorscheme'); - -function indicateTheme(mode) { - for(var i = colorscheme.length; i--; ) { - if(colorscheme[i].value == mode) { - colorscheme[i].checked = true; - } - } -} - -function applyTheme(mode) { - var st = document.getElementById('css_alt'); - if (mode == ALT_THEME) { - st.setAttribute('media', 'all'); - } - else { - st.setAttribute('media', 'speech'); - } -} - -function setTheme(e) { - var mode = e.target.value; - var mql = window.matchMedia('(prefers-color-scheme: ' + ALT_THEME + ')'); - /* user wants == mql match => remove storage */ - if ((mode == DEFAULT_THEME && !mql.matches) || (mode == ALT_THEME && mql.matches)) { - localStorage.removeItem(STORAGE_KEY); - } - else { - if(confirm("I\'ll need to store your choice in your browser, in a place called localStorage.\n\nAre you OK with this?")) { - localStorage.setItem(STORAGE_KEY, mode); - } - } - autoTheme(mql); -} - -function autoTheme(e) { - var mode = DEFAULT_THEME; - try { - var current = localStorage.getItem(STORAGE_KEY); - } catch(e) { - var current = DEFAULT_THEME; - } - if ( current != null) { - mode = current; - } - else if (e.matches) { - mode = ALT_THEME; - } - applyTheme(mode); - indicateTheme(mode); -} - -var mql = window.matchMedia('(prefers-color-scheme: ' + ALT_THEME + ')'); -autoTheme(mql); -mql.addListener(autoTheme); - -var test = 'ping'; -try { - localStorage.setItem(test, test); - localStorage.removeItem(test); - for(var i = colorscheme.length; i--; ) { - colorscheme[i].onclick = setTheme; - } - var themeforms = document.getElementsByClassName(STORAGE_KEY); - for(var i = themeforms.length; i--; ) { - themeforms[i].style.display = 'inline-block'; - } -} catch(e) { - console.log('localStorage is not available, manual theme switching is disabled'); -}
D
deploy/www/feed/atom.xml
@@ -1,15 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?> -<feed xmlns="http://www.w3.org/2005/Atom"> - <id>https://petermolnar.net/feed/</id> - <title>Peter Molnar</title> - <updated>1970-01-01T00:00:00+00:00</updated> - <author> - <name>Peter Molnar</name> - <email>mail@petermolnar.net</email> - </author> - <link href="https://petermolnar.net/feed/" rel="self"/> - <link href="https://petermolnar.superfeedr.com/" rel="hub"/> - <generator uri="http://lkiesow.github.io/python-feedgen" version="0.7.0">python-feedgen</generator> - <logo>https://petermolnar.net/favicon.png</logo> - <subtitle>Peter Molnar</subtitle> -</feed>
D
deploy/www/feed/index.json
@@ -1,12 +0,0 @@
-{ - "version": "https://jsonfeed.org/version/1", - "title": "Peter Molnar", - "home_page_url": "https://petermolnar.net", - "feed_url": "https://petermolnar.net/index.json", - "author": { - "name": "Peter Molnar", - "url": "https://petermolnar.net/", - "avatar": "https://petermolnar.net/favicon.jpg" - }, - "items": [] -}
D
deploy/www/feed/index.xml
@@ -1,16 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?> -<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0"> - <channel> - <title>Peter Molnar</title> - <link>https://petermolnar.net/feed/</link> - <description>Peter Molnar</description> - <docs>http://www.rssboard.org/rss-specification</docs> - <generator>python-feedgen</generator> - <image> - <url>https://petermolnar.net/favicon.png</url> - <title>Peter Molnar</title> - <link>https://petermolnar.net/feed/</link> - </image> - <lastBuildDate>Thu, 01 Jan 1970 00:00:00 +0000</lastBuildDate> - </channel> -</rss>
D
deploy/www/index.html
@@ -1,1038 +0,0 @@
-<!DOCTYPE html> -<html prefix="og: http://ogp.me/ns# article: http://ogp.me/ns/article#"> -<head> - <!--[if lt IE 9]> - <script src="https://petermolnar.net/html5shiv-printshiv.js"></script> - <![endif]--> - <title>2019-04-09 20:28 - petermolnar.net</title> - <meta charset="UTF-8" /> - <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1" /> - <meta name="author" content="Peter Molnar (mail@petermolnar.net)" /> - <link rel="icon" href="https://petermolnar.net/favicon.ico" /> - <!-- <base href="https://petermolnar.net" /> --> - <link rel="webmention" href="https://webmention.io/petermolnar.net/webmention" /> - <link rel="pingback" href="https://webmention.io/petermolnar.net/xmlrpc" /> - <link rel="hub" href="https://petermolnar.superfeedr.com/" /> - <link rel="authorization_endpoint" href="https://indieauth.com/auth" /> - <link rel="token_endpoint" href="https://tokens.indieauth.com/token" /> - <link rel="micropub" href="https://petermolnar.net/micropub.php" /> - <meta name="author" content="Peter Molnar <mail@petermolnar.net>" /> - <meta name="description" content="" /> - <link rel="canonical" href="https://petermolnar.net" /> - <style media="all"> -* { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - font-family: "Courier", monospace; - margin: 0; - padding: 0; - line-height: 1.5em; -} - -body { - color: #eee; - background-color: #222; -} - -body > header, -body > footer { - background-color: #111; - text-align: center; - padding: 0.6em 0; -} - -body > main, -body > nav, -body > header > section, -body > footer > section { - max-width: 88ch; - margin: 0 auto; - padding: 0 1em; -} - -hr { - border: none; -} - -dt { - font-weight: bold; -} - -h1, h2, h3, h4, h5, h6, hr, -dt { - margin: 2em 0 0.6em 0; -} - -main p { - margin: 1em 0; -} - -h1 { - border-bottom: 4px double #999; - text-transform:uppercase; - text-align: center; - padding-bottom: 1em; -} - -article > footer > dl > dt, -h2 { - border-bottom: 1px solid #999; -} - -article > footer > dl > dt, -h3, -hr { - border-bottom: 1px dotted #999; -} - -h4 { - border-bottom: 1px dashed #999; -} - -svg { - transform: rotate(0deg); - fill: currentColor; - vertical-align:middle; -} - -body > svg { - display: none; -} - -a { - color: #f90; - text-decoration: none; - border-bottom: 1px solid transparent; -} - -a:hover { - color: #eee; - border-bottom: 1px solid #eee; -} - -sup { - vertical-align: unset; -} - -sup:before { - content: '['; -} - -sup:after { - content: ']'; -} - -input, button, label { - -webkit-appearance:none; -} - -nav > ul { - list-style-type: none; -} - -nav > ul > li { - display: inline-block; -} - -body > header form { - display: inline-block; - padding-left: 0.6em; - margin-top: 1em; -} - -body > header a { - font-weight: bold; - border-bottom: 3px solid transparent; - padding-bottom: 0.1em; -} - -body > header a:hover, -body > header a.active { - border-bottom: 3px solid #eee; - color: #eee; -} - -body > header a svg { - display: block; - margin: 0.1em auto; -} - -blockquote { - border-left: 3px solid #999; - margin: 2em 0 2em 1em; - padding: 0 0 0 1em; - color: #aaa; -} - -input { - width: 8em; - padding: 0 0.3em; - border: none; - background-color: #333; - color: #ccc; -} - -.hidden, .theme, -.theme input, input[type=submit] { - display: none; -} - -.theme input + label { - color: #f90; - cursor: pointer; - border-bottom: 3px solid transparent; - padding-bottom: 0.1em; -} - -.theme input:hover + label, -.theme input:checked + label { - border-bottom: 3px solid #eee; - color: #eee; -} - -body > footer { - margin-top: 2em; -} - -body > footer > section > * { - margin-bottom: 0.6em; -} - -body > footer .email span { - display: none; -} - -video, -figure img { - display: block; - max-height: 98vh; - max-width: 100%; - width:auto; - height:auto; - margin: 0 auto; - border: 1px solid #000; -} - -figure { - margin: 2em 0; -} - -figcaption { - margin-top: 1em; -} - -figcaption > dl { - margin-top: 1em; - color: #666; -} - -figcaption > dl * { - display: inline-block; -} - -figcaption > dl dt { - display: none; -} - -figcaption > dl dd { - margin: 0 0.3em; -} - -.vcard img { - height: 1em; -} - -code, pre { - color: #3c3; - border: 1px solid #666; - direction: ltr; - word-break: break-all; - word-wrap: break-word; - white-space: pre-wrap; - overflow:initial; -} - -pre { - padding: 0.6em; - position: relative; - margin: 1em 0; -} - -code { - padding: 0.05em 0.2em; -} - -pre > code { - border: none; -} - -pre > code::before { - content: attr(lang); - float: right; - color: #999; - border-left: 1px solid #666; - border-bottom: 1px solid #666; - padding: 0 0.3em; - margin: -0.6em -0.6em 0 0; -} - -table { - border-collapse: collapse; - width: 100%; -} - -td, th { - padding: 0.3em; - border: 1px solid #777; - text-align:left; -} - -th { - font-weight: bold; -} - -th, tr:nth-child(even) { - background-color: rgba(255, 255, 255, .1); -} - -main > header > p { - text-align: center; -} - -article > header { - border-bottom: 4px double #999; - margin-bottom: 2em; -} - -.h-feed article > header { - border: none; - margin: 0; -} - -main ul { - margin-left: 2em; -} - -main ol { - margin-left: 3em; -} - -li p { - margin: 0; -} - -.footnotes hr:before { - content: 'Links'; - color: #ccc; - font-weight: bold; -} - -.comments .u-url, -.footnotes a { - display: inline-block; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - vertical-align: top; - max-width: 96%; -} - -.footnote-back { - margin: 0 0 0 0.6em; -} - -main > section > article { - padding-left: 1em; -} - -body > nav { - text-align: center; - margin-top: 2em; -} - -body > nav > ul > li { - margin: 0 0.6em; -} - -@media all and (min-width: 58em) { - body > header > section { - text-align: left; - display: flex; - justify-content:space-between; - } - - body > header a svg { - display: inline-block; - } - - body > header form { - margin-top: 0; - } -} - -body > img { - position: fixed; - bottom: 0; - right: 0; - width: 10em; - height: auto; -} </style> - <style id="css_alt" media="speech"> -body { - color: #000; - background-color: #eee; -} - -a { - color: #3173b4; -} - -a:hover { - color: #014384; - border-bottom: 1px solid #014384; -} - -code, -pre { - color: #006400; -} - -button svg { - transform: rotate(180deg); - transition: all 0.2s; -} - -blockquote { - color: #555; -} - -td, th { - border: 1px solid #111; -} - -th, tr:nth-child(even) { - background-color: rgba(0, 0, 0, .1); -} - -pre > code::before { - color: #444; -} - -.footnotes hr::before { - color: #222; -} - -body > header, -body > footer{ - background-color: #333; - color: #ccc; -} - -body > header a, -body > footer a, -.theme input + label { - color: #71B3F4; -} - -input { - background-color: #222; -} - -body > footer a:hover { - color: #fff; - border-bottom: 1px solid #fff; -} </style> - <style media="print"> - -* { - background-color: #fff !important; - color: #222; -} - -html, body { - font-size: 10pt !important; - font-family: Helvetica, sans-serif !important; -} - -@page { - margin: 0.6in 0.5in; -} - -.limit, -body > section { - max-width: 100% !important; - margin: 0 !important; -} - -h1, h2, h3, h4, h5, h6 { - page-break-after: avoid; -} - -h3, -a, -.footnotes a, -.h-feed .h-entry, -code, -pre { - border: none; -} - -p, li, blockquote, figure, .footnotes { - page-break-inside: avoid !important; -} - -a { - color: #000; -} - -td, th { - border: 1pt solid #666; -} - -.footnotes a { - display: block; - overflow: visible; - white-space: normal; - overflow:visible !important; - text-overflow:initial !important; -} - -.footnote-back { - display: none; -} - -body > header, -body > footer, -video, -audio, -.footnote-backref, -.footnote-back, -.encourage, -.noprint { - display:none !important; -} - -code, pre { - max-width: 96%; - page-break-inside: auto; - font-family: "Courier", "Courier New", monospace !important; -} - -pre { - border: 1pt dotted #666; - padding: 0.6em; -} - -.adaptimg { - max-height: 35vh; - max-width: 90vw; - outline: none; - border: 1px solid #000; -} - -.h-feed .h-entry { - page-break-after: always; -} </style> -</head> - -<body> - - -<header> - <section> - <nav> - <ul> - <li> - <a title="home" href="./index.html" class="active" > - <svg width="16" height="16"> - <use xlink:href="#icon-home" /> - </svg> - home - </a> - </li> - <li> - <a title="photos" href="category/photo/index.html" > - <svg width="16" height="16"> - <use xlink:href="#icon-photo" /> - </svg> - photos - </a> - </li> - <li> - <a title="journal" href="category/journal/index.html" > - <svg width="16" height="16"> - <use xlink:href="#icon-journal" /> - </svg> - journal - </a> - </li> - <li> - <a title="IT" href="category/article/index.html" > - <svg width="16" height="16"> - <use xlink:href="#icon-article" /> - </svg> - IT - </a> - </li> - <li> - <a title="notes" href="category/note/index.html" > - <svg width="16" height="16"> - <use xlink:href="#icon-note" /> - </svg> - notes - </a> - </li> - </ul> - </nav> - - <div> - <form class="theme" aria-hidden="true"> - <svg width="16" height="16"> - <use xlink:href="#icon-contrast"></use> - </svg> - <span> - <input name="colorscheme" value="dark" id="darkscheme" type="radio"> - <label for="darkscheme">dark</label> - </span> - <span> - <input name="colorscheme" value="light" id="lightscheme" type="radio"> - <label for="lightscheme">light</label> - </span> - </form> - <form role="search" method="get" action="search.php"> - <label for="qsub"> - <input type="submit" value="search" id="qsub" name="qsub" /> - <svg width="16" height="16"> - <use xlink:href="#icon-search"></use> - </svg> - </label> - <input type="search" placeholder="search..." value="" name="q" id="q" title="Search for:" /> - </form> - </div> - </section> -</header> - -<main class="h-feed hatom"> - <aside> - <div> - <h1 id="hello-world">Hello world</h1> -<p>This is a test</p> - </div> - </aside> - -</main> - - -<footer class="p-author h-card vcard"> - <section> - <p> - <a href="https://creativecommons.org/">CC</a>, - 1999-2019, - <img class="u-photo photo" src="favicon.jpg" alt="Photo of Peter Molnar" /> - <a class="p-name u-url fn url" href="https://petermolnar.net/" rel="me"> Peter Molnar</a> - <a class="u-email email" rel="me" href="mailto:mail@petermolnar.net"> - <svg width="16" height="16"> - <use xlink:href="#icon-mail"></use> - </svg> - mail@petermolnar.net - </a> - </p> - <nav> - <ul> - <li> - <a href="https://petermolnar.net/follow/"> - <svg width="16" height="16"><use xlink:href="#icon-FollowAction" /></svg> - follow - </a> - </li> - <li> - <a href="https://petermolnar.net/following.opml"> - <svg width="16" height="16"><use xlink:href="#icon-following" /></svg> - followings - </a> - </li> - <li> - <a rel="me" href="https://github.com/petermolnar"> - <svg width="16" height="16"><use xlink:href="#icon-github" /></svg> - github - </a> - </li> - <li> - <a href="https://petermolnar.net/cv.html" class="u-url"> - <svg width="16" height="16"><use xlink:href="#icon-resume" /></svg> - resume - </a> - </li> - <li> - </li> - <li> - </li> - <li> - </li> - </ul> - </nav> - <nav> - <a href="https://xn--sr8hvo.ws/%F0%9F%87%BB%F0%9F%87%AE%F0%9F%93%A2/previous">←</a> - Member of <a href="https://xn--sr8hvo.ws">IndieWeb Webring</a> - <a href="https://xn--sr8hvo.ws/%F0%9F%87%BB%F0%9F%87%AE%F0%9F%93%A2/next">→</a> - </nav> - </section> - <section> - <nav> - <ul> - <li> - <a href="https://indieweb.org/"> - <svg width="80" height="15"> - <use xlink:href="#button-indieweb"/> - </svg> - </a> - </li> - <li> - <a href="http://microformats.org/"> - <svg width="80" height="15"> - <use xlink:href="#button-microformats"/> - </svg> - </a> - </li> - <li> - <a href="https://www.w3.org/TR/webmention/"> - <svg width="80" height="15"> - <use xlink:href="#button-webmention"/> - </svg> - </a> - </li> - <li> - <a href="https://spdx.org/licenses/CC-BY-NC-ND-4.0.html"> - <svg width="80" height="15"> - <use xlink:href="#button-cc"/> - </svg> - </a> - </li> - <li> - <svg width="80" height="15"> - <use xlink:href="#button-nojs"/> - </svg> - </li> - </ul> - </nav> - </section> -</footer> - -<script> -var DEFAULT_THEME = 'dark'; -var ALT_THEME = 'light'; -var STORAGE_KEY = 'theme'; -var colorscheme = document.getElementsByName('colorscheme'); - -function indicateTheme(mode) { - for(var i = colorscheme.length; i--; ) { - if(colorscheme[i].value == mode) { - colorscheme[i].checked = true; - } - } -} - -function applyTheme(mode) { - var st = document.getElementById('css_alt'); - if (mode == ALT_THEME) { - st.setAttribute('media', 'all'); - } - else { - st.setAttribute('media', 'speech'); - } -} - -function setTheme(e) { - var mode = e.target.value; - var mql = window.matchMedia('(prefers-color-scheme: ' + ALT_THEME + ')'); - /* user wants == mql match => remove storage */ - if ((mode == DEFAULT_THEME && !mql.matches) || (mode == ALT_THEME && mql.matches)) { - localStorage.removeItem(STORAGE_KEY); - } - else { - if(confirm("I\'ll need to store your choice in your browser, in a place called localStorage.\n\nAre you OK with this?")) { - localStorage.setItem(STORAGE_KEY, mode); - } - } - autoTheme(mql); -} - -function autoTheme(e) { - var mode = DEFAULT_THEME; - try { - var current = localStorage.getItem(STORAGE_KEY); - } catch(e) { - var current = DEFAULT_THEME; - } - if ( current != null) { - mode = current; - } - else if (e.matches) { - mode = ALT_THEME; - } - applyTheme(mode); - indicateTheme(mode); -} - -var mql = window.matchMedia('(prefers-color-scheme: ' + ALT_THEME + ')'); -autoTheme(mql); -mql.addListener(autoTheme); - -var test = 'ping'; -try { - localStorage.setItem(test, test); - localStorage.removeItem(test); - for(var i = colorscheme.length; i--; ) { - colorscheme[i].onclick = setTheme; - } - var themeforms = document.getElementsByClassName(STORAGE_KEY); - for(var i = themeforms.length; i--; ) { - themeforms[i].style.display = 'inline-block'; - } -} catch(e) { - console.log('localStorage is not available, manual theme switching is disabled'); -}function kcl(cb) { - var input = ''; - var key = '38384040373937396665'; - document.addEventListener('keydown', function (e) { - input += ("" + e.keyCode); - if (input === key) { - return cb(); - } - if (!key.indexOf(input)) return; - input = ("" + e.keyCode); - }); -} - -kcl(function () { - var e = document.createElement('img'); - e.src = '/iddqd.gif'; - document.body.appendChild(e); -})</script> - -<svg aria-hidden="true" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <symbol id="icon-github" viewBox="0 0 16 16"> - <path d="M8 0.198c-4.42 0-8 3.582-8 8 0 3.535 2.292 6.533 5.47 7.59 0.4 0.075 0.547-0.172 0.547-0.385 0-0.19-0.007-0.693-0.010-1.36-2.225 0.483-2.695-1.073-2.695-1.073-0.364-0.923-0.89-1.17-0.89-1.17-0.725-0.496 0.056-0.486 0.056-0.486 0.803 0.056 1.225 0.824 1.225 0.824 0.713 1.223 1.873 0.87 2.33 0.665 0.072-0.517 0.278-0.87 0.507-1.070-1.777-0.2-3.644-0.888-3.644-3.953 0-0.873 0.31-1.587 0.823-2.147-0.090-0.202-0.36-1.015 0.070-2.117 0 0 0.67-0.215 2.2 0.82 0.64-0.178 1.32-0.266 2-0.27 0.68 0.004 1.36 0.092 2 0.27 1.52-1.035 2.19-0.82 2.19-0.82 0.43 1.102 0.16 1.915 0.080 2.117 0.51 0.56 0.82 1.273 0.82 2.147 0 3.073-1.87 3.75-3.65 3.947 0.28 0.24 0.54 0.731 0.54 1.48 0 1.071-0.010 1.931-0.010 2.191 0 0.21 0.14 0.46 0.55 0.38 3.201-1.049 5.491-4.049 5.491-7.579 0-4.418-3.582-8-8-8z"></path> - </symbol> - <symbol id="icon-paypal" viewBox="0 0 16 16"> - <path d="M4.605 16h-2.069c-0.443 0-0.724-0.353-0.624-0.787l0.099-0.449h1.381c0.444 0 0.891-0.355 0.988-0.788l0.709-3.061c0.1-0.432 0.544-0.787 0.987-0.787h0.589c2.526 0 4.489-0.519 5.893-1.56s2.107-2.4 2.107-4.090c0-0.75-0.13-1.37-0.392-1.859 0-0.011-0.011-0.021-0.011-0.031l0.090 0.050c0.5 0.31 0.88 0.709 1.141 1.209 0.269 0.5 0.399 1.12 0.399 1.861 0 1.69-0.699 3.049-2.109 4.090-1.4 1.030-3.37 1.549-5.889 1.549h-0.6c-0.44 0-0.889 0.35-0.989 0.791l-0.71 3.070c-0.099 0.43-0.54 0.78-0.98 0.78l-0.008 0.012zM2.821 14.203h-2.070c-0.442 0-0.723-0.353-0.624-0.787l2.915-12.629c0.101-0.435 0.543-0.788 0.987-0.788h4.31c0.93 0 1.739 0.065 2.432 0.193 0.69 0.126 1.28 0.346 1.789 0.66 0.491 0.31 0.881 0.715 1.131 1.212 0.259 0.499 0.389 1.12 0.389 1.865 0 1.69-0.701 3.049-2.109 4.079-1.4 1.041-3.371 1.551-5.891 1.551h-0.589c-0.44 0-0.885 0.349-0.985 0.779l-0.707 3.059c-0.099 0.431-0.545 0.781-0.99 0.781l0.011 0.024zM7.785 2.624h-0.676c-0.444 0-0.888 0.353-0.987 0.785l-0.62 2.68c-0.1 0.432 0.18 0.786 0.62 0.786h0.511c1.109 0 1.98-0.229 2.6-0.681 0.619-0.457 0.93-1.103 0.93-1.941 0-0.553-0.201-0.963-0.6-1.227-0.4-0.269-1-0.403-1.791-0.403l0.013 0.001z"></path> - </symbol> - <symbol id="icon-monzo" viewBox="0 0 16 16"> - <path d="M14.5 2h-13c-0.825 0-1.5 0.675-1.5 1.5v9c0 0.825 0.675 1.5 1.5 1.5h13c0.825 0 1.5-0.675 1.5-1.5v-9c0-0.825-0.675-1.5-1.5-1.5zM1.5 3h13c0.271 0 0.5 0.229 0.5 0.5v1.5h-14v-1.5c0-0.271 0.229-0.5 0.5-0.5zM14.5 13h-13c-0.271 0-0.5-0.229-0.5-0.5v-4.5h14v4.5c0 0.271-0.229 0.5-0.5 0.5zM2 10h1v2h-1zM4 10h1v2h-1zM6 10h1v2h-1z"></path> - </symbol> - <symbol id="icon-lens" viewBox="0 0 16 16"> - <path d="M8 4c-2.209 0-4 1.791-4 4s1.791 4 4 4 4-1.791 4-4-1.791-4-4-4zM8 11c-1.657 0-3-1.344-3-3s1.343-3 3-3 3 1.343 3 3-1.344 3-3 3zM8 0c-4.418 0-8 3.582-8 8s3.582 8 8 8 8-3.582 8-8-3.582-8-8-8zM8 14c-3.313 0-6-2.687-6-6s2.687-6 6-6 6 2.687 6 6-2.687 6-6 6zM8 6.5c-0.829 0-1.5 0.671-1.5 1.5s0.671 1.5 1.5 1.5 1.5-0.671 1.5-1.5-0.671-1.5-1.5-1.5z"></path> - </symbol> - <symbol id="icon-focallength" viewBox="0 0 16 16"> - <path d="M6 9h-3v2l-3-3 3-3v2h3zM10 7h3v-2l3 3-3 3v-2h-3z"></path> - </symbol> - <symbol id="icon-aperture" viewBox="0 0 16 16"> - <path d="M10.586 6.99l2.845-4.832c-1.428-1.329-3.326-2.158-5.431-2.158-0.499 0-0.982 0.059-1.456 0.146l4.042 6.843zM9.976 10h5.74c0.166-0.643 0.284-1.305 0.284-2 0-1.937-0.715-3.688-1.861-5.072l-4.162 7.072zM8.25 5l-2.704-4.576c-2.25 0.73-4.069 2.399-4.952 4.576h7.656zM7.816 11l2.696 4.559c2.224-0.742 4.020-2.4 4.895-4.559h-7.59zM6.053 6h-5.769c-0.167 0.643-0.283 1.304-0.283 2 0 1.945 0.722 3.705 1.878 5.094l4.175-7.094zM5.459 8.98l-2.872 4.879c1.426 1.316 3.317 2.14 5.413 2.14 0.521 0 1.027-0.059 1.52-0.152l-4.061-6.867z"></path> - </symbol> - <symbol id="icon-mail" viewBox="0 0 16 16"> - <path d="M16 6.339v7.089c0 0.786-0.643 1.429-1.429 1.429h-13.143c-0.786 0-1.429-0.643-1.429-1.429v-7.089c0.268 0.295 0.571 0.554 0.902 0.777 1.482 1.009 2.982 2.018 4.438 3.080 0.75 0.554 1.679 1.232 2.652 1.232h0.018c0.973 0 1.902-0.679 2.652-1.232 1.455-1.054 2.955-2.071 4.446-3.080 0.321-0.223 0.625-0.482 0.893-0.777zM16 3.714c0 1-0.741 1.902-1.527 2.446-1.393 0.964-2.795 1.929-4.179 2.902-0.58 0.402-1.563 1.223-2.286 1.223h-0.018c-0.723 0-1.705-0.821-2.286-1.223-1.384-0.973-2.786-1.938-4.17-2.902-0.634-0.429-1.536-1.438-1.536-2.25 0-0.875 0.473-1.625 1.429-1.625h13.143c0.777 0 1.429 0.643 1.429 1.429z"></path> - </symbol> - <symbol id="icon-reply" viewBox="0 0 16 16"> - <path d="M7 12.119v3.881l-6-6 6-6v3.966c6.98 0.164 6.681-4.747 4.904-7.966 4.386 4.741 3.455 12.337-4.904 12.119z"></path> - </symbol> - <symbol id="icon-link" viewBox="0 0 16 16"> - <path d="M6.879 9.934c-0.208 0-0.416-0.079-0.575-0.238-1.486-1.486-1.486-3.905 0-5.392l3-3c0.72-0.72 1.678-1.117 2.696-1.117s1.976 0.397 2.696 1.117c1.486 1.487 1.486 3.905 0 5.392l-1.371 1.371c-0.317 0.317-0.832 0.317-1.149 0s-0.317-0.832 0-1.149l1.371-1.371c0.853-0.853 0.853-2.241 0-3.094-0.413-0.413-0.963-0.641-1.547-0.641s-1.134 0.228-1.547 0.641l-3 3c-0.853 0.853-0.853 2.241 0 3.094 0.317 0.317 0.317 0.832 0 1.149-0.159 0.159-0.367 0.238-0.575 0.238z"></path> - <path d="M4 15.813c-1.018 0-1.976-0.397-2.696-1.117-1.486-1.486-1.486-3.905 0-5.392l1.371-1.371c0.317-0.317 0.832-0.317 1.149 0s0.317 0.832 0 1.149l-1.371 1.371c-0.853 0.853-0.853 2.241 0 3.094 0.413 0.413 0.962 0.641 1.547 0.641s1.134-0.228 1.547-0.641l3-3c0.853-0.853 0.853-2.241 0-3.094-0.317-0.317-0.317-0.832 0-1.149s0.832-0.317 1.149 0c1.486 1.486 1.486 3.905 0 5.392l-3 3c-0.72 0.72-1.678 1.117-2.696 1.117z"></path> - </symbol> - <symbol id="icon-FollowAction" viewBox="0 0 16 16"> - <path d="M14.5 0h-13c-0.825 0-1.5 0.675-1.5 1.5v13c0 0.825 0.675 1.5 1.5 1.5h13c0.825 0 1.5-0.675 1.5-1.5v-13c0-0.825-0.675-1.5-1.5-1.5zM4.359 12.988c-0.75 0-1.359-0.603-1.359-1.353 0-0.744 0.609-1.356 1.359-1.356 0.753 0 1.359 0.613 1.359 1.356 0 0.75-0.609 1.353-1.359 1.353zM7.772 13c0-1.278-0.497-2.481-1.397-3.381-0.903-0.903-2.1-1.4-3.375-1.4v-1.956c3.713 0 6.738 3.022 6.738 6.737h-1.966zM11.244 13c0-4.547-3.697-8.25-8.241-8.25v-1.956c5.625 0 10.203 4.581 10.203 10.206h-1.963z"></path> - </symbol> - <symbol id="icon-home" viewBox="0 0 16 16"> - <path d="M16 9.226l-8-6.21-8 6.21v-2.532l8-6.21 8 6.21zM14 9v6h-4v-4h-4v4h-4v-6l6-4.5z"></path> - </symbol> - <symbol id="icon-note" viewBox="0 0 16 16"> - <path d="M14.341 3.579c-0.347-0.473-0.831-1.027-1.362-1.558s-1.085-1.015-1.558-1.362c-0.806-0.591-1.197-0.659-1.421-0.659h-7.75c-0.689 0-1.25 0.561-1.25 1.25v13.5c0 0.689 0.561 1.25 1.25 1.25h11.5c0.689 0 1.25-0.561 1.25-1.25v-9.75c0-0.224-0.068-0.615-0.659-1.421zM12.271 2.729c0.48 0.48 0.856 0.912 1.134 1.271h-2.406v-2.405c0.359 0.278 0.792 0.654 1.271 1.134zM14 14.75c0 0.136-0.114 0.25-0.25 0.25h-11.5c-0.135 0-0.25-0.114-0.25-0.25v-13.5c0-0.135 0.115-0.25 0.25-0.25 0 0 7.749-0 7.75 0v3.5c0 0.276 0.224 0.5 0.5 0.5h3.5v9.75z"></path> - <path d="M11.5 13h-7c-0.276 0-0.5-0.224-0.5-0.5s0.224-0.5 0.5-0.5h7c0.276 0 0.5 0.224 0.5 0.5s-0.224 0.5-0.5 0.5z"></path> - <path d="M11.5 11h-7c-0.276 0-0.5-0.224-0.5-0.5s0.224-0.5 0.5-0.5h7c0.276 0 0.5 0.224 0.5 0.5s-0.224 0.5-0.5 0.5z"></path> - <path d="M11.5 9h-7c-0.276 0-0.5-0.224-0.5-0.5s0.224-0.5 0.5-0.5h7c0.276 0 0.5 0.224 0.5 0.5s-0.224 0.5-0.5 0.5z"></path> - </symbol> - <symbol id="icon-article" viewBox="0 0 16 16"> - <path d="M0 1v14h16v-14h-16zM15 14h-14v-12h14v12zM14 3h-12v10h12v-10zM7 8h-1v1h-1v1h-1v-1h1v-1h1v-1h-1v-1h-1v-1h1v1h1v1h1v1zM11 10h-3v-1h3v1z"></path> - </symbol> - <symbol id="icon-journal" viewBox="0 0 16 16"> - <path d="M13.5 0h-12c-0.825 0-1.5 0.675-1.5 1.5v13c0 0.825 0.675 1.5 1.5 1.5h12c0.825 0 1.5-0.675 1.5-1.5v-13c0-0.825-0.675-1.5-1.5-1.5zM13 14h-11v-12h11v12zM4 7h7v1h-7zM4 9h7v1h-7zM4 11h7v1h-7zM4 5h7v1h-7z"></path> - </symbol> - <symbol id="icon-photo" viewBox="0 0 18 16"> - <path d="M17 2h-1v-1c0-0.55-0.45-1-1-1h-14c-0.55 0-1 0.45-1 1v12c0 0.55 0.45 1 1 1h1v1c0 0.55 0.45 1 1 1h14c0.55 0 1-0.45 1-1v-12c0-0.55-0.45-1-1-1zM2 3v10h-0.998c-0.001-0.001-0.001-0.001-0.002-0.002v-11.996c0.001-0.001 0.001-0.001 0.002-0.002h13.996c0.001 0.001 0.001 0.001 0.002 0.002v0.998h-12c-0.55 0-1 0.45-1 1v0zM17 14.998c-0.001 0.001-0.001 0.001-0.002 0.002h-13.996c-0.001-0.001-0.001-0.001-0.002-0.002v-11.996c0.001-0.001 0.001-0.001 0.002-0.002h13.996c0.001 0.001 0.001 0.001 0.002 0.002v11.996z"></path> - <path d="M15 5.5c0 0.828-0.672 1.5-1.5 1.5s-1.5-0.672-1.5-1.5 0.672-1.5 1.5-1.5 1.5 0.672 1.5 1.5z"></path> - <path d="M16 14h-12v-2l3.5-6 4 5h1l3.5-3z"></path> - </symbol> - <symbol id="icon-contrast" viewBox="0 0 16 16"> - <path d="M8 0c-4.418 0-8 3.582-8 8s3.582 8 8 8 8-3.582 8-8-3.582-8-8-8zM2 8c0-3.314 2.686-6 6-6v12c-3.314 0-6-2.686-6-6z"></path> - </symbol> - <symbol id="icon-sensitivity" viewBox="0 0 16 16"> - <path d="M8 4c-2.209 0-4 1.791-4 4s1.791 4 4 4 4-1.791 4-4-1.791-4-4-4zM8 10.5v-5c1.379 0 2.5 1.122 2.5 2.5s-1.121 2.5-2.5 2.5zM8 13c0.552 0 1 0.448 1 1v1c0 0.552-0.448 1-1 1s-1-0.448-1-1v-1c0-0.552 0.448-1 1-1zM8 3c-0.552 0-1-0.448-1-1v-1c0-0.552 0.448-1 1-1s1 0.448 1 1v1c0 0.552-0.448 1-1 1zM15 7c0.552 0 1 0.448 1 1s-0.448 1-1 1h-1c-0.552 0-1-0.448-1-1s0.448-1 1-1h1zM3 8c0 0.552-0.448 1-1 1h-1c-0.552 0-1-0.448-1-1s0.448-1 1-1h1c0.552 0 1 0.448 1 1zM12.95 11.536l0.707 0.707c0.39 0.39 0.39 1.024 0 1.414s-1.024 0.39-1.414 0l-0.707-0.707c-0.39-0.39-0.39-1.024 0-1.414s1.024-0.39 1.414 0zM3.050 4.464l-0.707-0.707c-0.391-0.391-0.391-1.024 0-1.414s1.024-0.391 1.414 0l0.707 0.707c0.391 0.391 0.391 1.024 0 1.414s-1.024 0.391-1.414 0zM12.95 4.464c-0.39 0.391-1.024 0.391-1.414 0s-0.39-1.024 0-1.414l0.707-0.707c0.39-0.391 1.024-0.391 1.414 0s0.39 1.024 0 1.414l-0.707 0.707zM3.050 11.536c0.39-0.39 1.024-0.39 1.414 0s0.391 1.024 0 1.414l-0.707 0.707c-0.391 0.39-1.024 0.39-1.414 0s-0.391-1.024 0-1.414l0.707-0.707z"></path> - </symbol> - <symbol id="icon-clock" viewBox="0 0 16 16"> - <path d="M10.293 11.707l-3.293-3.293v-4.414h2v3.586l2.707 2.707zM8 0c-4.418 0-8 3.582-8 8s3.582 8 8 8 8-3.582 8-8-3.582-8-8-8zM8 14c-3.314 0-6-2.686-6-6s2.686-6 6-6c3.314 0 6 2.686 6 6s-2.686 6-6 6z"></path> - </symbol> - <symbol id="icon-camera" viewBox="0 0 16 16"> - <path d="M4.75 9.5c0 1.795 1.455 3.25 3.25 3.25s3.25-1.455 3.25-3.25-1.455-3.25-3.25-3.25-3.25 1.455-3.25 3.25zM15 4h-3.5c-0.25-1-0.5-2-1.5-2h-4c-1 0-1.25 1-1.5 2h-3.5c-0.55 0-1 0.45-1 1v9c0 0.55 0.45 1 1 1h14c0.55 0 1-0.45 1-1v-9c0-0.55-0.45-1-1-1zM8 13.938c-2.451 0-4.438-1.987-4.438-4.438s1.987-4.438 4.438-4.438c2.451 0 4.438 1.987 4.438 4.438s-1.987 4.438-4.438 4.438zM15 7h-2v-1h2v1z"></path> - </symbol> - <symbol id="icon-following" viewBox="0 0 16 16"> - <path d="M5.295 8c-0.929 0.027-1.768 0.429-2.366 1.143h-1.196c-0.893 0-1.732-0.429-1.732-1.42 0-0.723-0.027-3.152 1.107-3.152 0.188 0 1.116 0.759 2.321 0.759 0.411 0 0.804-0.071 1.187-0.205-0.027 0.196-0.045 0.393-0.045 0.589 0 0.813 0.259 1.616 0.723 2.286zM14.857 13.688c0 1.446-0.955 2.313-2.384 2.313h-7.804c-1.429 0-2.384-0.866-2.384-2.313 0-2.018 0.473-5.116 3.089-5.116 0.304 0 1.411 1.241 3.196 1.241s2.893-1.241 3.196-1.241c2.616 0 3.089 3.098 3.089 5.116zM5.714 2.286c0 1.259-1.027 2.286-2.286 2.286s-2.286-1.027-2.286-2.286 1.027-2.286 2.286-2.286 2.286 1.027 2.286 2.286zM12 5.714c0 1.893-1.536 3.429-3.429 3.429s-3.429-1.536-3.429-3.429 1.536-3.429 3.429-3.429 3.429 1.536 3.429 3.429zM17.143 7.723c0 0.991-0.839 1.42-1.732 1.42h-1.196c-0.598-0.714-1.438-1.116-2.366-1.143 0.464-0.67 0.723-1.473 0.723-2.286 0-0.196-0.018-0.393-0.045-0.589 0.384 0.134 0.777 0.205 1.188 0.205 1.205 0 2.134-0.759 2.321-0.759 1.134 0 1.107 2.429 1.107 3.152zM16 2.286c0 1.259-1.027 2.286-2.286 2.286s-2.286-1.027-2.286-2.286 1.027-2.286 2.286-2.286 2.286 1.027 2.286 2.286z"></path> - </symbol> - <symbol id="icon-search" viewBox="0 0 16 16"> - <path d="M15.504 13.616l-3.79-3.223c-0.392-0.353-0.811-0.514-1.149-0.499 0.895-1.048 1.435-2.407 1.435-3.893 0-3.314-2.686-6-6-6s-6 2.686-6 6 2.686 6 6 6c1.486 0 2.845-0.54 3.893-1.435-0.016 0.338 0.146 0.757 0.499 1.149l3.223 3.79c0.552 0.613 1.453 0.665 2.003 0.115s0.498-1.452-0.115-2.003zM6 10c-2.209 0-4-1.791-4-4s1.791-4 4-4 4 1.791 4 4-1.791 4-4 4z"></path> - </symbol> - <symbol id="icon-resume" viewBox="0 0 16 16"> - <path d="M13.5 0h-12c-0.825 0-1.5 0.675-1.5 1.5v13c0 0.825 0.675 1.5 1.5 1.5h12c0.825 0 1.5-0.675 1.5-1.5v-13c0-0.825-0.675-1.5-1.5-1.5zM13 14h-11v-12h11v12zM4 9h7v1h-7zM4 11h7v1h-7zM5 4.5c0-0.828 0.672-1.5 1.5-1.5s1.5 0.672 1.5 1.5c0 0.828-0.672 1.5-1.5 1.5s-1.5-0.672-1.5-1.5zM7.5 6h-2c-0.825 0-1.5 0.45-1.5 1v1h5v-1c0-0.55-0.675-1-1.5-1z"></path> - </symbol> - <symbol id="icon-bookmark" viewBox="0 0 16 16"> - <path d="M4 2v14l5-5 5 5v-14zM12 0h-10v14l1-1v-12h9z"></path> - </symbol> - <symbol id="icon-star" viewBox="0 0 16 16"> - <path d="M16 6.204l-5.528-0.803-2.472-5.009-2.472 5.009-5.528 0.803 4 3.899-0.944 5.505 4.944-2.599 4.944 2.599-0.944-5.505 4-3.899z"></path> - </symbol> - <symbol id="button-indieweb" viewBox="0 0 80 15"> - <rect width="80" height="15" fill="#666"/> - <rect x="1" y="1" width="78" height="13" fill="#fff"/> - <path d="m3 4v2h7v-2h-7zm0 3v4h7v-4h-7z" fill="#fc0d1b"/> - <path d="m11 4v2h1v-2h-1zm1 2v3h1v-3h-1zm1 0h1v3h1v2h2v-2h1v-3h1v-2h-6v2zm1 3h-1v2h1v-2z" fill="#fc5d20"/> - <polygon points="21 4 25 4 25 5 26 5 26 7 22 7 22 8 26 8 26 10 25 10 25 11 21 11 21 10 20 10 20 8 19 8 19 7 20 7 20 5 21 5" fill="#fdb02a"/> - <rect x="29" y="2" width="49" height="1" fill="#fda829"/> - <rect x="29" y="3" width="49" height="1" fill="#fd9c27"/> - <rect x="29" y="4" width="49" height="1" fill="#fd9025"/> - <rect x="29" y="5" width="49" height="1" fill="#fd8124"/> - <rect x="29" y="6" width="49" height="1" fill="#fd7222"/> - <rect x="29" y="7" width="49" height="1" fill="#fd6420"/> - <rect x="29" y="8" width="49" height="1" fill="#fc561f"/> - <rect x="29" y="9" width="49" height="1" fill="#fc481e"/> - <rect x="29" y="10" width="49" height="1" fill="#fc371d"/> - <rect x="29" y="11" width="49" height="1" fill="#fc291c"/> - <rect x="29" y="12" width="49" height="1" fill="#fc1c1c"/> - <g fill="#fff"> - <path d="m34 5h1v5h-1z"/> - <path d="m37 5h1v1h1v1h1v1h1v-3h1v5h-1v-1h-1v-1h-1v-1h-1v3h-1z"/> - <path d="m44 5v5h3v-1h-2v-3h2v-1h-3zm3 1v3h1v-3h-1z"/> - <path d="m50 5h1v5h-1z"/> - <path d="m53 5h3v1h-2v1h2v1h-2v1h2v1h-3z"/> - <path d="m58 5h1v4h1v-3h1v3h1v-4h1v4h-1v1h-1v-1h-1v1h-1v-1h-1z"/> - <path d="m65 5h3v1h-2v1h2v1h-2v1h2v1h-3z"/> - <path d="m70 5v5h3v-1h-2v-1h2v-1h-2v-1h2v-1h-3zm3 1v1h1v-1h-1zm0 2v1h1v-1h-1z"/> - </g> - </symbol> - <symbol id="button-webmention" viewBox="0 0 80 15"> - <rect width="80" height="15" fill="#666"/> - <rect x="1" y="1" width="78" height="13" fill="#fff" style="paint-order:markers fill stroke"/> - <path d="m13 1v1h-1v1h-1v1h1 1v1h-1v2h-1v2h-1v-3h-1v-2h-1v2h-1v3h-1v-2h-1v-3h-1v-2h-1-1v2h1v3h1v3h1v3h1 1v-3h1v-2h1v2h1v3h1 1v-3h1v-3h1v-3h1 1v-1h-1v-1h-1v-1h-1z" fill="#610371"/> - <rect x="19" y="2" width="59" height="11" fill="#850e9a"/> - <g fill="#fff"> - <path d="m33 5v5h3v-1h-2v-1h2v-1h-2v-1h2v-1h-3zm3 1v1h1v-1h-1zm0 2v1h1v-1h-1z"/> - <path d="m28 5h3v1h-2v1h2v1h-2v1h2v1h-3z"/> - <path d="m21 5h1v4h1v-3h1v3h1v-4h1v4h-1v1h-1v-1h-1v1h-1v-1h-1z"/> - <path d="m39 5h1v1h1v1h1v-1h1v-1h1v5h-1v-3h-1v1h-1v-1h-1v3h-1z"/> - <path d="m51 5h1v1h1v1h1v1h1v-3h1v5h-1v-1h-1v-1h-1v-1h-1v3h-1z"/> - <path d="m58 5h3v1h-1v4h-1v-4h-1"/> - <path d="m63 5h1v5h-1z"/> - <path d="m67 5v1h2v-1zm2 1v3h1v-3zm0 3h-2v1h2zm-2 0v-3h-1v3z"/> - <path d="m71 5h1v1h1v1h1v1h1v-3h1v5h-1v-1h-1v-1h-1v-1h-1v3h-1z"/> - <path d="m46 5h3v1h-2v1h2v1h-2v1h2v1h-3z"/> - </g> - </symbol> - <symbol id="button-microformats" viewBox="0 0 80 15"> - <rect width="80" height="15" fill="#666"/> - <rect x="1" y="1" width="78" height="13" fill="#fff"/> - <rect x="18" y="2" width="2" height="11" fill="#5d8f17"/> - <rect x="20" y="2" width="2" height="11" fill="#609218"/> - <rect x="22" y="2" width="2" height="11" fill="#639519"/> - <rect x="24" y="2" width="2" height="11" fill="#66981a"/> - <rect x="26" y="2" width="2" height="11" fill="#699b1b"/> - <rect x="28" y="2" width="2" height="11" fill="#6c9e1b"/> - <rect x="30" y="2" width="2" height="11" fill="#6fa11c"/> - <rect x="32" y="2" width="2" height="11" fill="#72a51d"/> - <rect x="34" y="2" width="2" height="11" fill="#76a81e"/> - <rect x="36" y="2" width="2" height="11" fill="#78aa1f"/> - <rect x="38" y="2" width="2" height="11" fill="#7cae20"/> - <rect x="40" y="2" width="2" height="11" fill="#7eb120"/> - <rect x="42" y="2" width="2" height="11" fill="#82b421"/> - <rect x="44" y="2" width="2" height="11" fill="#85b722"/> - <rect x="46" y="2" width="2" height="11" fill="#88ba23"/> - <rect x="48" y="2" width="2" height="11" fill="#8bbd24"/> - <rect x="50" y="2" width="2" height="11" fill="#8ec125"/> - <rect x="52" y="2" width="2" height="11" fill="#91c325"/> - <rect x="54" y="2" width="2" height="11" fill="#94c626"/> - <rect x="56" y="2" width="2" height="11" fill="#97ca27"/> - <rect x="58" y="2" width="2" height="11" fill="#9acd28"/> - <rect x="60" y="2" width="2" height="11" fill="#9dd029"/> - <rect x="62" y="2" width="2" height="11" fill="#a0d32a"/> - <rect x="64" y="2" width="2" height="11" fill="#a4d62b"/> - <rect x="66" y="2" width="2" height="11" fill="#a6d92b"/> - <rect x="68" y="2" width="2" height="11" fill="#a8db2c"/> - <rect x="70" y="2" width="2" height="11" fill="#acdf2d"/> - <rect x="72" y="2" width="2" height="11" fill="#b0e32e"/> - <rect x="74" y="2" width="2" height="11" fill="#b3e62f"/> - <rect x="76" y="2" width="2" height="11" fill="#b6e92f"/> - <polygon points="4 4 6 4 6 9 7 9 7 10 12 10 12 12 11 12 11 13 4 13 4 12 3 12 3 5 4 5" fill="#5c8d17"/> - <polygon points="7 3 9 3 9 6 10 6 10 7 13 7 13 9 8 9 8 8 7 8" fill="#8dc024"/> - <polygon points="10 2 13 2 13 3 14 3 14 6 11 6 11 5 10 5" fill="#a5d82b"/> - <g fill="#fff"> - <path d="m20 5h1v1h1v1h1v-1h1v-1h1v5h-1v-3h-1v1h-1v-1h-1v3h-1z"/> - <path d="m26 5h1v5h-1z"/> - <path d="m29 5h2v1h1v1h-1v-1h-2v3h2v-1h1v1h-1v1h-2v-1h-1v-3h1z"/> - <path d="m33 5v5h1v-2h1v1h1v-2h-2v-1h2v-1h-3zm3 1v1h1v-1h-1zm0 3v1h1v-1h-1z"/> - <path d="m39 5v1h2v-1h-2zm2 1v1 1 1h1v-1-1-1h-1zm0 3h-2v1h2v-1zm-2 0v-3h-1v3h1z"/> - <path d="m43 5h3v1h-2v1h2v1h-2v2h-1z"/> - <path d="m48 5v1h2v-1h-2zm2 1v1 1 1h1v-1-1-1h-1zm0 3h-2v1h2v-1zm-2 0v-3h-1v3h1z"/> - <path d="m52 5v5h1v-2h1v1h1v-2h-2v-1h2v-1h-3zm3 1v1h1v-1h-1zm0 3v1h1v-1h-1z"/> - <path d="m57 5h1v1h1v1h1v-1h1v-1h1v5h-1v-3h-1v1h-1v-1h-1v3h-1z"/> - <path d="m64 5v1h2v-1h-2zm2 1v1h-2v-1h-1v4h1v-2h2v2h1v-4h-1z"/> - <path d="m68 5h3v1h-1v4h-1v-4h-1"/> - <path d="m73 5h3v1h-3v1h2v1h1v1h-1v1h-3v-1h3v-1h-2v-1h-1v-1h1"/> - </g> - </symbol> - <symbol id="button-cc" viewBox="0 0 80 15"> - <rect y="0" width="80" height="15" fill="#000"/> - <rect x="1" y="1" width="78" height="13" fill="#fff"/> - <rect x="2" y="2" width="76" height="11" fill="#000"/> - <g fill="#fff"> - <path d="m42 5h1v1h1v1h1v-1h1v-1h1v5h-1v-3h-1v1h-1v-1h-1v3h-1z"/> - <path d="m31 5h2v1h1v1h-1v-1h-2v3h2v-1h1v1h-1v1h-2v-1h-1v-3h1z"/> - <path d="m37 5v1h2v-1zm2 1v3h1v-3zm0 3h-2v1h2zm-2 0v-3h-1v3z"/> - <path d="m57 5v1h2v-1zm2 1v3h1v-3zm0 3h-2v1h2zm-2 0v-3h-1v3z"/> - <path d="m49 5h1v1h1v1h1v-1h1v-1h1v5h-1v-3h-1v1h-1v-1h-1v3h-1z"/> - <path d="m70 5h3v1h-3v1h2v1h1v1h-1v1h-3v-1h3v-1h-2v-1h-1v-1h1"/> - <path d="m62 5h1v1h1v1h1v1h1v-3h1v5h-1v-1h-1v-1h-1v-1h-1v3h-1z"/> - </g> - <path d="m2 2v11h19.891a8.5136 8.5 0 0 0 2.1088-5.5898 8.5136 8.5 0 0 0-1.9563-5.4102h-13.119z" fill="#aaa"/> - <path d="m6.0195 2a8.5 8.5 0 0 0-2.0195 5.5 8.5 8.5 0 0 0 2.0312 5.5h12.949a8.5 8.5 0 0 0 2.0195-5.5 8.5 8.5 0 0 0-2.0312-5.5z" fill="#000"/> - <circle cx="12.5" cy="7.5" r="6.5" fill="#fff"/> - <path d="m9 5h2v1h1v1h-1v-1h-2v3h2v-1h1v1h-1v1h-2v-1h-1v-3h1z" fill="#000"/> - <path d="m14 5h2v1h1v1h-1v-1h-2v3h2v-1h1v1h-1v1h-2v-1h-1v-3h1z" fill="#000"/> - </symbol> - <symbol id="button-nojs" viewBox="0 0 80 15"> - <rect width="80" height="15" fill="#666"/> - <rect x="1" y="1" width="78" height="13" fill="#fff"/> - <rect x="16" y="2" width="62" height="11" fill="#666"/> - <g fill="#fff"> - <path d="m27 5v1h2v-1zm2 1v3h1v-3zm0 3h-2v1h2zm-2 0v-3h-1v3z"/> - <path d="m20 5h1v1h1v1h1v1h1v-3h1v5h-1v-1h-1v-1h-1v-1h-1v3h-1z"/> - <rect x="-1" y="259.03" width="78" height="13"/> - <path d="m70 5v5h3v-1h-2v-3h2v-1zm3 1v3h1v-3z"/> - <path d="m66 5h3v1h-2v1h2v1h-2v1h2v1h-3z"/> - <circle cx="7.5" cy="7.5" r="5.5" stroke="#666"/> - </g> - <g fill="#666"> - <rect transform="rotate(-45)" x="-6" y="10" width="11" height="1"/> - <path d="m9 5h3v1h-3v1h2v1h1v1h-1v1h-3v-1h3v-1h-2v-1h-1v-1h1"/> - <path d="m6 5v4h1v-4zm0 4h-2v1h2zm-2 0v-1h-1v1z"/> - </g> - <g fill="#fff"> - <path d="m40 5h3v1h-3v1h2v1h1v1h-1v1h-3v-1h3v-1h-2v-1h-1v-1h1"/> - <path d="m37 5v4h1v-4zm0 4h-2v1h2zm-2 0v-1h-1v1z"/> - <path d="m57 5h3v1h-2v1h2v1h-2v1h2v1h-3z"/> - <path d="m61 5v5h3v-1h-2v-3h2v-1zm3 1v3h1v-3z"/> - <path d="m53 5h3v1h-2v1h2v1h-2v1h2v1h-3z"/> - <path d="m47 5h1v1h1v1h1v1h1v-3h1v5h-1v-1h-1v-1h-1v-1h-1v3h-1z"/> - </g> - </symbol> -</svg> - - </body> -</html>
D
deploy/www/index.php
@@ -1,122 +0,0 @@
-<?php - -$redirects = array( -); - -$redirects_re = array( - '^(?:sysadmin|it|linux-tech-coding|sysadmin-blog)\/?(page.*)?$' => 'category/article/', - '^(?:fotography|photoblog)\/?(page.*)?$' => '/category/photo/$1', - '^blog\/?(page.*)?$' => '/category/journal/', - '^blips\/?(page.*)?$' => '/category/note/$1', - '^r\/?(page.*)?$' => '/category/note/$1', - '^(?:linux-tech-coding|it|sysadmin-blog|sysadmin|fotography|blips|blog|photoblog|article|journal|photo|note|r)\/((?!page).*)' => '/$1', -); - -$gone = array( -); - -$gone_re = array( - '^cache\/.*$', - '^tag\/.*$', - '^comment\/.*$', - '^files\/.*$', - '^wp-content\/.*$', - '^broadcast\/wp-ffpc\.message$', -); - -function redirect_to($uri) { - header('HTTP/1.1 301 Moved Permanently'); - if (preg_match("/^https?/", $uri)) - $target = $uri; - else - $target = 'https://petermolnar.net/'. trim($uri, '/') . '/'; - header("Location: ". $target); - exit; -} - -function gone($uri) { - header('HTTP/1.1 410 Gone'); - die('<!DOCTYPE html> -<html lang="en"> - <head> - <meta charset="utf-8"/> - <meta content="width=device-width,initial-scale=1,minimum-scale=1" name="viewport"/> - <title>Gone</title> - </head> - <body> -<h1><center>This content was deleted.</center></h1> -<hr> -<p><center>'.$uri.'</center></p> - </body> -</html>'); -} - -function notfound($uri) { - header('HTTP/1.0 404 Not Found'); - die('<!DOCTYPE html> -<html lang="en"> - <head> - <meta charset="utf-8"/> - <meta content="width=device-width,initial-scale=1,minimum-scale=1" name="viewport"/> - <title>Not found</title> - </head> - <body> - -<h1><center>This was not found.</center></h1> -<h2><center>Please search for it instead.</center></h2> -<p> - <center> - <form action="/search.php" class="search-form" method="get" role="search"> - <label for="search">Search</label> - <input id="q" name="q" placeholder="search..." title="Search for:" type="search" value=""/> - <input type="submit" value="OK"/> - </form> - </center> -</p> -<hr> -<p><center>'.$uri.'</center></p> - </body> -</html>'); -} - -function maybe_redirect($uri) { - if (file_exists("./$uri/index.html")) { - redirect_to($uri); - } -} - -$uri = filter_var($_SERVER['REQUEST_URI'], FILTER_SANITIZE_URL); -$uri = str_replace('../', '', $uri); -$uri = str_replace('/feed/', '', $uri); -$uri = str_replace('/atom/', '', $uri); -$uri = trim($uri, '/'); - -foreach ($gone_re as $pattern) { - if (preg_match(sprintf('/%s/', $pattern), $uri)) { - gone($uri); - } -} - -foreach ($redirects_re as $pattern => $target) { - $maybe = preg_match(sprintf('/%s/i', $pattern), $uri, $matches); - if ($maybe) { - $target = str_replace('$1', $matches[1], $target); - redirect_to($target); - } -} - -if (isset($gone[$uri])) { - gone($uri); -} -elseif (isset($redirects[$uri])) { - redirect_to($redirects[$uri]); -} -elseif (preg_match('/^\.well-known\/(host-meta|webfinger).*$/', $uri)) { - redirect_to("https://fed.brid.gy/{$uri}"); -} -elseif (strstr($uri, '_')) { - maybe_redirect(str_replace('_', '-', $uri)); -} -else { - notfound($uri); -}
D
deploy/www/micropub.php
@@ -1,114 +0,0 @@
-<?php - -function _syslog($msg) { - $trace = debug_backtrace(); - $caller = $trace[1]; - $parent = $caller['function']; - if (isset($caller['class'])) - $parent = $caller['class'] . '::' . $parent; - - return error_log( "{$parent}: {$msg}" ); -} - -function unauthorized($text) { - header('HTTP/1.1 401 Unauthorized'); - die($text); -} - -function badrequest($text) { - header('HTTP/1.1 400 Bad Request'); - die($text); -} - -function httpok($text) { - header('HTTP/1.1 200 OK'); - echo($text); - exit(0); -} - -function accepted() { - header('HTTP/1.1 202 Accepted'); - #header('Location: https://petermolnar.net'); - exit(0); -} - -if (!empty($_GET)) { - if ( ! isset($_GET['q']) ) { - badrequest('please POST a micropub request'); - } - - if ( isset($_GET['q']['config']) ) { - httpok(json_encode(array('tags' => array()))); - } - - if(isset($_GET['q']['syndicate-to'])) { - httpok(json_encode(array('syndicate-to' => array()))); - } - - badrequest('please POST a micropub request'); -} - -$raw = file_get_contents("php://input"); -print_r($raw); -try { - $decoded = json_decode($raw, true); -} catch (Exception $e) { - _syslog('failed to decode JSON, trying decoding form data'); - try { - parse_str($raw, $decoded); - } - catch (Exception $e) { - _syslog('failed to decoding form data as well'); - badrequest('invalid POST contents'); - } -} -print_r($decoded); - -$token = ''; -if ( isset($decoded['access_token']) ) { - $token = $decoded['access_token']; - unset($decoded['access_token']); -} -elseif ( isset($_SERVER['HTTP_AUTHORIZATION']) ) { - $token = trim(str_replace('Bearer', '', $_SERVER['HTTP_AUTHORIZATION'])); -} - -if (empty($token)) { - unauthorized('missing token'); -} - -$request = curl_init(); -curl_setopt($request, CURLOPT_URL, 'https://tokens.indieauth.com/token'); -curl_setopt($request, CURLOPT_HTTPHEADER, array( - 'Content-Type: application/x-www-form-urlencoded', - sprintf('Authorization: Bearer %s', $token) -)); -curl_setopt($request, CURLOPT_RETURNTRANSFER, 1); -$response = curl_exec($request); -curl_close($request); -parse_str(urldecode($response), $verification); -if (! isset($verification['scope']) ) { - unauthorized('missing "scope"'); -} -if (! isset($verification['me']) ) { - unauthorized('missing "me"'); -} -if ( ! stristr($verification['me'], 'https://petermolnar.net') ) { - unauthorized('wrong domain'); -} -if ( ! stristr($verification['scope'], 'create') ) { - unauthorized('invalid scope'); -} - -$user = posix_getpwuid(posix_getuid()); -$now = time(); -$decoded['mtime'] = $now; -$fname = sprintf( - '%s/%s/%s.json', - $user['dir'], - 'queue', - microtime(true) -); - -file_put_contents($fname, json_encode($decoded, JSON_PRETTY_PRINT)); -accepted();
D
deploy/www/search.php
@@ -1,1078 +0,0 @@
-<!DOCTYPE html> -<html prefix="og: http://ogp.me/ns# article: http://ogp.me/ns/article#"> -<head> - <!--[if lt IE 9]> - <script src="https://petermolnar.net/html5shiv-printshiv.js"></script> - <![endif]--> - <title>Search results for: <?php echo($_GET['q']); ?></title> - <meta charset="UTF-8" /> - <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1" /> - <meta name="author" content="Peter Molnar (mail@petermolnar.net)" /> - <link rel="icon" href="https://petermolnar.net/favicon.ico" /> - <!-- <base href="" /> --> - <link rel="webmention" href="https://webmention.io/petermolnar.net/webmention" /> - <link rel="pingback" href="https://webmention.io/petermolnar.net/xmlrpc" /> - <link rel="hub" href="https://petermolnar.superfeedr.com/" /> - <link rel="authorization_endpoint" href="https://indieauth.com/auth" /> - <link rel="token_endpoint" href="https://tokens.indieauth.com/token" /> - <link rel="micropub" href="https://petermolnar.net/micropub.php" /> - <style media="all"> -* { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - font-family: "Courier", monospace; - margin: 0; - padding: 0; - line-height: 1.5em; -} - -body { - color: #eee; - background-color: #222; -} - -body > header, -body > footer { - background-color: #111; - text-align: center; - padding: 0.6em 0; -} - -body > main, -body > nav, -body > header > section, -body > footer > section { - max-width: 88ch; - margin: 0 auto; - padding: 0 1em; -} - -hr { - border: none; -} - -dt { - font-weight: bold; -} - -h1, h2, h3, h4, h5, h6, hr, -dt { - margin: 2em 0 0.6em 0; -} - -main p { - margin: 1em 0; -} - -h1 { - border-bottom: 4px double #999; - text-transform:uppercase; - text-align: center; - padding-bottom: 1em; -} - -article > footer > dl > dt, -h2 { - border-bottom: 1px solid #999; -} - -article > footer > dl > dt, -h3, -hr { - border-bottom: 1px dotted #999; -} - -h4 { - border-bottom: 1px dashed #999; -} - -svg { - transform: rotate(0deg); - fill: currentColor; - vertical-align:middle; -} - -body > svg { - display: none; -} - -a { - color: #f90; - text-decoration: none; - border-bottom: 1px solid transparent; -} - -a:hover { - color: #eee; - border-bottom: 1px solid #eee; -} - -sup { - vertical-align: unset; -} - -sup:before { - content: '['; -} - -sup:after { - content: ']'; -} - -input, button, label { - -webkit-appearance:none; -} - -nav > ul { - list-style-type: none; -} - -nav > ul > li { - display: inline-block; -} - -body > header form { - display: inline-block; - padding-left: 0.6em; - margin-top: 1em; -} - -body > header a { - font-weight: bold; - border-bottom: 3px solid transparent; - padding-bottom: 0.1em; -} - -body > header a:hover, -body > header a.active { - border-bottom: 3px solid #eee; - color: #eee; -} - -body > header a svg { - display: block; - margin: 0.1em auto; -} - -blockquote { - border-left: 3px solid #999; - margin: 2em 0 2em 1em; - padding: 0 0 0 1em; - color: #aaa; -} - -input { - width: 8em; - padding: 0 0.3em; - border: none; - background-color: #333; - color: #ccc; -} - -.hidden, .theme, -.theme input, input[type=submit] { - display: none; -} - -.theme input + label { - color: #f90; - cursor: pointer; - border-bottom: 3px solid transparent; - padding-bottom: 0.1em; -} - -.theme input:hover + label, -.theme input:checked + label { - border-bottom: 3px solid #eee; - color: #eee; -} - -body > footer { - margin-top: 2em; -} - -body > footer > section > * { - margin-bottom: 0.6em; -} - -body > footer .email span { - display: none; -} - -video, -figure img { - display: block; - max-height: 98vh; - max-width: 100%; - width:auto; - height:auto; - margin: 0 auto; - border: 1px solid #000; -} - -figure { - margin: 2em 0; -} - -figcaption { - margin-top: 1em; -} - -figcaption > dl { - margin-top: 1em; - color: #666; -} - -figcaption > dl * { - display: inline-block; -} - -figcaption > dl dt { - display: none; -} - -figcaption > dl dd { - margin: 0 0.3em; -} - -.vcard img { - height: 1em; -} - -code, pre { - color: #3c3; - border: 1px solid #666; - direction: ltr; - word-break: break-all; - word-wrap: break-word; - white-space: pre-wrap; - overflow:initial; -} - -pre { - padding: 0.6em; - position: relative; - margin: 1em 0; -} - -code { - padding: 0.05em 0.2em; -} - -pre > code { - border: none; -} - -pre > code::before { - content: attr(lang); - float: right; - color: #999; - border-left: 1px solid #666; - border-bottom: 1px solid #666; - padding: 0 0.3em; - margin: -0.6em -0.6em 0 0; -} - -table { - border-collapse: collapse; - width: 100%; -} - -td, th { - padding: 0.3em; - border: 1px solid #777; - text-align:left; -} - -th { - font-weight: bold; -} - -th, tr:nth-child(even) { - background-color: rgba(255, 255, 255, .1); -} - -main > header > p { - text-align: center; -} - -article > header { - border-bottom: 4px double #999; - margin-bottom: 2em; -} - -.h-feed article > header { - border: none; - margin: 0; -} - -main ul { - margin-left: 2em; -} - -main ol { - margin-left: 3em; -} - -li p { - margin: 0; -} - -.footnotes hr:before { - content: 'Links'; - color: #ccc; - font-weight: bold; -} - -.comments .u-url, -.footnotes a { - display: inline-block; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - vertical-align: top; - max-width: 96%; -} - -.footnote-back { - margin: 0 0 0 0.6em; -} - -main > section > article { - padding-left: 1em; -} - -body > nav { - text-align: center; - margin-top: 2em; -} - -body > nav > ul > li { - margin: 0 0.6em; -} - -@media all and (min-width: 58em) { - body > header > section { - text-align: left; - display: flex; - justify-content:space-between; - } - - body > header a svg { - display: inline-block; - } - - body > header form { - margin-top: 0; - } -} - -body > img { - position: fixed; - bottom: 0; - right: 0; - width: 10em; - height: auto; -} </style> - <style id="css_alt" media="speech"> -body { - color: #000; - background-color: #eee; -} - -a { - color: #3173b4; -} - -a:hover { - color: #014384; - border-bottom: 1px solid #014384; -} - -code, -pre { - color: #006400; -} - -button svg { - transform: rotate(180deg); - transition: all 0.2s; -} - -blockquote { - color: #555; -} - -td, th { - border: 1px solid #111; -} - -th, tr:nth-child(even) { - background-color: rgba(0, 0, 0, .1); -} - -pre > code::before { - color: #444; -} - -.footnotes hr::before { - color: #222; -} - -body > header, -body > footer{ - background-color: #333; - color: #ccc; -} - -body > header a, -body > footer a, -.theme input + label { - color: #71B3F4; -} - -input { - background-color: #222; -} - -body > footer a:hover { - color: #fff; - border-bottom: 1px solid #fff; -} </style> - <style media="print"> - -* { - background-color: #fff !important; - color: #222; -} - -html, body { - font-size: 10pt !important; - font-family: Helvetica, sans-serif !important; -} - -@page { - margin: 0.6in 0.5in; -} - -.limit, -body > section { - max-width: 100% !important; - margin: 0 !important; -} - -h1, h2, h3, h4, h5, h6 { - page-break-after: avoid; -} - -h3, -a, -.footnotes a, -.h-feed .h-entry, -code, -pre { - border: none; -} - -p, li, blockquote, figure, .footnotes { - page-break-inside: avoid !important; -} - -a { - color: #000; -} - -td, th { - border: 1pt solid #666; -} - -.footnotes a { - display: block; - overflow: visible; - white-space: normal; - overflow:visible !important; - text-overflow:initial !important; -} - -.footnote-back { - display: none; -} - -body > header, -body > footer, -video, -audio, -.footnote-backref, -.footnote-back, -.encourage, -.noprint { - display:none !important; -} - -code, pre { - max-width: 96%; - page-break-inside: auto; - font-family: "Courier", "Courier New", monospace !important; -} - -pre { - border: 1pt dotted #666; - padding: 0.6em; -} - -.adaptimg { - max-height: 35vh; - max-width: 90vw; - outline: none; - border: 1px solid #000; -} - -.h-feed .h-entry { - page-break-after: always; -} </style> -</head> - -<body> - - -<header> - <section> - <nav> - <ul> - <li> - <a title="home" href="./index.html" > - <svg width="16" height="16"> - <use xlink:href="#icon-home" /> - </svg> - home - </a> - </li> - <li> - <a title="photos" href="category/photo/index.html" > - <svg width="16" height="16"> - <use xlink:href="#icon-photo" /> - </svg> - photos - </a> - </li> - <li> - <a title="journal" href="category/journal/index.html" > - <svg width="16" height="16"> - <use xlink:href="#icon-journal" /> - </svg> - journal - </a> - </li> - <li> - <a title="IT" href="category/article/index.html" > - <svg width="16" height="16"> - <use xlink:href="#icon-article" /> - </svg> - IT - </a> - </li> - <li> - <a title="notes" href="category/note/index.html" > - <svg width="16" height="16"> - <use xlink:href="#icon-note" /> - </svg> - notes - </a> - </li> - </ul> - </nav> - - <div> - <form class="theme" aria-hidden="true"> - <svg width="16" height="16"> - <use xlink:href="#icon-contrast"></use> - </svg> - <span> - <input name="colorscheme" value="dark" id="darkscheme" type="radio"> - <label for="darkscheme">dark</label> - </span> - <span> - <input name="colorscheme" value="light" id="lightscheme" type="radio"> - <label for="lightscheme">light</label> - </span> - </form> - <form role="search" method="get" action="search.php"> - <label for="qsub"> - <input type="submit" value="search" id="qsub" name="qsub" /> - <svg width="16" height="16"> - <use xlink:href="#icon-search"></use> - </svg> - </label> - <input type="search" placeholder="search..." value="" name="q" id="q" title="Search for:" /> - </form> - </div> - </section> -</header> - -<?php -function relurl($from, $to) { - $from = explode('/', $from); - $to = explode('/', $to); - $relpath = ''; - - $i = 0; - while (isset($from[$i]) && isset($to[$i])) { - if ($from[$i] != $to[$i]) break; - $i++; - } - $j = count( $from ) - 1; - while ( $i <= $j ) { - if ( !empty($from[$j]) ) $relpath .= '../'; - $j--; - } - while ( isset($to[$i]) ) { - if ( !empty($to[$i]) ) $relpath .= $to[$i].'/'; - $i++; - } - return substr($relpath, 0, -1); -} -?> -<?php const baseurl = 'https://petermolnar.net'; ?> -<main> - <header> - <h1>Search results for: <?php echo($_GET['q']); ?></h1> - </header> -<?php -$db = new SQLite3('./search.sqlite', SQLITE3_OPEN_READONLY); -$q = str_replace('-', '+', $_GET['q']); -$sql = $db->prepare(" - SELECT - url, category, title, snippet(data, '', '', '[...]', 5, 24) - FROM - data - WHERE - data MATCH :q - ORDER BY - category -"); -$sql->bindValue(':q', $q); -$results = $sql->execute(); - -printf("<dl>"); -while ($row = $results->fetchArray(SQLITE3_ASSOC)) { - printf('<dt><a href="%s">%s</a></dt><dd>%s</dd>', relurl(baseurl, $row['url']), $row['title'], $row["snippet(data, '', '', '[...]', 5, 24)"]); - -} -printf("</dl>"); -?> -</main> - - -<footer class="p-author h-card vcard"> - <section> - <p> - <a href="https://creativecommons.org/">CC</a>, - 1999-2019, - <img class="u-photo photo" src="favicon.jpg" alt="Photo of Peter Molnar" /> - <a class="p-name u-url fn url" href="https://petermolnar.net/" rel="me"> Peter Molnar</a> - <a class="u-email email" rel="me" href="mailto:mail@petermolnar.net"> - <svg width="16" height="16"> - <use xlink:href="#icon-mail"></use> - </svg> - mail@petermolnar.net - </a> - </p> - <nav> - <ul> - <li> - <a href="https://petermolnar.net/follow/"> - <svg width="16" height="16"><use xlink:href="#icon-FollowAction" /></svg> - follow - </a> - </li> - <li> - <a href="https://petermolnar.net/following.opml"> - <svg width="16" height="16"><use xlink:href="#icon-following" /></svg> - followings - </a> - </li> - <li> - <a rel="me" href="https://github.com/petermolnar"> - <svg width="16" height="16"><use xlink:href="#icon-github" /></svg> - github - </a> - </li> - <li> - <a href="https://petermolnar.net/cv.html" class="u-url"> - <svg width="16" height="16"><use xlink:href="#icon-resume" /></svg> - resume - </a> - </li> - <li> - </li> - <li> - </li> - <li> - </li> - </ul> - </nav> - <nav> - <a href="https://xn--sr8hvo.ws/%F0%9F%87%BB%F0%9F%87%AE%F0%9F%93%A2/previous">←</a> - Member of <a href="https://xn--sr8hvo.ws">IndieWeb Webring</a> - <a href="https://xn--sr8hvo.ws/%F0%9F%87%BB%F0%9F%87%AE%F0%9F%93%A2/next">→</a> - </nav> - </section> - <section> - <nav> - <ul> - <li> - <a href="https://indieweb.org/"> - <svg width="80" height="15"> - <use xlink:href="#button-indieweb"/> - </svg> - </a> - </li> - <li> - <a href="http://microformats.org/"> - <svg width="80" height="15"> - <use xlink:href="#button-microformats"/> - </svg> - </a> - </li> - <li> - <a href="https://www.w3.org/TR/webmention/"> - <svg width="80" height="15"> - <use xlink:href="#button-webmention"/> - </svg> - </a> - </li> - <li> - <a href="https://spdx.org/licenses/CC-BY-NC-ND-4.0.html"> - <svg width="80" height="15"> - <use xlink:href="#button-cc"/> - </svg> - </a> - </li> - <li> - <svg width="80" height="15"> - <use xlink:href="#button-nojs"/> - </svg> - </li> - </ul> - </nav> - </section> -</footer> - -<script> -var DEFAULT_THEME = 'dark'; -var ALT_THEME = 'light'; -var STORAGE_KEY = 'theme'; -var colorscheme = document.getElementsByName('colorscheme'); - -function indicateTheme(mode) { - for(var i = colorscheme.length; i--; ) { - if(colorscheme[i].value == mode) { - colorscheme[i].checked = true; - } - } -} - -function applyTheme(mode) { - var st = document.getElementById('css_alt'); - if (mode == ALT_THEME) { - st.setAttribute('media', 'all'); - } - else { - st.setAttribute('media', 'speech'); - } -} - -function setTheme(e) { - var mode = e.target.value; - var mql = window.matchMedia('(prefers-color-scheme: ' + ALT_THEME + ')'); - /* user wants == mql match => remove storage */ - if ((mode == DEFAULT_THEME && !mql.matches) || (mode == ALT_THEME && mql.matches)) { - localStorage.removeItem(STORAGE_KEY); - } - else { - if(confirm("I\'ll need to store your choice in your browser, in a place called localStorage.\n\nAre you OK with this?")) { - localStorage.setItem(STORAGE_KEY, mode); - } - } - autoTheme(mql); -} - -function autoTheme(e) { - var mode = DEFAULT_THEME; - try { - var current = localStorage.getItem(STORAGE_KEY); - } catch(e) { - var current = DEFAULT_THEME; - } - if ( current != null) { - mode = current; - } - else if (e.matches) { - mode = ALT_THEME; - } - applyTheme(mode); - indicateTheme(mode); -} - -var mql = window.matchMedia('(prefers-color-scheme: ' + ALT_THEME + ')'); -autoTheme(mql); -mql.addListener(autoTheme); - -var test = 'ping'; -try { - localStorage.setItem(test, test); - localStorage.removeItem(test); - for(var i = colorscheme.length; i--; ) { - colorscheme[i].onclick = setTheme; - } - var themeforms = document.getElementsByClassName(STORAGE_KEY); - for(var i = themeforms.length; i--; ) { - themeforms[i].style.display = 'inline-block'; - } -} catch(e) { - console.log('localStorage is not available, manual theme switching is disabled'); -}function kcl(cb) { - var input = ''; - var key = '38384040373937396665'; - document.addEventListener('keydown', function (e) { - input += ("" + e.keyCode); - if (input === key) { - return cb(); - } - if (!key.indexOf(input)) return; - input = ("" + e.keyCode); - }); -} - -kcl(function () { - var e = document.createElement('img'); - e.src = '/iddqd.gif'; - document.body.appendChild(e); -})</script> - -<svg aria-hidden="true" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <symbol id="icon-github" viewBox="0 0 16 16"> - <path d="M8 0.198c-4.42 0-8 3.582-8 8 0 3.535 2.292 6.533 5.47 7.59 0.4 0.075 0.547-0.172 0.547-0.385 0-0.19-0.007-0.693-0.010-1.36-2.225 0.483-2.695-1.073-2.695-1.073-0.364-0.923-0.89-1.17-0.89-1.17-0.725-0.496 0.056-0.486 0.056-0.486 0.803 0.056 1.225 0.824 1.225 0.824 0.713 1.223 1.873 0.87 2.33 0.665 0.072-0.517 0.278-0.87 0.507-1.070-1.777-0.2-3.644-0.888-3.644-3.953 0-0.873 0.31-1.587 0.823-2.147-0.090-0.202-0.36-1.015 0.070-2.117 0 0 0.67-0.215 2.2 0.82 0.64-0.178 1.32-0.266 2-0.27 0.68 0.004 1.36 0.092 2 0.27 1.52-1.035 2.19-0.82 2.19-0.82 0.43 1.102 0.16 1.915 0.080 2.117 0.51 0.56 0.82 1.273 0.82 2.147 0 3.073-1.87 3.75-3.65 3.947 0.28 0.24 0.54 0.731 0.54 1.48 0 1.071-0.010 1.931-0.010 2.191 0 0.21 0.14 0.46 0.55 0.38 3.201-1.049 5.491-4.049 5.491-7.579 0-4.418-3.582-8-8-8z"></path> - </symbol> - <symbol id="icon-paypal" viewBox="0 0 16 16"> - <path d="M4.605 16h-2.069c-0.443 0-0.724-0.353-0.624-0.787l0.099-0.449h1.381c0.444 0 0.891-0.355 0.988-0.788l0.709-3.061c0.1-0.432 0.544-0.787 0.987-0.787h0.589c2.526 0 4.489-0.519 5.893-1.56s2.107-2.4 2.107-4.090c0-0.75-0.13-1.37-0.392-1.859 0-0.011-0.011-0.021-0.011-0.031l0.090 0.050c0.5 0.31 0.88 0.709 1.141 1.209 0.269 0.5 0.399 1.12 0.399 1.861 0 1.69-0.699 3.049-2.109 4.090-1.4 1.030-3.37 1.549-5.889 1.549h-0.6c-0.44 0-0.889 0.35-0.989 0.791l-0.71 3.070c-0.099 0.43-0.54 0.78-0.98 0.78l-0.008 0.012zM2.821 14.203h-2.070c-0.442 0-0.723-0.353-0.624-0.787l2.915-12.629c0.101-0.435 0.543-0.788 0.987-0.788h4.31c0.93 0 1.739 0.065 2.432 0.193 0.69 0.126 1.28 0.346 1.789 0.66 0.491 0.31 0.881 0.715 1.131 1.212 0.259 0.499 0.389 1.12 0.389 1.865 0 1.69-0.701 3.049-2.109 4.079-1.4 1.041-3.371 1.551-5.891 1.551h-0.589c-0.44 0-0.885 0.349-0.985 0.779l-0.707 3.059c-0.099 0.431-0.545 0.781-0.99 0.781l0.011 0.024zM7.785 2.624h-0.676c-0.444 0-0.888 0.353-0.987 0.785l-0.62 2.68c-0.1 0.432 0.18 0.786 0.62 0.786h0.511c1.109 0 1.98-0.229 2.6-0.681 0.619-0.457 0.93-1.103 0.93-1.941 0-0.553-0.201-0.963-0.6-1.227-0.4-0.269-1-0.403-1.791-0.403l0.013 0.001z"></path> - </symbol> - <symbol id="icon-monzo" viewBox="0 0 16 16"> - <path d="M14.5 2h-13c-0.825 0-1.5 0.675-1.5 1.5v9c0 0.825 0.675 1.5 1.5 1.5h13c0.825 0 1.5-0.675 1.5-1.5v-9c0-0.825-0.675-1.5-1.5-1.5zM1.5 3h13c0.271 0 0.5 0.229 0.5 0.5v1.5h-14v-1.5c0-0.271 0.229-0.5 0.5-0.5zM14.5 13h-13c-0.271 0-0.5-0.229-0.5-0.5v-4.5h14v4.5c0 0.271-0.229 0.5-0.5 0.5zM2 10h1v2h-1zM4 10h1v2h-1zM6 10h1v2h-1z"></path> - </symbol> - <symbol id="icon-lens" viewBox="0 0 16 16"> - <path d="M8 4c-2.209 0-4 1.791-4 4s1.791 4 4 4 4-1.791 4-4-1.791-4-4-4zM8 11c-1.657 0-3-1.344-3-3s1.343-3 3-3 3 1.343 3 3-1.344 3-3 3zM8 0c-4.418 0-8 3.582-8 8s3.582 8 8 8 8-3.582 8-8-3.582-8-8-8zM8 14c-3.313 0-6-2.687-6-6s2.687-6 6-6 6 2.687 6 6-2.687 6-6 6zM8 6.5c-0.829 0-1.5 0.671-1.5 1.5s0.671 1.5 1.5 1.5 1.5-0.671 1.5-1.5-0.671-1.5-1.5-1.5z"></path> - </symbol> - <symbol id="icon-focallength" viewBox="0 0 16 16"> - <path d="M6 9h-3v2l-3-3 3-3v2h3zM10 7h3v-2l3 3-3 3v-2h-3z"></path> - </symbol> - <symbol id="icon-aperture" viewBox="0 0 16 16"> - <path d="M10.586 6.99l2.845-4.832c-1.428-1.329-3.326-2.158-5.431-2.158-0.499 0-0.982 0.059-1.456 0.146l4.042 6.843zM9.976 10h5.74c0.166-0.643 0.284-1.305 0.284-2 0-1.937-0.715-3.688-1.861-5.072l-4.162 7.072zM8.25 5l-2.704-4.576c-2.25 0.73-4.069 2.399-4.952 4.576h7.656zM7.816 11l2.696 4.559c2.224-0.742 4.020-2.4 4.895-4.559h-7.59zM6.053 6h-5.769c-0.167 0.643-0.283 1.304-0.283 2 0 1.945 0.722 3.705 1.878 5.094l4.175-7.094zM5.459 8.98l-2.872 4.879c1.426 1.316 3.317 2.14 5.413 2.14 0.521 0 1.027-0.059 1.52-0.152l-4.061-6.867z"></path> - </symbol> - <symbol id="icon-mail" viewBox="0 0 16 16"> - <path d="M16 6.339v7.089c0 0.786-0.643 1.429-1.429 1.429h-13.143c-0.786 0-1.429-0.643-1.429-1.429v-7.089c0.268 0.295 0.571 0.554 0.902 0.777 1.482 1.009 2.982 2.018 4.438 3.080 0.75 0.554 1.679 1.232 2.652 1.232h0.018c0.973 0 1.902-0.679 2.652-1.232 1.455-1.054 2.955-2.071 4.446-3.080 0.321-0.223 0.625-0.482 0.893-0.777zM16 3.714c0 1-0.741 1.902-1.527 2.446-1.393 0.964-2.795 1.929-4.179 2.902-0.58 0.402-1.563 1.223-2.286 1.223h-0.018c-0.723 0-1.705-0.821-2.286-1.223-1.384-0.973-2.786-1.938-4.17-2.902-0.634-0.429-1.536-1.438-1.536-2.25 0-0.875 0.473-1.625 1.429-1.625h13.143c0.777 0 1.429 0.643 1.429 1.429z"></path> - </symbol> - <symbol id="icon-reply" viewBox="0 0 16 16"> - <path d="M7 12.119v3.881l-6-6 6-6v3.966c6.98 0.164 6.681-4.747 4.904-7.966 4.386 4.741 3.455 12.337-4.904 12.119z"></path> - </symbol> - <symbol id="icon-link" viewBox="0 0 16 16"> - <path d="M6.879 9.934c-0.208 0-0.416-0.079-0.575-0.238-1.486-1.486-1.486-3.905 0-5.392l3-3c0.72-0.72 1.678-1.117 2.696-1.117s1.976 0.397 2.696 1.117c1.486 1.487 1.486 3.905 0 5.392l-1.371 1.371c-0.317 0.317-0.832 0.317-1.149 0s-0.317-0.832 0-1.149l1.371-1.371c0.853-0.853 0.853-2.241 0-3.094-0.413-0.413-0.963-0.641-1.547-0.641s-1.134 0.228-1.547 0.641l-3 3c-0.853 0.853-0.853 2.241 0 3.094 0.317 0.317 0.317 0.832 0 1.149-0.159 0.159-0.367 0.238-0.575 0.238z"></path> - <path d="M4 15.813c-1.018 0-1.976-0.397-2.696-1.117-1.486-1.486-1.486-3.905 0-5.392l1.371-1.371c0.317-0.317 0.832-0.317 1.149 0s0.317 0.832 0 1.149l-1.371 1.371c-0.853 0.853-0.853 2.241 0 3.094 0.413 0.413 0.962 0.641 1.547 0.641s1.134-0.228 1.547-0.641l3-3c0.853-0.853 0.853-2.241 0-3.094-0.317-0.317-0.317-0.832 0-1.149s0.832-0.317 1.149 0c1.486 1.486 1.486 3.905 0 5.392l-3 3c-0.72 0.72-1.678 1.117-2.696 1.117z"></path> - </symbol> - <symbol id="icon-FollowAction" viewBox="0 0 16 16"> - <path d="M14.5 0h-13c-0.825 0-1.5 0.675-1.5 1.5v13c0 0.825 0.675 1.5 1.5 1.5h13c0.825 0 1.5-0.675 1.5-1.5v-13c0-0.825-0.675-1.5-1.5-1.5zM4.359 12.988c-0.75 0-1.359-0.603-1.359-1.353 0-0.744 0.609-1.356 1.359-1.356 0.753 0 1.359 0.613 1.359 1.356 0 0.75-0.609 1.353-1.359 1.353zM7.772 13c0-1.278-0.497-2.481-1.397-3.381-0.903-0.903-2.1-1.4-3.375-1.4v-1.956c3.713 0 6.738 3.022 6.738 6.737h-1.966zM11.244 13c0-4.547-3.697-8.25-8.241-8.25v-1.956c5.625 0 10.203 4.581 10.203 10.206h-1.963z"></path> - </symbol> - <symbol id="icon-home" viewBox="0 0 16 16"> - <path d="M16 9.226l-8-6.21-8 6.21v-2.532l8-6.21 8 6.21zM14 9v6h-4v-4h-4v4h-4v-6l6-4.5z"></path> - </symbol> - <symbol id="icon-note" viewBox="0 0 16 16"> - <path d="M14.341 3.579c-0.347-0.473-0.831-1.027-1.362-1.558s-1.085-1.015-1.558-1.362c-0.806-0.591-1.197-0.659-1.421-0.659h-7.75c-0.689 0-1.25 0.561-1.25 1.25v13.5c0 0.689 0.561 1.25 1.25 1.25h11.5c0.689 0 1.25-0.561 1.25-1.25v-9.75c0-0.224-0.068-0.615-0.659-1.421zM12.271 2.729c0.48 0.48 0.856 0.912 1.134 1.271h-2.406v-2.405c0.359 0.278 0.792 0.654 1.271 1.134zM14 14.75c0 0.136-0.114 0.25-0.25 0.25h-11.5c-0.135 0-0.25-0.114-0.25-0.25v-13.5c0-0.135 0.115-0.25 0.25-0.25 0 0 7.749-0 7.75 0v3.5c0 0.276 0.224 0.5 0.5 0.5h3.5v9.75z"></path> - <path d="M11.5 13h-7c-0.276 0-0.5-0.224-0.5-0.5s0.224-0.5 0.5-0.5h7c0.276 0 0.5 0.224 0.5 0.5s-0.224 0.5-0.5 0.5z"></path> - <path d="M11.5 11h-7c-0.276 0-0.5-0.224-0.5-0.5s0.224-0.5 0.5-0.5h7c0.276 0 0.5 0.224 0.5 0.5s-0.224 0.5-0.5 0.5z"></path> - <path d="M11.5 9h-7c-0.276 0-0.5-0.224-0.5-0.5s0.224-0.5 0.5-0.5h7c0.276 0 0.5 0.224 0.5 0.5s-0.224 0.5-0.5 0.5z"></path> - </symbol> - <symbol id="icon-article" viewBox="0 0 16 16"> - <path d="M0 1v14h16v-14h-16zM15 14h-14v-12h14v12zM14 3h-12v10h12v-10zM7 8h-1v1h-1v1h-1v-1h1v-1h1v-1h-1v-1h-1v-1h1v1h1v1h1v1zM11 10h-3v-1h3v1z"></path> - </symbol> - <symbol id="icon-journal" viewBox="0 0 16 16"> - <path d="M13.5 0h-12c-0.825 0-1.5 0.675-1.5 1.5v13c0 0.825 0.675 1.5 1.5 1.5h12c0.825 0 1.5-0.675 1.5-1.5v-13c0-0.825-0.675-1.5-1.5-1.5zM13 14h-11v-12h11v12zM4 7h7v1h-7zM4 9h7v1h-7zM4 11h7v1h-7zM4 5h7v1h-7z"></path> - </symbol> - <symbol id="icon-photo" viewBox="0 0 18 16"> - <path d="M17 2h-1v-1c0-0.55-0.45-1-1-1h-14c-0.55 0-1 0.45-1 1v12c0 0.55 0.45 1 1 1h1v1c0 0.55 0.45 1 1 1h14c0.55 0 1-0.45 1-1v-12c0-0.55-0.45-1-1-1zM2 3v10h-0.998c-0.001-0.001-0.001-0.001-0.002-0.002v-11.996c0.001-0.001 0.001-0.001 0.002-0.002h13.996c0.001 0.001 0.001 0.001 0.002 0.002v0.998h-12c-0.55 0-1 0.45-1 1v0zM17 14.998c-0.001 0.001-0.001 0.001-0.002 0.002h-13.996c-0.001-0.001-0.001-0.001-0.002-0.002v-11.996c0.001-0.001 0.001-0.001 0.002-0.002h13.996c0.001 0.001 0.001 0.001 0.002 0.002v11.996z"></path> - <path d="M15 5.5c0 0.828-0.672 1.5-1.5 1.5s-1.5-0.672-1.5-1.5 0.672-1.5 1.5-1.5 1.5 0.672 1.5 1.5z"></path> - <path d="M16 14h-12v-2l3.5-6 4 5h1l3.5-3z"></path> - </symbol> - <symbol id="icon-contrast" viewBox="0 0 16 16"> - <path d="M8 0c-4.418 0-8 3.582-8 8s3.582 8 8 8 8-3.582 8-8-3.582-8-8-8zM2 8c0-3.314 2.686-6 6-6v12c-3.314 0-6-2.686-6-6z"></path> - </symbol> - <symbol id="icon-sensitivity" viewBox="0 0 16 16"> - <path d="M8 4c-2.209 0-4 1.791-4 4s1.791 4 4 4 4-1.791 4-4-1.791-4-4-4zM8 10.5v-5c1.379 0 2.5 1.122 2.5 2.5s-1.121 2.5-2.5 2.5zM8 13c0.552 0 1 0.448 1 1v1c0 0.552-0.448 1-1 1s-1-0.448-1-1v-1c0-0.552 0.448-1 1-1zM8 3c-0.552 0-1-0.448-1-1v-1c0-0.552 0.448-1 1-1s1 0.448 1 1v1c0 0.552-0.448 1-1 1zM15 7c0.552 0 1 0.448 1 1s-0.448 1-1 1h-1c-0.552 0-1-0.448-1-1s0.448-1 1-1h1zM3 8c0 0.552-0.448 1-1 1h-1c-0.552 0-1-0.448-1-1s0.448-1 1-1h1c0.552 0 1 0.448 1 1zM12.95 11.536l0.707 0.707c0.39 0.39 0.39 1.024 0 1.414s-1.024 0.39-1.414 0l-0.707-0.707c-0.39-0.39-0.39-1.024 0-1.414s1.024-0.39 1.414 0zM3.050 4.464l-0.707-0.707c-0.391-0.391-0.391-1.024 0-1.414s1.024-0.391 1.414 0l0.707 0.707c0.391 0.391 0.391 1.024 0 1.414s-1.024 0.391-1.414 0zM12.95 4.464c-0.39 0.391-1.024 0.391-1.414 0s-0.39-1.024 0-1.414l0.707-0.707c0.39-0.391 1.024-0.391 1.414 0s0.39 1.024 0 1.414l-0.707 0.707zM3.050 11.536c0.39-0.39 1.024-0.39 1.414 0s0.391 1.024 0 1.414l-0.707 0.707c-0.391 0.39-1.024 0.39-1.414 0s-0.391-1.024 0-1.414l0.707-0.707z"></path> - </symbol> - <symbol id="icon-clock" viewBox="0 0 16 16"> - <path d="M10.293 11.707l-3.293-3.293v-4.414h2v3.586l2.707 2.707zM8 0c-4.418 0-8 3.582-8 8s3.582 8 8 8 8-3.582 8-8-3.582-8-8-8zM8 14c-3.314 0-6-2.686-6-6s2.686-6 6-6c3.314 0 6 2.686 6 6s-2.686 6-6 6z"></path> - </symbol> - <symbol id="icon-camera" viewBox="0 0 16 16"> - <path d="M4.75 9.5c0 1.795 1.455 3.25 3.25 3.25s3.25-1.455 3.25-3.25-1.455-3.25-3.25-3.25-3.25 1.455-3.25 3.25zM15 4h-3.5c-0.25-1-0.5-2-1.5-2h-4c-1 0-1.25 1-1.5 2h-3.5c-0.55 0-1 0.45-1 1v9c0 0.55 0.45 1 1 1h14c0.55 0 1-0.45 1-1v-9c0-0.55-0.45-1-1-1zM8 13.938c-2.451 0-4.438-1.987-4.438-4.438s1.987-4.438 4.438-4.438c2.451 0 4.438 1.987 4.438 4.438s-1.987 4.438-4.438 4.438zM15 7h-2v-1h2v1z"></path> - </symbol> - <symbol id="icon-following" viewBox="0 0 16 16"> - <path d="M5.295 8c-0.929 0.027-1.768 0.429-2.366 1.143h-1.196c-0.893 0-1.732-0.429-1.732-1.42 0-0.723-0.027-3.152 1.107-3.152 0.188 0 1.116 0.759 2.321 0.759 0.411 0 0.804-0.071 1.187-0.205-0.027 0.196-0.045 0.393-0.045 0.589 0 0.813 0.259 1.616 0.723 2.286zM14.857 13.688c0 1.446-0.955 2.313-2.384 2.313h-7.804c-1.429 0-2.384-0.866-2.384-2.313 0-2.018 0.473-5.116 3.089-5.116 0.304 0 1.411 1.241 3.196 1.241s2.893-1.241 3.196-1.241c2.616 0 3.089 3.098 3.089 5.116zM5.714 2.286c0 1.259-1.027 2.286-2.286 2.286s-2.286-1.027-2.286-2.286 1.027-2.286 2.286-2.286 2.286 1.027 2.286 2.286zM12 5.714c0 1.893-1.536 3.429-3.429 3.429s-3.429-1.536-3.429-3.429 1.536-3.429 3.429-3.429 3.429 1.536 3.429 3.429zM17.143 7.723c0 0.991-0.839 1.42-1.732 1.42h-1.196c-0.598-0.714-1.438-1.116-2.366-1.143 0.464-0.67 0.723-1.473 0.723-2.286 0-0.196-0.018-0.393-0.045-0.589 0.384 0.134 0.777 0.205 1.188 0.205 1.205 0 2.134-0.759 2.321-0.759 1.134 0 1.107 2.429 1.107 3.152zM16 2.286c0 1.259-1.027 2.286-2.286 2.286s-2.286-1.027-2.286-2.286 1.027-2.286 2.286-2.286 2.286 1.027 2.286 2.286z"></path> - </symbol> - <symbol id="icon-search" viewBox="0 0 16 16"> - <path d="M15.504 13.616l-3.79-3.223c-0.392-0.353-0.811-0.514-1.149-0.499 0.895-1.048 1.435-2.407 1.435-3.893 0-3.314-2.686-6-6-6s-6 2.686-6 6 2.686 6 6 6c1.486 0 2.845-0.54 3.893-1.435-0.016 0.338 0.146 0.757 0.499 1.149l3.223 3.79c0.552 0.613 1.453 0.665 2.003 0.115s0.498-1.452-0.115-2.003zM6 10c-2.209 0-4-1.791-4-4s1.791-4 4-4 4 1.791 4 4-1.791 4-4 4z"></path> - </symbol> - <symbol id="icon-resume" viewBox="0 0 16 16"> - <path d="M13.5 0h-12c-0.825 0-1.5 0.675-1.5 1.5v13c0 0.825 0.675 1.5 1.5 1.5h12c0.825 0 1.5-0.675 1.5-1.5v-13c0-0.825-0.675-1.5-1.5-1.5zM13 14h-11v-12h11v12zM4 9h7v1h-7zM4 11h7v1h-7zM5 4.5c0-0.828 0.672-1.5 1.5-1.5s1.5 0.672 1.5 1.5c0 0.828-0.672 1.5-1.5 1.5s-1.5-0.672-1.5-1.5zM7.5 6h-2c-0.825 0-1.5 0.45-1.5 1v1h5v-1c0-0.55-0.675-1-1.5-1z"></path> - </symbol> - <symbol id="icon-bookmark" viewBox="0 0 16 16"> - <path d="M4 2v14l5-5 5 5v-14zM12 0h-10v14l1-1v-12h9z"></path> - </symbol> - <symbol id="icon-star" viewBox="0 0 16 16"> - <path d="M16 6.204l-5.528-0.803-2.472-5.009-2.472 5.009-5.528 0.803 4 3.899-0.944 5.505 4.944-2.599 4.944 2.599-0.944-5.505 4-3.899z"></path> - </symbol> - <symbol id="button-indieweb" viewBox="0 0 80 15"> - <rect width="80" height="15" fill="#666"/> - <rect x="1" y="1" width="78" height="13" fill="#fff"/> - <path d="m3 4v2h7v-2h-7zm0 3v4h7v-4h-7z" fill="#fc0d1b"/> - <path d="m11 4v2h1v-2h-1zm1 2v3h1v-3h-1zm1 0h1v3h1v2h2v-2h1v-3h1v-2h-6v2zm1 3h-1v2h1v-2z" fill="#fc5d20"/> - <polygon points="21 4 25 4 25 5 26 5 26 7 22 7 22 8 26 8 26 10 25 10 25 11 21 11 21 10 20 10 20 8 19 8 19 7 20 7 20 5 21 5" fill="#fdb02a"/> - <rect x="29" y="2" width="49" height="1" fill="#fda829"/> - <rect x="29" y="3" width="49" height="1" fill="#fd9c27"/> - <rect x="29" y="4" width="49" height="1" fill="#fd9025"/> - <rect x="29" y="5" width="49" height="1" fill="#fd8124"/> - <rect x="29" y="6" width="49" height="1" fill="#fd7222"/> - <rect x="29" y="7" width="49" height="1" fill="#fd6420"/> - <rect x="29" y="8" width="49" height="1" fill="#fc561f"/> - <rect x="29" y="9" width="49" height="1" fill="#fc481e"/> - <rect x="29" y="10" width="49" height="1" fill="#fc371d"/> - <rect x="29" y="11" width="49" height="1" fill="#fc291c"/> - <rect x="29" y="12" width="49" height="1" fill="#fc1c1c"/> - <g fill="#fff"> - <path d="m34 5h1v5h-1z"/> - <path d="m37 5h1v1h1v1h1v1h1v-3h1v5h-1v-1h-1v-1h-1v-1h-1v3h-1z"/> - <path d="m44 5v5h3v-1h-2v-3h2v-1h-3zm3 1v3h1v-3h-1z"/> - <path d="m50 5h1v5h-1z"/> - <path d="m53 5h3v1h-2v1h2v1h-2v1h2v1h-3z"/> - <path d="m58 5h1v4h1v-3h1v3h1v-4h1v4h-1v1h-1v-1h-1v1h-1v-1h-1z"/> - <path d="m65 5h3v1h-2v1h2v1h-2v1h2v1h-3z"/> - <path d="m70 5v5h3v-1h-2v-1h2v-1h-2v-1h2v-1h-3zm3 1v1h1v-1h-1zm0 2v1h1v-1h-1z"/> - </g> - </symbol> - <symbol id="button-webmention" viewBox="0 0 80 15"> - <rect width="80" height="15" fill="#666"/> - <rect x="1" y="1" width="78" height="13" fill="#fff" style="paint-order:markers fill stroke"/> - <path d="m13 1v1h-1v1h-1v1h1 1v1h-1v2h-1v2h-1v-3h-1v-2h-1v2h-1v3h-1v-2h-1v-3h-1v-2h-1-1v2h1v3h1v3h1v3h1 1v-3h1v-2h1v2h1v3h1 1v-3h1v-3h1v-3h1 1v-1h-1v-1h-1v-1h-1z" fill="#610371"/> - <rect x="19" y="2" width="59" height="11" fill="#850e9a"/> - <g fill="#fff"> - <path d="m33 5v5h3v-1h-2v-1h2v-1h-2v-1h2v-1h-3zm3 1v1h1v-1h-1zm0 2v1h1v-1h-1z"/> - <path d="m28 5h3v1h-2v1h2v1h-2v1h2v1h-3z"/> - <path d="m21 5h1v4h1v-3h1v3h1v-4h1v4h-1v1h-1v-1h-1v1h-1v-1h-1z"/> - <path d="m39 5h1v1h1v1h1v-1h1v-1h1v5h-1v-3h-1v1h-1v-1h-1v3h-1z"/> - <path d="m51 5h1v1h1v1h1v1h1v-3h1v5h-1v-1h-1v-1h-1v-1h-1v3h-1z"/> - <path d="m58 5h3v1h-1v4h-1v-4h-1"/> - <path d="m63 5h1v5h-1z"/> - <path d="m67 5v1h2v-1zm2 1v3h1v-3zm0 3h-2v1h2zm-2 0v-3h-1v3z"/> - <path d="m71 5h1v1h1v1h1v1h1v-3h1v5h-1v-1h-1v-1h-1v-1h-1v3h-1z"/> - <path d="m46 5h3v1h-2v1h2v1h-2v1h2v1h-3z"/> - </g> - </symbol> - <symbol id="button-microformats" viewBox="0 0 80 15"> - <rect width="80" height="15" fill="#666"/> - <rect x="1" y="1" width="78" height="13" fill="#fff"/> - <rect x="18" y="2" width="2" height="11" fill="#5d8f17"/> - <rect x="20" y="2" width="2" height="11" fill="#609218"/> - <rect x="22" y="2" width="2" height="11" fill="#639519"/> - <rect x="24" y="2" width="2" height="11" fill="#66981a"/> - <rect x="26" y="2" width="2" height="11" fill="#699b1b"/> - <rect x="28" y="2" width="2" height="11" fill="#6c9e1b"/> - <rect x="30" y="2" width="2" height="11" fill="#6fa11c"/> - <rect x="32" y="2" width="2" height="11" fill="#72a51d"/> - <rect x="34" y="2" width="2" height="11" fill="#76a81e"/> - <rect x="36" y="2" width="2" height="11" fill="#78aa1f"/> - <rect x="38" y="2" width="2" height="11" fill="#7cae20"/> - <rect x="40" y="2" width="2" height="11" fill="#7eb120"/> - <rect x="42" y="2" width="2" height="11" fill="#82b421"/> - <rect x="44" y="2" width="2" height="11" fill="#85b722"/> - <rect x="46" y="2" width="2" height="11" fill="#88ba23"/> - <rect x="48" y="2" width="2" height="11" fill="#8bbd24"/> - <rect x="50" y="2" width="2" height="11" fill="#8ec125"/> - <rect x="52" y="2" width="2" height="11" fill="#91c325"/> - <rect x="54" y="2" width="2" height="11" fill="#94c626"/> - <rect x="56" y="2" width="2" height="11" fill="#97ca27"/> - <rect x="58" y="2" width="2" height="11" fill="#9acd28"/> - <rect x="60" y="2" width="2" height="11" fill="#9dd029"/> - <rect x="62" y="2" width="2" height="11" fill="#a0d32a"/> - <rect x="64" y="2" width="2" height="11" fill="#a4d62b"/> - <rect x="66" y="2" width="2" height="11" fill="#a6d92b"/> - <rect x="68" y="2" width="2" height="11" fill="#a8db2c"/> - <rect x="70" y="2" width="2" height="11" fill="#acdf2d"/> - <rect x="72" y="2" width="2" height="11" fill="#b0e32e"/> - <rect x="74" y="2" width="2" height="11" fill="#b3e62f"/> - <rect x="76" y="2" width="2" height="11" fill="#b6e92f"/> - <polygon points="4 4 6 4 6 9 7 9 7 10 12 10 12 12 11 12 11 13 4 13 4 12 3 12 3 5 4 5" fill="#5c8d17"/> - <polygon points="7 3 9 3 9 6 10 6 10 7 13 7 13 9 8 9 8 8 7 8" fill="#8dc024"/> - <polygon points="10 2 13 2 13 3 14 3 14 6 11 6 11 5 10 5" fill="#a5d82b"/> - <g fill="#fff"> - <path d="m20 5h1v1h1v1h1v-1h1v-1h1v5h-1v-3h-1v1h-1v-1h-1v3h-1z"/> - <path d="m26 5h1v5h-1z"/> - <path d="m29 5h2v1h1v1h-1v-1h-2v3h2v-1h1v1h-1v1h-2v-1h-1v-3h1z"/> - <path d="m33 5v5h1v-2h1v1h1v-2h-2v-1h2v-1h-3zm3 1v1h1v-1h-1zm0 3v1h1v-1h-1z"/> - <path d="m39 5v1h2v-1h-2zm2 1v1 1 1h1v-1-1-1h-1zm0 3h-2v1h2v-1zm-2 0v-3h-1v3h1z"/> - <path d="m43 5h3v1h-2v1h2v1h-2v2h-1z"/> - <path d="m48 5v1h2v-1h-2zm2 1v1 1 1h1v-1-1-1h-1zm0 3h-2v1h2v-1zm-2 0v-3h-1v3h1z"/> - <path d="m52 5v5h1v-2h1v1h1v-2h-2v-1h2v-1h-3zm3 1v1h1v-1h-1zm0 3v1h1v-1h-1z"/> - <path d="m57 5h1v1h1v1h1v-1h1v-1h1v5h-1v-3h-1v1h-1v-1h-1v3h-1z"/> - <path d="m64 5v1h2v-1h-2zm2 1v1h-2v-1h-1v4h1v-2h2v2h1v-4h-1z"/> - <path d="m68 5h3v1h-1v4h-1v-4h-1"/> - <path d="m73 5h3v1h-3v1h2v1h1v1h-1v1h-3v-1h3v-1h-2v-1h-1v-1h1"/> - </g> - </symbol> - <symbol id="button-cc" viewBox="0 0 80 15"> - <rect y="0" width="80" height="15" fill="#000"/> - <rect x="1" y="1" width="78" height="13" fill="#fff"/> - <rect x="2" y="2" width="76" height="11" fill="#000"/> - <g fill="#fff"> - <path d="m42 5h1v1h1v1h1v-1h1v-1h1v5h-1v-3h-1v1h-1v-1h-1v3h-1z"/> - <path d="m31 5h2v1h1v1h-1v-1h-2v3h2v-1h1v1h-1v1h-2v-1h-1v-3h1z"/> - <path d="m37 5v1h2v-1zm2 1v3h1v-3zm0 3h-2v1h2zm-2 0v-3h-1v3z"/> - <path d="m57 5v1h2v-1zm2 1v3h1v-3zm0 3h-2v1h2zm-2 0v-3h-1v3z"/> - <path d="m49 5h1v1h1v1h1v-1h1v-1h1v5h-1v-3h-1v1h-1v-1h-1v3h-1z"/> - <path d="m70 5h3v1h-3v1h2v1h1v1h-1v1h-3v-1h3v-1h-2v-1h-1v-1h1"/> - <path d="m62 5h1v1h1v1h1v1h1v-3h1v5h-1v-1h-1v-1h-1v-1h-1v3h-1z"/> - </g> - <path d="m2 2v11h19.891a8.5136 8.5 0 0 0 2.1088-5.5898 8.5136 8.5 0 0 0-1.9563-5.4102h-13.119z" fill="#aaa"/> - <path d="m6.0195 2a8.5 8.5 0 0 0-2.0195 5.5 8.5 8.5 0 0 0 2.0312 5.5h12.949a8.5 8.5 0 0 0 2.0195-5.5 8.5 8.5 0 0 0-2.0312-5.5z" fill="#000"/> - <circle cx="12.5" cy="7.5" r="6.5" fill="#fff"/> - <path d="m9 5h2v1h1v1h-1v-1h-2v3h2v-1h1v1h-1v1h-2v-1h-1v-3h1z" fill="#000"/> - <path d="m14 5h2v1h1v1h-1v-1h-2v3h2v-1h1v1h-1v1h-2v-1h-1v-3h1z" fill="#000"/> - </symbol> - <symbol id="button-nojs" viewBox="0 0 80 15"> - <rect width="80" height="15" fill="#666"/> - <rect x="1" y="1" width="78" height="13" fill="#fff"/> - <rect x="16" y="2" width="62" height="11" fill="#666"/> - <g fill="#fff"> - <path d="m27 5v1h2v-1zm2 1v3h1v-3zm0 3h-2v1h2zm-2 0v-3h-1v3z"/> - <path d="m20 5h1v1h1v1h1v1h1v-3h1v5h-1v-1h-1v-1h-1v-1h-1v3h-1z"/> - <rect x="-1" y="259.03" width="78" height="13"/> - <path d="m70 5v5h3v-1h-2v-3h2v-1zm3 1v3h1v-3z"/> - <path d="m66 5h3v1h-2v1h2v1h-2v1h2v1h-3z"/> - <circle cx="7.5" cy="7.5" r="5.5" stroke="#666"/> - </g> - <g fill="#666"> - <rect transform="rotate(-45)" x="-6" y="10" width="11" height="1"/> - <path d="m9 5h3v1h-3v1h2v1h1v1h-1v1h-3v-1h3v-1h-2v-1h-1v-1h1"/> - <path d="m6 5v4h1v-4zm0 4h-2v1h2zm-2 0v-1h-1v1z"/> - </g> - <g fill="#fff"> - <path d="m40 5h3v1h-3v1h2v1h1v1h-1v1h-3v-1h3v-1h-2v-1h-1v-1h1"/> - <path d="m37 5v4h1v-4zm0 4h-2v1h2zm-2 0v-1h-1v1z"/> - <path d="m57 5h3v1h-2v1h2v1h-2v1h2v1h-3z"/> - <path d="m61 5v5h3v-1h-2v-3h2v-1zm3 1v3h1v-3z"/> - <path d="m53 5h3v1h-2v1h2v1h-2v1h2v1h-3z"/> - <path d="m47 5h1v1h1v1h1v1h1v-3h1v5h-1v-1h-1v-1h-1v-1h-1v3h-1z"/> - </g> - </symbol> -</svg> - - </body> -</html>
D
deploy/www/webhook.php
@@ -1,56 +0,0 @@
-<?php - -function _syslog($msg) { - $trace = debug_backtrace(); - $caller = $trace[1]; - $parent = $caller['function']; - if (isset($caller['class'])) - $parent = $caller['class'] . '::' . $parent; - - return error_log( "{$parent}: {$msg}" ); -} - -$raw = file_get_contents("php://input"); -try { - $payload = json_decode($raw, TRUE); -} -catch (Exception $e) { - header('HTTP/1.1 422 Unprocessable Entity'); - _syslog('[webhook] json_decode failed on:' . $raw); - die('Unprocessable Entity'); -} - -if(isset($payload['secret']) && $payload['secret'] == 'secret' ) { - $msg = sprintf(' -Type: %s -Source: %s -Target: %s -From: %s - -%s -', - $payload['post']['wm-property'], - $payload['source'], - $payload['target'], - $payload['post']['author']['name'], - $payload['post']['content']['text'] - ); - - _syslog('[webhook] accepted from webmention.io'); - mail("mail@petermolnar.net", "[webmention] {$payload['source']}", $msg); - header('HTTP/1.1 202 Accepted'); - exit(0); -} -elseif(isset($payload['secret']) && $payload['secret'] == '' ) { - $logfile = sprintf('%s/zapier.log', $_SERVER['HOME']); - $msg = sprintf("%s %s %s\n", $payload['source'], $payload['network'], $payload['url']); - file_put_contents($logfile, $msg, FILE_APPEND | LOCK_EX); - _syslog('[webhook] accepted from zapier'); - header('HTTP/1.1 202 Accepted'); - exit(0); -} - - -header('HTTP/1.1 400 Bad Request'); -_syslog('[webhook] bad request:' . $raw); -die('Bad Request');